diff --git a/contrib/ci/dependencies.xml b/contrib/ci/dependencies.xml index 69d8f783f..f8d8fbb00 100644 --- a/contrib/ci/dependencies.xml +++ b/contrib/ci/dependencies.xml @@ -1374,6 +1374,24 @@ + + + + + + + python-packaging + + + + + + + + + + + qemu-user diff --git a/contrib/qubes/src/qubes_fwupd_heads.py b/contrib/qubes/src/qubes_fwupd_heads.py index bae21a760..d551c73dc 100644 --- a/contrib/qubes/src/qubes_fwupd_heads.py +++ b/contrib/qubes/src/qubes_fwupd_heads.py @@ -11,7 +11,7 @@ import subprocess import os import shutil import xml.etree.ElementTree as ET -from distutils.version import LooseVersion as l_ver +from packaging.version import Version FWUPDTOOL = "/bin/fwupdtool" @@ -74,10 +74,10 @@ class FwupdHeads: return EXIT_CODES["NOTHING_TO_DO"] for release in heads_metadata_info.find("releases").findall("release"): release_ver = release.get("version") - if self.heads_version == "heads" or l_ver(release_ver) > l_ver( + if self.heads_version == "heads" or Version(release_ver) > Version( self.heads_version ): - if not self.heads_update_version or l_ver(release_ver) > l_ver( + if not self.heads_update_version or Version(release_ver) > Version( self.heads_update_version ): self.heads_update_url = release.find("location").text diff --git a/contrib/qubes/src/qubes_fwupdmgr.py b/contrib/qubes/src/qubes_fwupdmgr.py index 7e6fa3978..93dd9d0b9 100755 --- a/contrib/qubes/src/qubes_fwupdmgr.py +++ b/contrib/qubes/src/qubes_fwupdmgr.py @@ -16,7 +16,7 @@ import sys import xml.etree.ElementTree as ET from pathlib import Path -from distutils.version import LooseVersion as l_ver +from packaging.version import Version FWUPD_QUBES_DIR = "/usr/share/qubes-fwupd" @@ -492,7 +492,7 @@ class QubesFwupdmgr(FwupdHeads, FwupdUpdate, FwupdReceiveUpdates): self.name = updates_dict[vm_name][choice]["Name"] self.version = updates_dict[vm_name][choice]["Releases"][0]["Version"] for ver_check in updates_dict[vm_name][choice]["Releases"]: - if l_ver(ver_check["Version"]) >= l_ver(self.version): + if Version(ver_check["Version"]) >= Version(self.version): self.version = ver_check["Version"] self.url = ver_check["Url"] self.sha = ver_check["Checksum"] @@ -539,7 +539,7 @@ class QubesFwupdmgr(FwupdHeads, FwupdUpdate, FwupdReceiveUpdates): raise ValueError("No vendor information in firmware metainfo.") if vendor not in dmi_info: raise ValueError("Wrong firmware provider.") - if not downgrade and l_ver(version) <= l_ver(self.dmi_version): + if not downgrade and Version(version) <= Version(self.dmi_version): raise ValueError(f"{version} < {self.dmi_version} Downgrade not allowed") def _get_dom0_devices(self): @@ -587,7 +587,7 @@ class QubesFwupdmgr(FwupdHeads, FwupdUpdate, FwupdReceiveUpdates): ) current_version = device["Version"] for update in device["Releases"]: - if l_ver(update["Version"]) > current_version: + if Version(update["Version"]) > current_version: self.usbvm_updates_list[-1]["Releases"].append( { "Version": update["Version"], @@ -666,7 +666,7 @@ class QubesFwupdmgr(FwupdHeads, FwupdUpdate, FwupdReceiveUpdates): "Checksum": downgrade["Checksum"][-1], } for downgrade in device["Releases"] - if l_ver(downgrade["Version"]) < l_ver(version) + if Version(downgrade["Version"]) < Version(version) ], } ) diff --git a/contrib/qubes/test/test_qubes_fwupdmgr.py b/contrib/qubes/test/test_qubes_fwupdmgr.py index c67c420dc..ec9e42b58 100755 --- a/contrib/qubes/test/test_qubes_fwupdmgr.py +++ b/contrib/qubes/test/test_qubes_fwupdmgr.py @@ -15,7 +15,7 @@ import sys import imp import io import platform -from distutils.version import LooseVersion as l_ver +from packaging.version import Version from pathlib import Path from test.fwupd_logs import UPDATE_INFO, GET_DEVICES, DMI_DECODE from test.fwupd_logs import GET_DEVICES_NO_UPDATES, GET_DEVICES_NO_VERSION @@ -439,7 +439,7 @@ class TestQubesFwupdmgr(unittest.TestCase): self.q._get_dom0_devices() downgrades = self.q._parse_downgrades(self.q.dom0_devices_info) new_version = downgrades[number]["Version"] - self.assertGreater(l_ver(old_version), l_ver(new_version)) + self.assertGreater(Version(old_version), Version(new_version)) @unittest.skipUnless( check_whonix_updatevm() and device_connected_usbvm(), REQUIRED_DEV @@ -469,7 +469,7 @@ class TestQubesFwupdmgr(unittest.TestCase): raw = usbvm_device_info.read() downgrades = self.q._parse_downgrades(raw) new_version = downgrades[number]["Version"] - self.assertGreater(l_ver(old_version), l_ver(new_version)) + self.assertGreater(Version(old_version), Version(new_version)) old_version = None new_version = None self.q._get_dom0_updates() @@ -501,7 +501,7 @@ class TestQubesFwupdmgr(unittest.TestCase): break if new_version is None: self.fail("Test device not found") - self.assertLess(l_ver(old_version), l_ver(new_version)) + self.assertLess(Version(old_version), Version(new_version)) @unittest.skipUnless(device_connected_usbvm(), REQUIRED_DEV) def test_downgrade_firmware_usbvm(self): @@ -528,7 +528,7 @@ class TestQubesFwupdmgr(unittest.TestCase): raw = usbvm_device_info.read() downgrades = self.q._parse_downgrades(raw) new_version = downgrades[number]["Version"] - self.assertGreater(l_ver(old_version), l_ver(new_version)) + self.assertGreater(Version(old_version), Version(new_version)) def test_parse_downgrades(self): downgrades = self.q._parse_downgrades(GET_DEVICES) @@ -617,7 +617,7 @@ class TestQubesFwupdmgr(unittest.TestCase): break if new_version is None: self.fail("Test device not found") - self.assertLess(l_ver(old_version), l_ver(new_version)) + self.assertLess(Version(old_version), Version(new_version)) @unittest.skipUnless(device_connected_usbvm(), REQUIRED_DEV) def test_update_firmware_usbvm(self): @@ -652,7 +652,7 @@ class TestQubesFwupdmgr(unittest.TestCase): break if new_version is None: self.fail("Test device not found") - self.assertLess(l_ver(old_version), l_ver(new_version)) + self.assertLess(Version(old_version), Version(new_version)) @unittest.skipUnless(check_usbvm(), REQUIRED_USBVM) def test_get_usbvm_devices(self): diff --git a/docs/test-deps.py b/docs/test-deps.py index bc7c226bc..87e91b3a4 100755 --- a/docs/test-deps.py +++ b/docs/test-deps.py @@ -4,10 +4,10 @@ import sys import markdown -from distutils.version import LooseVersion +from packaging.version import Version # https://github.com/fwupd/fwupd/pull/3337#issuecomment-858947695 -if LooseVersion(markdown.version) < LooseVersion("3.3.3"): +if Version(markdown.version) < Version("3.3.3"): print("python3-markdown version 3.3.3 required for gi-docgen") sys.exit(1)