diff --git a/script/gs_check b/script/gs_check index 486a57d556f34be3399f147bdf3f218d9c953c11..25adb11c5df404c51df91563a94ab240111b12ce 100644 --- a/script/gs_check +++ b/script/gs_check @@ -27,15 +27,6 @@ import getpass import time import pwd import pickle -package_path = os.path.dirname(os.path.realpath(__file__)) -ld_path = package_path + "/gspylib/clib" -if 'LD_LIBRARY_PATH' not in os.environ: - os.environ['LD_LIBRARY_PATH'] = ld_path - os.execve(os.path.realpath(__file__), sys.argv, os.environ) -if not os.environ.get('LD_LIBRARY_PATH').startswith(ld_path): - os.environ['LD_LIBRARY_PATH'] = \ - ld_path + ":" + os.environ['LD_LIBRARY_PATH'] - os.execve(os.path.realpath(__file__), sys.argv, os.environ) import xml.etree.cElementTree as ETree from datetime import datetime, timedelta diff --git a/script/gs_dropnode b/script/gs_dropnode index fb915fb05dddf56a6b52f2a5352f53f1cff15b20..d2fe05196a7bea8f22a8008cd8497c4bfa3f20b7 100644 --- a/script/gs_dropnode +++ b/script/gs_dropnode @@ -26,16 +26,7 @@ import subprocess import sys import pwd import grp -package_path = os.path.dirname(os.path.realpath(__file__)) -ld_path = package_path + "/gspylib/clib" -if 'LD_LIBRARY_PATH' not in os.environ: - os.environ['LD_LIBRARY_PATH'] = ld_path - os.execve(os.path.realpath(__file__), sys.argv, os.environ) -if not os.environ.get('LD_LIBRARY_PATH').startswith(ld_path): - os.environ['LD_LIBRARY_PATH'] = \ - ld_path + ":" + os.environ['LD_LIBRARY_PATH'] - os.execve(os.path.realpath(__file__), sys.argv, os.environ) - + sys.path.append(sys.path[0]) from gspylib.common.DbClusterInfo import dbClusterInfo from gspylib.common.DbClusterStatus import DbClusterStatus diff --git a/script/gs_expansion b/script/gs_expansion index 1fe22d617d7f019aac8138758e20f9250e50a09a..12ceb32c19b0352a2545197b12bc725234993627 100644 --- a/script/gs_expansion +++ b/script/gs_expansion @@ -23,15 +23,6 @@ import os import sys import subprocess import socket -package_path = os.path.dirname(os.path.realpath(__file__)) -ld_path = package_path + "/gspylib/clib" -if 'LD_LIBRARY_PATH' not in os.environ: - os.environ['LD_LIBRARY_PATH'] = ld_path - os.execve(os.path.realpath(__file__), sys.argv, os.environ) -if not os.environ.get('LD_LIBRARY_PATH').startswith(ld_path): - os.environ['LD_LIBRARY_PATH'] = \ - ld_path + ":" + os.environ['LD_LIBRARY_PATH'] - os.execve(os.path.realpath(__file__), sys.argv, os.environ) sys.path.append(sys.path[0]) from gspylib.common.DbClusterInfo import dbClusterInfo, \ diff --git a/script/gs_install b/script/gs_install index e4ec0c82c86b75a567eb7fde9e9cff919ca7da0d..a7152cf67df6b948f8657230ab503013fb730ead 100644 --- a/script/gs_install +++ b/script/gs_install @@ -21,15 +21,6 @@ import os import sys -package_path = os.path.dirname(os.path.realpath(__file__)) -ld_path = package_path + "/gspylib/clib" -if 'LD_LIBRARY_PATH' not in os.environ: - os.environ['LD_LIBRARY_PATH'] = ld_path - os.execve(os.path.realpath(__file__), sys.argv, os.environ) -if not os.environ.get('LD_LIBRARY_PATH').startswith(ld_path): - os.environ['LD_LIBRARY_PATH'] = \ - ld_path + ":" + os.environ['LD_LIBRARY_PATH'] - os.execve(os.path.realpath(__file__), sys.argv, os.environ) sys.path.append(sys.path[0]) from gspylib.common.GaussLog import GaussLog diff --git a/script/gs_postuninstall b/script/gs_postuninstall index 0f1b6db95c51d5730feb01356c0c19838b061a2e..b72a39136faee312255877411c8a77bd85b81a39 100644 --- a/script/gs_postuninstall +++ b/script/gs_postuninstall @@ -25,17 +25,6 @@ import subprocess import grp import pwd -package_path = os.path.dirname(os.path.realpath(__file__)) -ld_path = package_path + "/gspylib/clib" -if 'LD_LIBRARY_PATH' not in os.environ: - os.environ['LD_LIBRARY_PATH'] = ld_path - os.execve(os.path.realpath(__file__), sys.argv, os.environ) -if not os.environ.get('LD_LIBRARY_PATH').startswith(ld_path): - os.environ['LD_LIBRARY_PATH'] = \ - ld_path + ":" + os.environ['LD_LIBRARY_PATH'] - os.execve(os.path.realpath(__file__), sys.argv, os.environ) - - from gspylib.common.GaussLog import GaussLog from gspylib.common.Common import DefaultValue from gspylib.common.ErrorCode import ErrorCode diff --git a/script/gs_preinstall b/script/gs_preinstall index 98512b2af3333af4256f39ff953968bf83a070c6..b49b7fab0991a5096cd74ab86264d3ec1bcdf424 100644 --- a/script/gs_preinstall +++ b/script/gs_preinstall @@ -425,26 +425,6 @@ General options: # skip OS check self.checkskipOS() - # set LD_LIBRARY_PATH add local lib - def setLibPath(self): - package_path = os.path.dirname(os.path.realpath(__file__)) - ld_path = package_path + "/gspylib/clib" - rerun = True - - if 'LD_LIBRARY_PATH' not in os.environ: - os.environ['LD_LIBRARY_PATH'] = ld_path - elif not os.environ.get('LD_LIBRARY_PATH').startswith(ld_path): - os.environ['LD_LIBRARY_PATH'] = \ - ld_path + ":" + os.environ['LD_LIBRARY_PATH'] - else: - rerun = False - - if rerun: - try: - os.execve(os.path.realpath(__file__), sys.argv, os.environ) - except Exception as e: - GaussLog.exitWithError(str(e)) - # decompress version.cfg from bz2 def decompressVersioncfg(self): bin_cmd = 'tar -xpf `head -1 version.cfg`*.tar.bz2 ./version.cfg' @@ -625,8 +605,6 @@ if __name__ == '__main__': try: # Objectize class preinstall = Preinstall() - # set LD_LIBRARY_PATH - preinstall.setLibPath() # parse cmd lines preinstall.parseCommandLine() # check parameters diff --git a/script/gs_ssh b/script/gs_ssh index b8d01aa9bca5e5f7d5c3e9b651c3d3680ae22d31..41ee6e455e0711c803d5232a34f1aa7b99657542 100644 --- a/script/gs_ssh +++ b/script/gs_ssh @@ -21,16 +21,6 @@ import os import sys import socket -from unittest import expectedFailure -package_path = os.path.dirname(os.path.realpath(__file__)) -ld_path = package_path + "/gspylib/clib" -if 'LD_LIBRARY_PATH' not in os.environ: - os.environ['LD_LIBRARY_PATH'] = ld_path - os.execve(os.path.realpath(__file__), sys.argv, os.environ) -if not os.environ.get('LD_LIBRARY_PATH').startswith(ld_path): - os.environ['LD_LIBRARY_PATH'] = \ - ld_path + ":" + os.environ['LD_LIBRARY_PATH'] - os.execve(os.path.realpath(__file__), sys.argv, os.environ) from gspylib.common.GaussLog import GaussLog from gspylib.common.Common import DefaultValue diff --git a/script/gs_sshexkey b/script/gs_sshexkey index d6ee117b1079aa40021e2a416e517cb20711d7ee..365b1ae3705613a8baf2453bbe4cc24622ff0dd6 100644 --- a/script/gs_sshexkey +++ b/script/gs_sshexkey @@ -55,22 +55,7 @@ DefaultValue.doConfigForParamiko() try: import paramiko except ImportError as ex: - try: - local_path = os.path.dirname(os.path.realpath(__file__)) - clib_path = os.path.realpath(os.path.join(local_path, "gspylib/clib/")) - ld_path = os.getenv("LD_LIBRARY_PATH") - if not ld_path or not ld_path.startswith(clib_path): - if not ld_path: - os.environ['LD_LIBRARY_PATH'] = clib_path - else: - os.environ['LD_LIBRARY_PATH'] = clib_path + ":" + ld_path - try: - os.execl(sys.executable, sys.executable, *sys.argv) - except Exception as ex: - sys.exit("Failed to set the enviroment variable: %s" % str(ex)) - import paramiko - except ImportError as ex: - raise Exception(ErrorCode.GAUSS_522["GAUSS_52200"] % str(ex)) + raise Exception(ErrorCode.GAUSS_522["GAUSS_52200"] % str(ex)) from gspylib.threads.SshTool import SshTool HOSTS_MAPPING_FLAG = "#Gauss OM IP Hosts Mapping" diff --git a/script/gspylib/__init__.py b/script/gspylib/__init__.py index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..04b1b5a7bf0d08a274cf000fd64367f8b4cb1c41 100644 --- a/script/gspylib/__init__.py +++ b/script/gspylib/__init__.py @@ -0,0 +1,33 @@ +# coding: utf-8 + +import os +import sys + + +ENV_LD_LIBRARY_PATH = 'LD_LIBRARY_PATH' + + +def ensure_ld_library_path(): + gspylib_dir = os.path.dirname(os.path.realpath(__file__)) + clib_path = os.path.join(gspylib_dir, 'clib') + if ENV_LD_LIBRARY_PATH in os.environ and \ + os.environ[ENV_LD_LIBRARY_PATH].startswith(clib_path): + return + + raw_value = os.environ.get(ENV_LD_LIBRARY_PATH, "") + libs = [clib_path] + if 'GAUSSHOME' in os.environ: + libs.append(os.path.join(os.environ['GAUSSHOME'], 'lib')) + if raw_value: + libs.append(raw_value) + ld_path = ":".join(libs) + os.environ['LD_LIBRARY_PATH'] = ld_path + try: + os.execv(sys.argv[0], sys.argv) + except Exception as exc: + print('failed re-exec:', exc) + sys.exit(1) + + +# auto invoked while gspylib imported +ensure_ld_library_path() diff --git a/script/gspylib/threads/SshTool.py b/script/gspylib/threads/SshTool.py index f3cc4b0d7f7567bcfdba1ee8c9a7d6ebc9968e8c..34f8149d6c27aec55a8f203724251fc1153095e4 100644 --- a/script/gspylib/threads/SshTool.py +++ b/script/gspylib/threads/SshTool.py @@ -41,23 +41,7 @@ from gspylib.common.Constants import Constants try: import paramiko except ImportError as ex: - print(ex) - try: - local_path = os.path.dirname(os.path.realpath(__file__)) - clib_path = os.path.realpath(os.path.join(local_path, "../../gspylib/clib/")) - ld_path = os.getenv("LD_LIBRARY_PATH") - if not ld_path or not ld_path.startswith(clib_path): - if not ld_path: - os.environ['LD_LIBRARY_PATH'] = clib_path - else: - os.environ['LD_LIBRARY_PATH'] = clib_path + ":" + ld_path - try: - os.execl(sys.executable, sys.executable, *sys.argv) - except Exception as ex: - sys.exit("Failed to set the enviroment variable: %s" % str(ex)) - import paramiko - except ImportError as ex: - raise Exception(ErrorCode.GAUSS_522["GAUSS_52200"] % str(ex)) + raise Exception(ErrorCode.GAUSS_522["GAUSS_52200"] % str(ex)) class SshTool(): """ diff --git a/script/local/PreInstallUtility.py b/script/local/PreInstallUtility.py index 0e01146042c57f3c98609ab4e2140fbbe1a0886b..d3958fde4a5d8fe4978a72b2a9813d951012b6dd 100644 --- a/script/local/PreInstallUtility.py +++ b/script/local/PreInstallUtility.py @@ -1719,15 +1719,6 @@ Common options: self.logger.logExit(ErrorCode.GAUSS_502["GAUSS_50217"] % bz2FileName + " Error: \n%s" % output) - # load library path env - ld_path = os.path.join(libCgroupPath, "lib") - if 'LD_LIBRARY_PATH' not in os.environ: - os.environ['LD_LIBRARY_PATH'] = ld_path - os.execve(os.path.realpath(__file__), sys.argv, os.environ) - if not os.environ.get('LD_LIBRARY_PATH').startswith(ld_path): - os.environ['LD_LIBRARY_PATH'] = ld_path + ":" + os.environ['LD_LIBRARY_PATH'] - os.execve(os.path.realpath(__file__), sys.argv, os.environ) - def setCgroup(self): """ function: Setting Cgroup