From b12e3f033a5b1fc0d0eedf2c2c6a8e145030132b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=8F=B2?= Date: Mon, 18 Jul 2022 14:33:24 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=B8=8D=E5=90=8C=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E7=B3=BB=E7=BB=9F=E4=BD=BF=E7=94=A8=E4=B8=8D=E5=90=8C?= =?UTF-8?q?=E5=AE=89=E8=A3=85=E5=8C=85=E5=AE=89=E8=A3=85=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script/os_platform/common.py | 1 + script/os_platform/linux_platform.py | 186 +++++++++++++-------------- 2 files changed, 88 insertions(+), 99 deletions(-) diff --git a/script/os_platform/common.py b/script/os_platform/common.py index 3334b10..ec7850e 100644 --- a/script/os_platform/common.py +++ b/script/os_platform/common.py @@ -65,6 +65,7 @@ PAK_ASIANUX = "Asianux" PAK_UBUNTU = "Ubuntu" PAK_KYLIN = "Kylin" PAK_SUSE = "SUSE" +PAK_DEBIAN = "Debian" ####################################################### _supported_dists = ( diff --git a/script/os_platform/linux_platform.py b/script/os_platform/linux_platform.py index 97f7002..60696c2 100644 --- a/script/os_platform/linux_platform.py +++ b/script/os_platform/linux_platform.py @@ -25,7 +25,7 @@ from gspylib.common.ErrorCode import ErrorCode from os_platform.common import REDHAT, PAK_REDHAT, BIT_VERSION, \ CENTOS, PAK_EULER, PAK_CENTOS, ASIANUX, SUSE, PAK_ASIANUX, \ EULEROS, OPENEULER, KYLIN, PAK_OPENEULER, SUPPORT_WHOLE_PLATFORM_LIST,\ - BLANK_SPACE, PAK_UBUNTU, DEBIAN, PAK_KYLIN, PAK_SUSE + BLANK_SPACE, PAK_UBUNTU, DEBIAN, PAK_KYLIN, PAK_SUSE, PAK_DEBIAN from os_platform.linux_distro import LinuxDistro @@ -112,8 +112,8 @@ class LinuxPlatform(object): """ pass - @staticmethod - def get_euler_package_name(dir_path, perfix, postfix): + + def get_euler_package_name(self, dir_path, perfix, postfix): """ Get package name of Euler OS """ @@ -121,10 +121,17 @@ class LinuxPlatform(object): "%s-%s-%s" % (perfix, PAK_EULER, postfix)) if not os.path.isfile(file_name): file_name = os.path.join(dir_path, "./../../../", - "%s-%s-%s" % (perfix, PAK_REDHAT, postfix)) + "%s-%s-%s" % (perfix, PAK_CENTOS, postfix)) return file_name + def package_file_path(self, prefix_str, packageVersion, distro, postfix_str): + dir_name = os.path.dirname(os.path.realpath(__file__)) + return os.path.join(dir_name, "./../../", "%s-%s-%s-%s.%s" % ( + prefix_str, packageVersion, distro, + BIT_VERSION, postfix_str)) + + def getPackageFile(self, packageVersion, productVersion, fileType="tarFile"): """ function : Get the path of binary file version. @@ -148,107 +155,88 @@ class LinuxPlatform(object): # RHEL and CentOS have the same kernel version, # So RHEL cluster package can run directly on CentOS. - if distname in REDHAT: - file_name = os.path.join(dir_name, "./../../", - "%s-%s-%s-%s.%s" % ( - prefix_str, packageVersion, PAK_REDHAT, - BIT_VERSION, postfix_str)) - elif distname in CENTOS: - if os.path.isfile(os.path.join("/etc", "euleros-release")): - file_name = os.path.join(dir_name, "./../../", - "%s-%s-%s-%s.%s" % ( - prefix_str, packageVersion, - PAK_EULER, - BIT_VERSION, postfix_str)) - if not os.path.isfile(file_name): - file_name = os.path.join(dir_name, "./../../", - "%s-%s-%s-%s.%s" % ( - prefix_str, packageVersion, - PAK_CENTOS, BIT_VERSION, - postfix_str)) + # Installation packages vary with operating systems + + if distname == REDHAT: + file_name_list = [ + self.package_file_path(prefix_str, packageVersion, PAK_REDHAT, postfix_str), + self.package_file_path(prefix_str, packageVersion, PAK_CENTOS, postfix_str) + ] + if version[0] == "8": + file_name_list = [ + self.package_file_path(prefix_str, packageVersion, PAK_OPENEULER, postfix_str), + ] + + elif distname == EULEROS: + if idnum in ["SP2", "SP3", "SP5"]: + new_prefix_str = "%s-%s" % (prefix_str, packageVersion) + new_postfix_str = "%s.%s" % (BIT_VERSION, postfix_str) + file_name_list = [ + self.get_euler_package_name(dir_name, new_prefix_str, new_postfix_str), + self.package_file_path(prefix_str, packageVersion, PAK_CENTOS, postfix_str) + ] + elif idnum == "SP8": + file_name_list = [ + self.package_file_path(prefix_str, packageVersion, PAK_EULER, postfix_str) + ] else: - file_name = os.path.join(dir_name, "./../../", - "%s-%s-%s-%s.%s" % ( - prefix_str, packageVersion, - PAK_REDHAT, - BIT_VERSION, postfix_str)) - if not os.path.isfile(file_name): - file_name = os.path.join(dir_name, "./../../", - "%s-%s-%s-%s.%s" % ( - prefix_str, packageVersion, - PAK_CENTOS, - BIT_VERSION, postfix_str)) - elif distname in ASIANUX: - file_name = os.path.join(dir_name, "./../../", - "%s-%s-%s-%s.%s" % ( - prefix_str, packageVersion, PAK_ASIANUX, - BIT_VERSION, postfix_str)) - if not os.path.exists(os.path.normpath(file_name)): - file_name = os.path.join(dir_name, "./../../", - "%s-%s-%s-%s.%s" % ( - prefix_str, packageVersion, PAK_CENTOS, - BIT_VERSION, postfix_str)) + file_name_list = [ + self.package_file_path(prefix_str, packageVersion, PAK_EULER, postfix_str), + self.package_file_path(prefix_str, packageVersion, PAK_CENTOS, postfix_str) + ] + + elif distname == CENTOS: + if os.path.isfile(os.path.join("/etc", "euleros-release")): + file_name_list = [ + self.package_file_path(prefix_str, packageVersion, PAK_CENTOS, postfix_str), + self.package_file_path(prefix_str, packageVersion, PAK_EULER, postfix_str) + ] + elif version[0] == "8": + file_name_list = [ + self.package_file_path(prefix_str, packageVersion, PAK_OPENEULER, postfix_str), + ] + else: + file_name_list = [ + self.package_file_path(prefix_str, packageVersion, PAK_CENTOS, postfix_str) + ] + + elif distname == ASIANUX: + file_name_list = [ + self.package_file_path(prefix_str, packageVersion, PAK_ASIANUX, postfix_str), + self.package_file_path(prefix_str, packageVersion, PAK_CENTOS, postfix_str) + ] + elif distname == SUSE and version.split('.')[0] in ("11", "12"): - file_name = os.path.join(dir_name, "./../../", - "%s-%s-%s-%s.%s" % ( - prefix_str, packageVersion, PAK_CENTOS, - BIT_VERSION, postfix_str)) - if not os.path.isfile(file_name): - file_name = os.path.join(dir_name, "./../../", - "%s-%s-%s-%s.%s" % ( - prefix_str, packageVersion, PAK_SUSE, - BIT_VERSION, postfix_str)) - elif distname in EULEROS and (idnum in ["SP2", "SP3", "SP5"]): - new_prefix_str = "%s-%s" % (prefix_str, packageVersion) - new_postfix_str = "%s.%s" % (BIT_VERSION, postfix_str) - file_name = LinuxPlatform.get_euler_package_name(dir_name, - new_prefix_str, - new_postfix_str) - if not os.path.isfile(file_name): - file_name = os.path.join(dir_name, "./../../", - "%s-%s-%s-%s.%s" % ( - prefix_str, packageVersion, - PAK_REDHAT, - BIT_VERSION, postfix_str)) - elif distname in EULEROS and (idnum == "SP8"): - file_name = os.path.join(dir_name, "./../../", - "%s-%s-%s-%s.%s" % ( - prefix_str, packageVersion, PAK_EULER, - BIT_VERSION, postfix_str)) - elif distname in EULEROS: - file_name = os.path.join(dir_name, "./../../", - "%s-%s-%s-%s.%s" % ( - prefix_str, packageVersion, PAK_REDHAT, - BIT_VERSION, postfix_str)) - elif distname in OPENEULER or distname in KYLIN: - file_name = os.path.join(dir_name, "./../../", - "%s-%s-%s-%s.%s" % ( - prefix_str, packageVersion, - PAK_OPENEULER, - BIT_VERSION, postfix_str)) - if not os.path.isfile(file_name): - file_name = os.path.join(dir_name, "./../../", - "%s-%s-%s-%s.%s" % ( - prefix_str, packageVersion, - PAK_KYLIN, - BIT_VERSION, postfix_str)) - elif distname in DEBIAN and (version == "buster/sid"): - file_name = os.path.join(dir_name, "./../../", - "%s-%s-%s-%s.%s" % ( - prefix_str, packageVersion, - PAK_UBUNTU, - BIT_VERSION, postfix_str)) + file_name_list = [ + self.package_file_path(prefix_str, packageVersion, PAK_SUSE, postfix_str), + self.package_file_path(prefix_str, packageVersion, PAK_CENTOS, postfix_str) + ] + + elif distname == OPENEULER or distname == KYLIN: + file_name_list = [ + self.package_file_path(prefix_str, packageVersion, PAK_OPENEULER, postfix_str), + self.package_file_path(prefix_str, packageVersion, PAK_KYLIN, postfix_str) + ] + + elif distname == DEBIAN: + file_name_list = [ + self.package_file_path(prefix_str, packageVersion, PAK_DEBIAN, postfix_str), + self.package_file_path(prefix_str, packageVersion, PAK_OPENEULER, postfix_str) + ] + else: raise Exception(ErrorCode.GAUSS_519["GAUSS_51900"] + "Supported platforms are: %s." % str( SUPPORT_WHOLE_PLATFORM_LIST)) - - file_name = os.path.normpath(file_name) - if not os.path.exists(file_name): - raise Exception(ErrorCode.GAUSS_502["GAUSS_50201"] % file_name) - if not os.path.isfile(file_name): - raise Exception(ErrorCode.GAUSS_502["GAUSS_50210"] % file_name) - return file_name + + # Find the installation package that exists on the current node + package_name_list = [] + for file_name in file_name_list: + package_name = os.path.basename(file_name) + package_name_list.append(package_name) + if os.path.exists(file_name) and os.path.isfile(file_name): + return file_name + raise Exception(ErrorCode.GAUSS_502["GAUSS_50201"] % package_name_list) def getGrepCmd(self): """