From f4aafe026b29584e5bee1443b1def7d4dd8d8289 Mon Sep 17 00:00:00 2001 From: Antoine Lambert <anlambert@softwareheritage.org> Date: Tue, 15 Nov 2022 16:54:30 +0100 Subject: [PATCH] fedora: Update versions in packages dict provided as loader argument In a similar way to the debian lister, use the following versions in the packages dictionary provided to the generic rpm loader: - dict keys are package versions prefixed by the fedora release and edition they have been found (fedora{release}/{edition}/{version}), they will be used as branch names targeting releases in the snapshot created by the rpm loader - version fields in dict values are the package intrinsic versions parsed from package repository metadata excluding any ".fcXY" suffixes to avoid the loader to create multiple releases targeting the same directory, they will be used as release names in the snapshot created by the rpm loader Related to T4448 --- swh/lister/fedora/lister.py | 15 +++++++++---- swh/lister/fedora/tests/test_lister.py | 30 +++++++++----------------- 2 files changed, 21 insertions(+), 24 deletions(-) diff --git a/swh/lister/fedora/lister.py b/swh/lister/fedora/lister.py index e5620ff7..8f3dced9 100644 --- a/swh/lister/fedora/lister.py +++ b/swh/lister/fedora/lister.py @@ -170,14 +170,23 @@ class FedoraLister(Lister[FedoraListerState, FedoraPageType]): for pkg_metadata in page: # extract package metadata package_name = pkg_metadata.name - package_version = pkg_metadata.version + package_version = pkg_metadata.vr + package_version_split = package_version.split(".") + if package_version_split[-1].startswith("fc"): + # remove trailing ".fcXY" in version for the rpm loader to avoid + # creating multiple releases targeting same directory + package_version = ".".join(package_version_split[:-1]) + package_build_time = get_last_modified(pkg_metadata) package_download_path = pkg_metadata.location # build origin url origin_url = self.origin_url_for_package(package_name) # create package version key as expected by the fedora (rpm) loader - package_version_key = pkg_metadata.vr + package_version_key = ( + f"fedora{self.current_release}/{self.current_edition}/" + f"{package_version}" + ).lower() # this is the first time a package is listed if origin_url not in self.listed_origins: @@ -205,8 +214,6 @@ class FedoraLister(Lister[FedoraListerState, FedoraPageType]): "name": package_name, "version": package_version, "url": urljoin(page.baseurl, package_download_path), - "release": self.current_release, - "edition": self.current_edition, "buildTime": package_build_time.isoformat(), "checksums": get_checksums(pkg_metadata), } diff --git a/swh/lister/fedora/tests/test_lister.py b/swh/lister/fedora/tests/test_lister.py index 693abe6f..dc093597 100644 --- a/swh/lister/fedora/tests/test_lister.py +++ b/swh/lister/fedora/tests/test_lister.py @@ -40,11 +40,9 @@ def rpm_url(release, path): def pkg_versions(): return { "https://src.fedoraproject.org/rpms/0install": { - "2.11-4.fc26": { + "fedora26/everything/2.11-4": { "name": "0install", - "version": "2.11", - "release": 26, - "edition": "Everything", + "version": "2.11-4", "buildTime": "2017-02-10T04:59:31+00:00", "url": rpm_url(26, "0/0install-2.11-4.fc26.src.rpm"), "checksums": { @@ -55,22 +53,18 @@ def pkg_versions(): } }, "https://src.fedoraproject.org/rpms/0xFFFF": { - "0.3.9-15.fc26": { + "fedora26/everything/0.3.9-15": { "name": "0xFFFF", - "version": "0.3.9", - "release": 26, - "edition": "Everything", + "version": "0.3.9-15", "buildTime": "2017-02-10T05:01:53+00:00", "url": rpm_url(26, "0/0xFFFF-0.3.9-15.fc26.src.rpm"), "checksums": { "sha256": "96f9c163c0402d2b30e5343c8397a6d50e146c85a446804396b119ef9698231f" }, }, - "0.9-4.fc36": { + "fedora36/everything/0.9-4": { "name": "0xFFFF", - "version": "0.9", - "release": 36, - "edition": "Everything", + "version": "0.9-4", "buildTime": "2022-01-19T19:13:53+00:00", "url": rpm_url(36, "0/0xFFFF-0.9-4.fc36.src.rpm"), "checksums": { @@ -79,11 +73,9 @@ def pkg_versions(): }, }, "https://src.fedoraproject.org/rpms/2ping": { - "4.5.1-2.fc36": { + "fedora36/everything/4.5.1-2": { "name": "2ping", - "version": "4.5.1", - "release": 36, - "edition": "Everything", + "version": "4.5.1-2", "buildTime": "2022-01-19T19:12:21+00:00", "url": rpm_url(36, "2/2ping-4.5.1-2.fc36.src.rpm"), "checksums": { @@ -213,11 +205,9 @@ def test_incremental_lister( # Add new version to the set of expected pkg versions: pkg_versions["https://src.fedoraproject.org/rpms/0xFFFF"].update( { - "0.10-4.fc36": { + "fedora36/everything/0.10-4": { "name": "0xFFFF", - "version": "0.10", - "release": 36, - "edition": "Everything", + "version": "0.10-4", "buildTime": "2022-01-19T19:13:53+00:00", "url": rpm_url(36, "0/0xFFFF-0.10-4.fc36.src.rpm"), "checksums": { -- GitLab