coreos / fedora-coreos-pipeline

Build pipeline for Fedora CoreOS

Home Page:https://jenkins-fedora-coreos.apps.ocp.ci.centos.org/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Ensure RPM versions match across arches during lockfile bumps

jlebon opened this issue · comments

14:08:37 < jlebon> dustymabe: was casually looking at this
                   https://github.com/coreos/fedora-coreos-config/commit/6740a0d07e4ac7ee4f2455a05d5b059b635391ef
14:08:55 < jlebon> i wish there was a stronger binding to ensure they hit the same
                   rpm-md snapshot
14:09:16 < jlebon> you could imagine a race where the repo is updated halfway between
                   the x86 and aarch64 runs of `cosa fetch`
14:10:02 < jlebon> not sure there's an easy way to fix this. we could probably detect
                   it at least and error out by comparing shared SRPMs
14:10:56 < jlebon> let me write this down in a pipeline issue

Rough pseudocode how this could work:

srpms = {}
for arch in arches:
  for locked_pkg in lockfile[arch]:
    srpm = get_srpm_for_pkg(locked_pkg)
    (name, evr) = split_srpm(srpm)
    if name not in srpms:
      srpms[name] = evr
    elif srpms[name] != evr:
      raise Exception("mismatch found")

Anyone who wants to tackle this in Python, see https://github.com/coreos/fedora-coreos-config/blob/testing-devel/ci/remove-graduated-overrides.py for examples of reading lockfiles and using the dnf Python API.