mpp: unify add package code path

Both v1 and v2 code paths used the same logic to add the resolved
dependencies to the `source_urls` dict, which is already stored
in the base class. Move the logic into the base class too.
This commit is contained in:
Christian Kellner 2021-06-21 14:36:26 +02:00 committed by Tom Gundersen
parent 4add7c69ff
commit 1b4f96c4e7

View file

@ -273,6 +273,7 @@ class ManifestFile:
self.root = root
self.version = version
self.sources = element_enter(self.root, "sources", {})
self.source_urls = {}
def load_import(self, path):
m = ManifestFile.load(self.basedir.joinpath(path))
@ -280,6 +281,20 @@ class ManifestFile:
raise ValueError(f"Incompatible manifest version {m.version}")
return m
def add_packages(self, deps):
checksums = []
for dep in deps:
checksum = dep["checksum"]
data = {"url": dep["url"]}
if "secrets" in dep:
data["secrets"] = dep["secrets"]
self.source_urls[checksum] = data
checksums.append(checksum)
return checksums
def write(self, file, sort_keys=False):
json.dump(self.root, file, indent=2, sort_keys=sort_keys)
file.write("\n")
@ -343,15 +358,9 @@ class ManifestFileV1(ManifestFile):
packages = element_enter(options, "packages", [])
deps = _dnf_resolve(mpp, self.basedir)
for dep in deps:
checksum = dep["checksum"]
checksums = self.add_packages(deps)
packages.append(checksum)
data = {"url": dep["url"]}
if "secrets" in dep:
data["secrets"] = dep["secrets"]
self.source_urls[checksum] = data
packages += checksums
def process_depsolves(self, pipeline=None):
if pipeline == None:
@ -419,20 +428,16 @@ class ManifestFileV2(ManifestFile):
if not mpp:
return
del(packages["mpp-depsolve"])
refs = element_enter(packages, "references", {})
deps = _dnf_resolve(mpp, self.basedir)
for dep in deps:
checksum = dep["checksum"]
checksums = self.add_packages(deps)
for checksum in checksums:
refs[checksum] = {}
data = {"url": dep["url"]}
if "secrets" in dep:
data["secrets"] = dep["secrets"]
self.source_urls[checksum] = data
del(packages["mpp-depsolve"])
def process_depsolves(self):
for pipeline in self.pipelines:
stages = element_enter(pipeline, "stages", [])