From: Oliver Kurth Date: Fri, 15 Sep 2017 18:23:33 +0000 (-0700) Subject: Make CAF consume the same version of GLIB (and dependencies) used by Tools. X-Git-Tag: stable-10.2.0~275 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=861ad9d03153c9428f21b8a8af9762230ade2ca3;p=thirdparty%2Fopen-vm-tools.git Make CAF consume the same version of GLIB (and dependencies) used by Tools. Summary of changes- 1. Linux: Make the following libraries point to their Tools counterparts by updating the LD_LIBRARY path in CAF makefile: -libglib-2.0.so.0 -libiconv.so.2 -libpcre.so.1 -libz.so.1 -libffi.so.6 -libgthread-2.0.so.0 -libstdc++.so.6 -libgcc_s.so.1 2. Linux: Add a new environmental variable INSTALL_MODE = tools/standalone in makefile, setting it to "tools" by default, to handle copying of the required GLIB (and dependencies) for CAF "standalone" installation. 3. Linux: Update setupCafConfig function to add the INSTALL_MODE property if not present already to handle build2build upgrade case. --- diff --git a/open-vm-tools/common-agent/etc/config/cafenv-appconfig b/open-vm-tools/common-agent/etc/config/cafenv-appconfig index 91e8e2af5..0071c92ff 100644 --- a/open-vm-tools/common-agent/etc/config/cafenv-appconfig +++ b/open-vm-tools/common-agent/etc/config/cafenv-appconfig @@ -37,3 +37,7 @@ providers_dir=@providersDir@ # Substitute @toolsLibDir@ for the value passed in during install # Maps to 'lib' in the build output tools_lib_dir=@toolsLibDir@ + +# Substitute @cafInstallMode@ for the value passed in during install +# No mapping in the build output since it is just a reference value +install_mode=@cafInstallMode@ diff --git a/open-vm-tools/common-agent/etc/install/caf-dbg.sh b/open-vm-tools/common-agent/etc/install/caf-dbg.sh index 070973f3b..7d98de2c1 100644 --- a/open-vm-tools/common-agent/etc/install/caf-dbg.sh +++ b/open-vm-tools/common-agent/etc/install/caf-dbg.sh @@ -198,20 +198,22 @@ function checkFileExistsLib() { checkFileExists "$CAF_LIB_DIR/libVgAuthIntegrationSubsys.so" checkFileExists "$CAF_LIB_DIR/libcom_err.so.3" checkFileExists "$CAF_LIB_DIR/libcrypto.so.1.0.2" - checkFileExists "$CAF_LIB_DIR/libgcc_s.so.1" - checkFileExists "$CAF_LIB_DIR/libglib-2.0.so.0.4800.1" - checkFileExists "$CAF_LIB_DIR/libgthread-2.0.so.0.4800.1" + if [ "$CAF_INSTALL_MODE" = "standalone" ]; then + checkFileExists "$CAF_LIB_DIR/libgcc_s.so.1" + checkFileExists "$CAF_LIB_DIR/libglib-2.0.so.0.4800.1" + checkFileExists "$CAF_LIB_DIR/libgthread-2.0.so.0.4800.1" + checkFileExists "$CAF_LIB_DIR/libstdc++.so.6.0.13" + checkFileExists "$CAF_LIB_DIR/libpcre.so.1.2.6" + checkFileExists "$CAF_LIB_DIR/libiconv.so.2.5.1" + checkFileExists "$CAF_LIB_DIR/libz.so.1.2.8" + checkFileExists "$CAF_LIB_DIR/libffi.so.6.0.4" + fi checkFileExists "$CAF_LIB_DIR/liblog4cpp.so.5.0.6" checkFileExists "$CAF_LIB_DIR/librabbitmq.so.4.2.1" checkFileExists "$CAF_LIB_DIR/libssl.so.1.0.2" - checkFileExists "$CAF_LIB_DIR/libstdc++.so.6.0.13" checkFileExists "$CAF_LIB_DIR/libvgauth.so" checkFileExists "$CAF_LIB_DIR/libxerces-c-3.1.so" checkFileExists "$CAF_LIB_DIR/libxml-security-c.so.16" - checkFileExists "$CAF_LIB_DIR/libpcre.so.1.2.6" - checkFileExists "$CAF_LIB_DIR/libiconv.so.2.5.1" - checkFileExists "$CAF_LIB_DIR/libz.so.1.2.8" - checkFileExists "$CAF_LIB_DIR/libffi.so.6.0.4" } function checkFileExistsConfig() { @@ -388,8 +390,10 @@ function checkFileExistsLib() { checkFileExists "$CAF_LIB_DIR/libManagementAgentHost.so" checkFileExists "$CAF_LIB_DIR/liblog4cpp.so.5.0.6" checkFileExists "$CAF_LIB_DIR/librabbitmq.so.4.2.1" - checkFileExists "$CAF_LIB_DIR/libgthread-2.0.so.0.4800.1" - checkFileExists "$CAF_LIB_DIR/libglib-2.0.so.0.4800.1" + if [ "$CAF_INSTALL_MODE" = "standalone" ]; then + checkFileExists "$CAF_LIB_DIR/libgthread-2.0.so.0.4800.1" + checkFileExists "$CAF_LIB_DIR/libglib-2.0.so.0.4800.1" + fi fi } diff --git a/open-vm-tools/common-agent/etc/install/install.sh b/open-vm-tools/common-agent/etc/install/install.sh index e24c701ba..41388f1c6 100644 --- a/open-vm-tools/common-agent/etc/install/install.sh +++ b/open-vm-tools/common-agent/etc/install/install.sh @@ -26,6 +26,7 @@ baseOutputDir='/var/lib' brokerAddr='#brokerAddr#' linkSo='yes' toolsLibDir='/usr/lib/vmware-tools/lib' # lib is symlink to either lib64 or lib32 +cafInstallMode='standalone' #Help function HELP() { @@ -49,6 +50,7 @@ setupCafConfig() { local pattern="$1" local value="$2" local rconfigDir="$3" + local key="$4" ## Add the key if not exists if [ ! -n "$pattern" ]; then echo 'The pattern cannot be empty!' @@ -59,7 +61,10 @@ setupCafConfig() { echo "The config file must exist! - $rconfigDir/cafenv-appconfig" exit 1 fi - + if [ -n "$key" -a `grep -c -E "^$key=" "$rconfigDir/cafenv-appconfig"` -eq 0 ]; then + echo >> "$rconfigDir" + echo "$key=$value" >> "$rconfigDir/cafenv-appconfig" + fi sed -i "s?$pattern?$value?g" "$rconfigDir/cafenv-appconfig" fi } @@ -86,6 +91,7 @@ while getopts ":b:i:l:B:o:t:hL" opt; do ;; t) toolsLibDir="$OPTARG" + cafInstallMode='tools' ;; L) linkSo='no' @@ -132,7 +138,8 @@ setupCafConfig '@outputDir@' "$outputDir" "$configDir" setupCafConfig '@providersDir@' "$providersDir" "$configDir" setupCafConfig '@invokersDir@' "$invokersDir" "$configDir" setupCafConfig '@logDir@' "$logDir" "$configDir" -setupCafConfig '@toolsLibDir@' "$toolsLibDir" "$configDir" +setupCafConfig '@toolsLibDir@' "$toolsLibDir" "$configDir" 'tools_lib_dir' +setupCafConfig '@cafInstallMode@' "$cafInstallMode" "$configDir" 'install_mode' #Set default permissions if [ -d "$libDir" ]; then @@ -167,25 +174,28 @@ if [ -d "$scriptDir" ]; then chmod 555 "$scriptDir"/* fi -#Set up links + +#Set up links only in case of CAF Standalone mode if [ "$linkSo" != "no" ] ; then cd "$libDir" - ln -sf libglib-2.0.so.0.4800.1 libglib-2.0.so - ln -sf libglib-2.0.so.0.4800.1 libglib-2.0.so.0 - ln -sf libgthread-2.0.so.0.4800.1 libgthread-2.0.so - ln -sf libgthread-2.0.so.0.4800.1 libgthread-2.0.so.0 + if [ "$cafInstallMode" = "standalone" ]; then + ln -sf libglib-2.0.so.0.4800.1 libglib-2.0.so + ln -sf libglib-2.0.so.0.4800.1 libglib-2.0.so.0 + ln -sf libgthread-2.0.so.0.4800.1 libgthread-2.0.so + ln -sf libgthread-2.0.so.0.4800.1 libgthread-2.0.so.0 + ln -sf libpcre.so.1.2.6 libpcre.so + ln -sf libpcre.so.1.2.6 libpcre.so.1 + ln -sf libiconv.so.2.5.1 libiconv.so + ln -sf libiconv.so.2.5.1 libiconv.so.2 + ln -sf libz.so.1.2.8 libz.so + ln -sf libz.so.1.2.8 libz.so.1 + ln -sf libffi.so.6.0.4 libffi.so + ln -sf libffi.so.6.0.4 libffi.so.6 + fi ln -sf liblog4cpp.so.5.0.6 liblog4cpp.so ln -sf liblog4cpp.so.5.0.6 liblog4cpp.so.5 ln -sf librabbitmq.so.4.2.1 librabbitmq.so ln -sf librabbitmq.so.4.2.1 librabbitmq.so.4 - ln -sf libpcre.so.1.2.6 libpcre.so - ln -sf libpcre.so.1.2.6 libpcre.so.1 - ln -sf libiconv.so.2.5.1 libiconv.so - ln -sf libiconv.so.2.5.1 libiconv.so.2 - ln -sf libz.so.1.2.8 libz.so - ln -sf libz.so.1.2.8 libz.so.1 - ln -sf libffi.so.6.0.4 libffi.so - ln -sf libffi.so.6.0.4 libffi.so.6 fi #Run provider install logic diff --git a/open-vm-tools/common-agent/etc/install/upgrade.sh b/open-vm-tools/common-agent/etc/install/upgrade.sh index d22783abe..ffbee3204 100644 --- a/open-vm-tools/common-agent/etc/install/upgrade.sh +++ b/open-vm-tools/common-agent/etc/install/upgrade.sh @@ -7,7 +7,7 @@ installDir=$(dirname $(readlink -f $0)) scriptsDir=$installDir/../scripts configDir=$installDir/../config toolsLibDir='/usr/lib/vmware-tools/lib' # lib is symlink to either lib64 or lib32 - +cafInstallMode='standalone' #Help function HELP() { @@ -28,6 +28,7 @@ while getopts ":t:h" opt; do case $opt in t) toolsLibDir="$OPTARG" + cafInstallMode='tools' ;; h) HELP @@ -84,19 +85,21 @@ if [ ! -d $CAF_LIB_DIR ]; then fi cd $CAF_LIB_DIR -ln -sf libglib-2.0.so.0.4800.1 libglib-2.0.so -ln -sf libglib-2.0.so.0.4800.1 libglib-2.0.so.0 -ln -sf libgthread-2.0.so.0.4800.1 libgthread-2.0.so -ln -sf libgthread-2.0.so.0.4800.1 libgthread-2.0.so.0 +if [ "$cafInstallMode" = "standalone" ]; then + ln -sf libglib-2.0.so.0.4800.1 libglib-2.0.so + ln -sf libglib-2.0.so.0.4800.1 libglib-2.0.so.0 + ln -sf libgthread-2.0.so.0.4800.1 libgthread-2.0.so + ln -sf libgthread-2.0.so.0.4800.1 libgthread-2.0.so.0 + ln -sf libpcre.so.1.2.6 libpcre.so + ln -sf libpcre.so.1.2.6 libpcre.so.1 + ln -sf libiconv.so.2.5.1 libiconv.so + ln -sf libiconv.so.2.5.1 libiconv.so.2 + ln -sf libz.so.1.2.8 libz.so + ln -sf libz.so.1.2.8 libz.so.1 + ln -sf libffi.so.6.0.4 libffi.so + ln -sf libffi.so.6.0.4 libffi.so.6 +fi ln -sf liblog4cpp.so.5.0.6 liblog4cpp.so ln -sf liblog4cpp.so.5.0.6 liblog4cpp.so.5 ln -sf librabbitmq.so.4.2.1 librabbitmq.so ln -sf librabbitmq.so.4.2.1 librabbitmq.so.4 -ln -sf libpcre.so.1.2.6 libpcre.so -ln -sf libpcre.so.1.2.6 libpcre.so.1 -ln -sf libiconv.so.2.5.1 libiconv.so -ln -sf libiconv.so.2.5.1 libiconv.so.2 -ln -sf libz.so.1.2.8 libz.so -ln -sf libz.so.1.2.8 libz.so.1 -ln -sf libffi.so.6.0.4 libffi.so -ln -sf libffi.so.6.0.4 libffi.so.6 diff --git a/open-vm-tools/common-agent/etc/scripts/caf-common b/open-vm-tools/common-agent/etc/scripts/caf-common index 2b18196d5..00fd834a2 100644 --- a/open-vm-tools/common-agent/etc/scripts/caf-common +++ b/open-vm-tools/common-agent/etc/scripts/caf-common @@ -13,7 +13,11 @@ sourceCafenv() { cat "$cafenvAppconfig" | sed 's/^\[/#[/g' | sed 's/^\([a-z].*=\)/export CAF_\U\1/g' > "$tmpCafenv" sed -i 's/[ ]*=[ ]*/=/g' "$tmpCafenv" . "$tmpCafenv" - export LD_LIBRARY_PATH="$CAF_TOOLS_LIB_DIR/libvgauth.so/:$CAF_TOOLS_LIB_DIR/libcrypto.so.1.0.2/:$CAF_TOOLS_LIB_DIR/libssl.so.1.0.2/:$CAF_LIB_DIR" + if [ "$CAF_INSTALL_MODE" = "standalone" ]; then + export LD_LIBRARY_PATH=$CAF_LIB_DIR + else + export LD_LIBRARY_PATH="$CAF_TOOLS_LIB_DIR/libvgauth.so/:$CAF_TOOLS_LIB_DIR/libcrypto.so.1.0.2/:$CAF_TOOLS_LIB_DIR/libssl.so.1.0.2/:$CAF_TOOLS_LIB_DIR/libz.so.1/:$CAF_TOOLS_LIB_DIR/libffi.so.6/:$CAF_TOOLS_LIB_DIR/libiconv.so.2/:$CAF_TOOLS_LIB_DIR/libpcre.so.1/:$CAF_TOOLS_LIB_DIR/libglib-2.0.so.0/:$CAF_TOOLS_LIB_DIR/libgcc_s.so.1/:$CAF_TOOLS_LIB_DIR/libgthread-2.0.so.0/:$CAF_TOOLS_LIB_DIR/libstdc++.so.6/:$CAF_LIB_DIR" + fi export VMWARE_USE_SYSTEM_LIBS=1 }