diff --git a/pungi/gather.py b/pungi/gather.py index b08c59d9..fe3ddd7a 100644 --- a/pungi/gather.py +++ b/pungi/gather.py @@ -20,7 +20,6 @@ import re import shutil import sys import pungi.util -import pprint import lockfile import logging import urlgrabber.progress @@ -1007,9 +1006,11 @@ class Pungi(PungiBase): # ... but even "nosrc" packages are stored as "src" in repodata srpm_po_list = self.ayum.pkgSack.searchNevra(name=name, ver=ver, rel=rel, arch="src") srpm_po_list = self.excludePackages(srpm_po_list) - if not srpm_po_list: - raise RuntimeError("Cannot find a source rpm for %s" % po.sourcerpm) - srpm_po = srpm_po_list[0] + try: + srpm_po = srpm_po_list[0] + except IndexError: + self.logger.warning("Cannot find a source rpm for %s" % po.sourcerpm) + srpm_po = None self.sourcerpm_srpmpo_map[po.sourcerpm] = srpm_po return srpm_po @@ -1020,28 +1021,13 @@ class Pungi(PungiBase): self.src_by_bin = {} self.bin_by_src = {} self.logger.info("Generating source <-> binary package mappings") - #(dummy1, everything, dummy2) = yum.packages.parsePackages(self.all_pkgs, ['*'], pkgdict=self.pkg_refs.copy()) - failed = [] for po in self.all_pkgs: if is_source(po): continue - try: - srpmpo = self.get_srpm_po(po) - except RuntimeError: - failed.append(po.sourcerpm) - continue + srpmpo = self.get_srpm_po(po) self.src_by_bin[po] = srpmpo - if self.bin_by_src.has_key(srpmpo): - self.bin_by_src[srpmpo].append(po) - else: - self.bin_by_src[srpmpo] = [po] - - if failed: - self.logger.info("The following srpms could not be found: %s" % ( - pprint.pformat(list(sorted(failed))))) - self.logger.info("Couldn't find %i of %i srpms." % ( - len(failed), len(self.src_by_bin))) + self.bin_by_src.setdefault(srpmpo, []).append(po) def add_srpms(self, po_list=None): """Cycle through the list of package objects and diff --git a/tests/test_pungi.py b/tests/test_pungi.py index 60f2fc3c..5feba67c 100644 --- a/tests/test_pungi.py +++ b/tests/test_pungi.py @@ -741,6 +741,36 @@ class TestPungi(unittest.TestCase): "dummy-glibc-debuginfo-common-2.14-5.x86_64.rpm", ]) + def test_bash_multilib_exclude_source(self): + packages = [ + "dummy-bash.+", + "-dummy-bash.src", + ] + pkg_map = self.go(packages, None, greedy="none") + + self.assertNotIn("dummy-bash-4.2.37-6.src.rpm", pkg_map["srpm"]) + + self.assertItemsEqual(pkg_map["rpm"], [ + "dummy-basesystem-10.0-6.noarch.rpm", + "dummy-bash-4.2.37-6.i686.rpm", + "dummy-filesystem-4.2.37-6.x86_64.rpm", + "dummy-glibc-2.14-5.i686.rpm", + "dummy-glibc-2.14-5.x86_64.rpm", + "dummy-glibc-common-2.14-5.x86_64.rpm", + ]) + self.assertItemsEqual(pkg_map["srpm"], [ + "dummy-basesystem-10.0-6.src.rpm", + "dummy-filesystem-4.2.37-6.src.rpm", + "dummy-glibc-2.14-5.src.rpm", + ]) + self.assertItemsEqual(pkg_map["debuginfo"], [ + "dummy-bash-debuginfo-4.2.37-6.i686.rpm", + "dummy-glibc-debuginfo-2.14-5.i686.rpm", + "dummy-glibc-debuginfo-2.14-5.x86_64.rpm", + "dummy-glibc-debuginfo-common-2.14-5.i686.rpm", + "dummy-glibc-debuginfo-common-2.14-5.x86_64.rpm", + ]) + def test_bash_multilib_greedy(self): packages = [ "dummy-bash.+",