代码拉取完成,页面将自动刷新
同步操作将从 src-openEuler/anaconda 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
From 1742188518c9af7e3cd060a26f3a3b1e4cb61e91 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <[email protected]>
Date: Fri, 3 Feb 2023 21:46:15 +0100
Subject: [PATCH] Sort RPM versions via rpm.labelCompare() and not via
packaging.version.LegacyVersion()
Packaging 22+ removed the long-deprecated packaging.version.LegacyVersion class.
The packaging.version library is intended to parse Python (PEP 440) versions,
not arbitrary versions and definitively not RPM versions.
Even if LegacyVersion was still available, it may produce incorrect results
if the version contains ~, ^ or other characters with special meaning in RPM.
This assumes the Python rpm module is always available.
If that assumption is wrong
the logic from rpm.labelCompare() needs to be reimplemented instead.
Reference:https://github.com/rhinstaller/anaconda/commit/1742188518c9af7e3cd060a26f3a3b1e4cb61e91
Conflict:NA
---
pyanaconda/core/payload.py | 5 +++++
pyanaconda/modules/payloads/base/utils.py | 13 ++-----------
pyanaconda/modules/storage/checker/utils.py | 4 ++--
3 files changed, 9 insertions(+), 13 deletions(-)
diff --git a/pyanaconda/core/payload.py b/pyanaconda/core/payload.py
index 17277b7..7817150 100644
--- a/pyanaconda/core/payload.py
+++ b/pyanaconda/core/payload.py
@@ -15,11 +15,16 @@
# License and may only be used or replicated with the express permission of
# Red Hat, Inc.
#
+from functools import cmp_to_key
from urllib.parse import quote, unquote
+import rpm
+
from pyanaconda.core.i18n import _
from pyanaconda.core.regexes import URL_PARSE
+rpm_version_key = cmp_to_key(rpm.labelCompare)
+
def parse_nfs_url(nfs_url):
"""Parse NFS URL into components.
diff --git a/pyanaconda/modules/payloads/base/utils.py b/pyanaconda/modules/payloads/base/utils.py
index 738ae66..5f19b57 100644
--- a/pyanaconda/modules/payloads/base/utils.py
+++ b/pyanaconda/modules/payloads/base/utils.py
@@ -17,13 +17,11 @@
# License and may only be used or replicated with the express permission of
# Red Hat, Inc.
#
-import functools
import os
import stat
-from packaging.version import LegacyVersion as parse_version
-
from pyanaconda.anaconda_loggers import get_module_logger
+from pyanaconda.core.payload import rpm_version_key
log = get_module_logger(__name__)
@@ -70,11 +68,4 @@ def get_dir_size(directory):
def sort_kernel_version_list(kernel_version_list):
"""Sort the given kernel version list."""
- kernel_version_list.sort(key=functools.cmp_to_key(_compare_versions))
-
-
-def _compare_versions(v1, v2):
- """Compare two version number strings."""
- first_version = parse_version(v1)
- second_version = parse_version(v2)
- return (first_version > second_version) - (first_version < second_version)
+ kernel_version_list.sort(key=rpm_version_key)
diff --git a/pyanaconda/modules/storage/checker/utils.py b/pyanaconda/modules/storage/checker/utils.py
index 180c351..9ccd398 100644
--- a/pyanaconda/modules/storage/checker/utils.py
+++ b/pyanaconda/modules/storage/checker/utils.py
@@ -20,7 +20,6 @@ gi.require_version("BlockDev", "2.0")
from gi.repository import BlockDev as blockdev
from collections import defaultdict
-from packaging.version import LegacyVersion as parse_version
from blivet import arch, util
from blivet.devicefactory import get_device_type
@@ -34,6 +33,7 @@ from pyanaconda.core.constants import productName, STORAGE_REFORMAT_BLOCKLIST, \
STORAGE_LUKS2_MIN_RAM, STORAGE_ROOT_DEVICE_TYPES, STORAGE_REQ_PARTITION_SIZES, \
STORAGE_MUST_NOT_BE_ON_ROOT
from pyanaconda.core.i18n import _
+from pyanaconda.core.payload import rpm_version_key
from pyanaconda.core.storage import DEVICE_TEXT_MAP
from pyanaconda.modules.storage.platform import platform
@@ -259,7 +259,7 @@ def _check_opal_firmware_kernel_version(detected_version, required_version):
"""
try:
if detected_version and required_version:
- return parse_version(detected_version) >= parse_version(required_version)
+ return rpm_version_key(detected_version) >= rpm_version_key(required_version)
except Exception as e: # pylint: disable=broad-except
log.warning("Couldn't check the firmware kernel version: %s", str(e))
--
2.23.0
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。