From 3d0c21042808eda903270365aaf45446f81c30c8 Mon Sep 17 00:00:00 2001 From: yangchenguang Date: Thu, 13 Apr 2023 10:51:46 +0800 Subject: [PATCH] fix(*): the problem of using hplip in python3.9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复在线安装hp打印机驱动时报错 Signed-off-by: yangchenguang --- base/password.py | 15 +++++++++++++-- installer/core_install.py | 25 ++++++++++++++++++++++--- 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/base/password.py b/base/password.py index c634f88..61c5b7e 100644 --- a/base/password.py +++ b/base/password.py @@ -56,6 +56,7 @@ AUTH_TYPES = {'mepis': 'su', 'boss': 'su', 'lfs': 'su', 'manjarolinux': 'sudo', + 'kylinsec': 'su', } @@ -76,8 +77,18 @@ def showPasswordPrompt(prompt): def get_distro_name(): os_name = None try: - import platform - os_name = platform.dist()[0] + _release_filename = re.compile(r'(\w+)[-_](release|version)', re.ASCII) + supported_dists = ( + 'fedora', 'redhat', 'kylinsec', 'KylinSec' + ) + for file in os.listdir("/etc"): + m = _release_filename.match(file) + if m is not None: + _distname, dummy = m.groups() + if _distname in supported_dists: + os_name = _distname + break + except ImportError: os_name = None diff --git a/installer/core_install.py b/installer/core_install.py index 2b6046d..6b9a1ec 100644 --- a/installer/core_install.py +++ b/installer/core_install.py @@ -611,9 +611,28 @@ class CoreInstall(object): # Getting distro information using platform module try: - import platform - name = platform.dist()[0].lower() - ver = platform.dist()[1] + _release_filename = re.compile(r'(\w+)[-_](release|version)', re.ASCII) + _lsb_release_version = re.compile(r'(.+)' + r' release ' + r'([\d.]+)' + r'[^(]*(?:\((.+)\))?', re.ASCII) + supported_dists = ( + 'fedora', 'redhat', 'kylinsec', 'KylinSec', 'system' + ) + for file in os.listdir("/etc"): + m = _release_filename.match(file) + if m is not None: + _distname, dummy = m.groups() + if _distname in supported_dists: + name = _distname.lower() + break + + with open(os.path.join("/etc/", file), r, encoding='utf-8', errors='surrogateescape') as f: + firstline = r.readline() + n = _lsb_release_version.match(firstline) + if n is not None: + ver = tuple(n.group())[1] + if not name: found = False log.debug("Not able to detect distro") -- 2.33.0