gather: Track multilib that doesn't exist

If a multilib package fails to be added (broken dependencies, or it
doesn't exist at all), we want to track it and eventually stop the
iterations.

Merges: https://pagure.io/pungi/pull-request/1071
Signed-off-by: Lubomír Sedlář <lsedlar@redhat.com>
This commit is contained in:
Lubomír Sedlář 2018-10-22 15:20:13 +02:00
parent 5fc0f915c6
commit 12f949fe84

View File

@ -206,6 +206,8 @@ class GatherMethodHybrid(pungi.phases.gather.method.GatherMethodBase):
step = 0 step = 0
old_multilib = set()
while True: while True:
step += 1 step += 1
conf_file = self.compose.paths.work.fus_conf(arch, variant, step) conf_file = self.compose.paths.work.fus_conf(arch, variant, step)
@ -228,10 +230,12 @@ class GatherMethodHybrid(pungi.phases.gather.method.GatherMethodBase):
env["G_MESSAGES_PREFIXED"] = "" env["G_MESSAGES_PREFIXED"] = ""
run(cmd, logfile=logfile, show_cmd=True, env=env) run(cmd, logfile=logfile, show_cmd=True, env=env)
output, out_modules = fus.parse_output(logfile) output, out_modules = fus.parse_output(logfile)
new_multilib = self.add_multilib(variant, arch, output) new_multilib = self.add_multilib(variant, arch, output, old_multilib)
old_multilib = new_multilib
if new_multilib: if new_multilib:
input_packages.extend( input_packages.extend(
_fmt_pkg(pkg_name, pkg_arch) for pkg_name, pkg_arch in new_multilib _fmt_pkg(pkg_name, pkg_arch)
for pkg_name, pkg_arch in sorted(new_multilib)
) )
continue continue
@ -245,7 +249,7 @@ class GatherMethodHybrid(pungi.phases.gather.method.GatherMethodBase):
return output, out_modules return output, out_modules
def add_multilib(self, variant, arch, nvrs): def add_multilib(self, variant, arch, nvrs, old_multilib):
added = set() added = set()
if not self.multilib_methods: if not self.multilib_methods:
return [] return []
@ -270,13 +274,7 @@ class GatherMethodHybrid(pungi.phases.gather.method.GatherMethodBase):
if self.multilib.is_multilib(multilib_candidate): if self.multilib.is_multilib(multilib_candidate):
added.add((nevr["name"], add_arch)) added.add((nevr["name"], add_arch))
# Remove packages that are already present return added - old_multilib
for nvr, pkg_arch, flags in nvrs:
existing = (nvr.rsplit("-", 2)[0], pkg_arch)
if existing in added:
added.remove(existing)
return sorted(added)
def add_langpacks(self, nvrs): def add_langpacks(self, nvrs):
if not self.langpacks: if not self.langpacks: