148 lines
6.3 KiB
Diff
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
|
|
|