pungi/0009-gather-Fix-package-set-whitelist.patch
2018-03-16 14:52:42 +01:00

148 lines
6.3 KiB
Diff

From 2dca0b0e3106f3c7252a5d0ad56f3943940e3fd0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lubom=C3=ADr=20Sedl=C3=A1=C5=99?= <lsedlar@redhat.com>
Date: Fri, 9 Mar 2018 13:45:03 +0100
Subject: [PATCH 09/12] gather: Fix package set whitelist
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
We need to include all relevant arches, not just the base one (including
noarch and src). However the list can be shortened by only listing
NEVRs, because that should be unique.
Signed-off-by: Lubomír Sedlář <lsedlar@redhat.com>
---
pungi/gather_dnf.py | 9 ++++-----
pungi/phases/gather/methods/method_deps.py | 9 ++++++---
tests/test_gather.py | 23 +++++++++--------------
tests/test_gather_method_deps.py | 8 ++++----
4 files changed, 23 insertions(+), 26 deletions(-)
diff --git a/pungi/gather_dnf.py b/pungi/gather_dnf.py
index 1023c57d..a0ea6fd1 100644
--- a/pungi/gather_dnf.py
+++ b/pungi/gather_dnf.py
@@ -19,7 +19,7 @@ from itertools import count
import logging
import os
-from kobo.rpmlib import parse_nvra
+from kobo.rpmlib import parse_nvra, parse_nvr
import pungi.common
import pungi.dnf_wrapper
@@ -374,13 +374,12 @@ class Gather(GatherBase):
with Profiler("Gather._apply_excludes():apply-package-whitelist'"):
to_keep = []
for pattern in self.opts.package_whitelist:
- nvra = parse_nvra(pattern)
- nvra.pop('src')
+ nvr = parse_nvr(pattern)
try:
- nvra['epoch'] = int(nvra.pop('epoch'))
+ nvr['epoch'] = int(nvr.pop('epoch'))
except ValueError:
pass
- to_keep.extend(self._query.filter(**nvra).run())
+ to_keep.extend(self._query.filter(**nvr).run())
for queue in all_queues:
setattr(self, queue, getattr(self, queue).filter(pkg=to_keep).latest().apply())
diff --git a/pungi/phases/gather/methods/method_deps.py b/pungi/phases/gather/methods/method_deps.py
index d38343f3..8c29cfde 100644
--- a/pungi/phases/gather/methods/method_deps.py
+++ b/pungi/phases/gather/methods/method_deps.py
@@ -22,7 +22,7 @@ from kobo.pkgset import SimpleRpmWrapper, RpmWrapper
from pungi.util import rmtree, get_arch_variant_data
from pungi.wrappers.pungi import PungiWrapper
-from pungi.arch import tree_arch_to_yum_arch
+from pungi.arch import tree_arch_to_yum_arch, get_valid_arches
import pungi.phases.gather
import pungi.phases.gather.method
@@ -90,8 +90,11 @@ def write_pungi_config(compose, arch, variant, packages, groups, filter_packages
package_whitelist = set()
if variant.pkgset:
- for rpm_obj in variant.pkgset.rpms_by_arch.get(arch, []):
- package_whitelist.add(rpm_obj.nevra)
+ multilib = get_arch_variant_data(compose.conf, 'multilib', arch, variant)
+ for i in get_valid_arches(arch, multilib=multilib, add_noarch=True, add_src=True):
+ for rpm_obj in variant.pkgset.rpms_by_arch.get(i, []):
+ package_whitelist.add(
+ '{0.name}-{1}:{0.version}-{0.release}'.format(rpm_obj, rpm_obj.epoch or 0))
pungi_wrapper.write_kickstart(
ks_path=pungi_cfg, repos=repos, groups=groups, packages=packages_str,
diff --git a/tests/test_gather.py b/tests/test_gather.py
index e73ae9c3..fb59dc17 100644
--- a/tests/test_gather.py
+++ b/tests/test_gather.py
@@ -1798,18 +1798,14 @@ class DNFDepsolvingTestCase(DepsolvingBase, unittest.TestCase):
"dummy-bash",
]
package_whitelist = [
- "dummy-basesystem-10.0-6.noarch",
- "dummy-basesystem-10.0-6.src",
- "dummy-bash-debuginfo-4.2.37-5.x86_64",
- "dummy-bash-4.2.37-5.x86_64",
- "dummy-bash-4.2.37-5.src",
- "dummy-filesystem-4.2.37-6.x86_64",
- "dummy-filesystem-4.2.37-6.src",
- "dummy-glibc-common-2.14-5.x86_64",
- "dummy-glibc-debuginfo-common-2.14-5.x86_64",
- "dummy-glibc-debuginfo-2.14-5.x86_64",
- "dummy-glibc-2.14-5.x86_64",
- "dummy-glibc-2.14-5.src",
+ "dummy-basesystem-10.0-6",
+ "dummy-bash-debuginfo-4.2.37-5",
+ "dummy-bash-4.2.37-5",
+ "dummy-filesystem-4.2.37-6",
+ "dummy-glibc-common-2.14-5",
+ "dummy-glibc-debuginfo-common-2.14-5",
+ "dummy-glibc-debuginfo-2.14-5",
+ "dummy-glibc-2.14-5",
]
pkg_map = self.go(packages, None, greedy="none", package_whitelist=package_whitelist)
@@ -1845,8 +1841,7 @@ class DNFDepsolvingTestCase(DepsolvingBase, unittest.TestCase):
def test_package_whitelist(self):
packages = ['*']
whitelist = [
- 'dummy-bash-4.2.37-6.x86_64',
- 'dummy-bash-4.2.37-6.src',
+ 'dummy-bash-4.2.37-6',
]
pkg_map = self.go(packages, None, package_whitelist=whitelist)
diff --git a/tests/test_gather_method_deps.py b/tests/test_gather_method_deps.py
index 31bf82b7..0bebb74e 100644
--- a/tests/test_gather_method_deps.py
+++ b/tests/test_gather_method_deps.py
@@ -64,9 +64,9 @@ class TestWritePungiConfig(helpers.PungiTestCase):
pkgs = [('pkg1', None), ('pkg2', 'x86_64')]
grps = ['grp1']
filter = [('pkg3', None), ('pkg4', 'x86_64')]
- self.compose.variants['Server'].pkgset.rpms_by_arch['x86_64'] = [
- mock.Mock(nevra='pkg-1.0.0-1')
- ]
+ mock_rpm = mock.Mock(version='1.0.0', release='1', epoch=0)
+ mock_rpm.name = 'pkg'
+ self.compose.variants['Server'].pkgset.rpms_by_arch['x86_64'] = [mock_rpm]
white = mock.Mock()
black = mock.Mock()
prepopulate = mock.Mock()
@@ -81,7 +81,7 @@ class TestWritePungiConfig(helpers.PungiTestCase):
repos={'pungi-repo': self.topdir + '/work/x86_64/repo'},
exclude_packages=['pkg3', 'pkg4.x86_64'],
fulltree_excludes=fulltree,
- package_whitelist=set(['pkg-1.0.0-1']))
+ package_whitelist=set(['pkg-0:1.0.0-1']))
@mock.patch('pungi.phases.gather.methods.method_deps.PungiWrapper')
def test_without_input(self, PungiWrapper):
--
2.13.6