pungi: Handle missing SRPM
Source packages can be excluded while binary packages should still go into the compose. This patch makes it so that the mapping from binary packages to source packages contains None in such case. The code is already capable of handling that. A warning will be emitted for each binary package without source. This also allows us to remove some code from `createSourceHashes` that is now unused. A test for excluding source package is added as well. Signed-off-by: Lubomír Sedlář <lsedlar@redhat.com>
This commit is contained in:
parent
83428a06bf
commit
56147f2e4d
@ -20,7 +20,6 @@ import re
|
|||||||
import shutil
|
import shutil
|
||||||
import sys
|
import sys
|
||||||
import pungi.util
|
import pungi.util
|
||||||
import pprint
|
|
||||||
import lockfile
|
import lockfile
|
||||||
import logging
|
import logging
|
||||||
import urlgrabber.progress
|
import urlgrabber.progress
|
||||||
@ -1007,9 +1006,11 @@ class Pungi(PungiBase):
|
|||||||
# ... but even "nosrc" packages are stored as "src" in repodata
|
# ... 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.ayum.pkgSack.searchNevra(name=name, ver=ver, rel=rel, arch="src")
|
||||||
srpm_po_list = self.excludePackages(srpm_po_list)
|
srpm_po_list = self.excludePackages(srpm_po_list)
|
||||||
if not srpm_po_list:
|
try:
|
||||||
raise RuntimeError("Cannot find a source rpm for %s" % po.sourcerpm)
|
|
||||||
srpm_po = srpm_po_list[0]
|
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
|
self.sourcerpm_srpmpo_map[po.sourcerpm] = srpm_po
|
||||||
return srpm_po
|
return srpm_po
|
||||||
|
|
||||||
@ -1020,28 +1021,13 @@ class Pungi(PungiBase):
|
|||||||
self.src_by_bin = {}
|
self.src_by_bin = {}
|
||||||
self.bin_by_src = {}
|
self.bin_by_src = {}
|
||||||
self.logger.info("Generating source <-> binary package mappings")
|
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:
|
for po in self.all_pkgs:
|
||||||
if is_source(po):
|
if is_source(po):
|
||||||
continue
|
continue
|
||||||
try:
|
|
||||||
srpmpo = self.get_srpm_po(po)
|
srpmpo = self.get_srpm_po(po)
|
||||||
except RuntimeError:
|
|
||||||
failed.append(po.sourcerpm)
|
|
||||||
continue
|
|
||||||
|
|
||||||
self.src_by_bin[po] = srpmpo
|
self.src_by_bin[po] = srpmpo
|
||||||
if self.bin_by_src.has_key(srpmpo):
|
self.bin_by_src.setdefault(srpmpo, []).append(po)
|
||||||
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)))
|
|
||||||
|
|
||||||
def add_srpms(self, po_list=None):
|
def add_srpms(self, po_list=None):
|
||||||
"""Cycle through the list of package objects and
|
"""Cycle through the list of package objects and
|
||||||
|
@ -741,6 +741,36 @@ class TestPungi(unittest.TestCase):
|
|||||||
"dummy-glibc-debuginfo-common-2.14-5.x86_64.rpm",
|
"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):
|
def test_bash_multilib_greedy(self):
|
||||||
packages = [
|
packages = [
|
||||||
"dummy-bash.+",
|
"dummy-bash.+",
|
||||||
|
Loading…
Reference in New Issue
Block a user