Migrate away from the deprecated distutils

This commit is contained in:
Richard Hughes 2022-07-19 12:16:00 +01:00
parent c857c9e95d
commit fd458cd0de
5 changed files with 35 additions and 17 deletions

View File

@ -1374,6 +1374,24 @@
<package variant="x86_64" />
</distro>
</dependency>
<dependency type="build" id="python3-packaging">
<distro id="fedora">
<package variant="x86_64" />
<package variant="aarch64" />
</distro>
<distro id="arch">
<package variant="x86_64">python-packaging</package>
</distro>
<distro id="debian">
<control />
<package variant="x86_64" />
<package variant="i386" />
</distro>
<distro id="ubuntu">
<control />
<package variant="x86_64" />
</distro>
</dependency>
<dependency type="build" id="python3-requests">
<distro id="debian">
<package variant="s390x">qemu-user</package>

View File

@ -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

View File

@ -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)
],
}
)

View File

@ -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):

View File

@ -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)