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
This commit is contained in:
Antoine Lambert 2022-11-15 16:54:30 +01:00
parent 065b3f81a1
commit f4aafe026b
2 changed files with 21 additions and 24 deletions

View file

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

View file

@ -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": {