From 3201648c37c36098b8b4cdab8e99c9c8804f2bbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lubom=C3=ADr=20Sedl=C3=A1=C5=99?= Date: Wed, 28 Feb 2018 09:57:49 +0100 Subject: [PATCH] gather: Allow filtering debuginfo packages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This already works on YUM backend, and this patch makes it work for DNF as well. Both native and multilib debuginfo and debugsource packages will be excluded. This matches the yum behavior. Signed-off-by: Lubomír Sedlář --- pungi/gather_dnf.py | 7 +++++- tests/test_gather.py | 55 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 1 deletion(-) diff --git a/pungi/gather_dnf.py b/pungi/gather_dnf.py index 62de26c3..5b905638 100644 --- a/pungi/gather_dnf.py +++ b/pungi/gather_dnf.py @@ -334,7 +334,6 @@ class Gather(GatherBase): exclude = set() for pattern in excludes: with Profiler("Gather._apply_excludes():exclude"): - # TODO: debug if pattern.endswith(".+"): pkgs = self.q_multilib_binary_packages.filter( name__glob=pattern[:-2], arch__neq='noarch', @@ -343,6 +342,10 @@ class Gather(GatherBase): pkgs = self.q_source_packages.filter( name__glob=pattern[:-4], reponame__neq=self.opts.lookaside_repos) + elif pungi.util.pkg_is_debug(pattern): + pkgs = self.q_debug_packages.filter( + name__glob=pattern, + reponame__neq=self.opts.lookaside_repos) else: pkgs = self.q_binary_packages.filter( name__glob=pattern, @@ -366,6 +369,8 @@ class Gather(GatherBase): self._filter_queue('q_multilib_binary_packages', exclude) self._filter_queue('q_noarch_binary_packages', exclude) self._filter_queue('q_source_packages', exclude) + self._filter_queue('q_native_debug_packages', exclude) + self._filter_queue('q_multilib_debug_packages', exclude) @Profiler("Gather.add_initial_packages()") def add_initial_packages(self, pattern_list): diff --git a/tests/test_gather.py b/tests/test_gather.py index 0b015abe..5aa09ce7 100644 --- a/tests/test_gather.py +++ b/tests/test_gather.py @@ -174,6 +174,61 @@ class DepsolvingBase(object): ]) self.assertItemsEqual(pkg_map["debuginfo"], []) + def test_bash_exclude_debuginfo(self): + packages = [ + 'dummy-bash', + '-dummy-bash-debuginfo', + '-dummy-bash-debugsource', + ] + pkg_map = self.go(packages, None, greedy="none") + + self.assertItemsEqual(pkg_map["rpm"], [ + "dummy-basesystem-10.0-6.noarch.rpm", + "dummy-bash-4.2.37-6.x86_64.rpm", + "dummy-filesystem-4.2.37-6.x86_64.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-bash-4.2.37-6.src.rpm", + "dummy-filesystem-4.2.37-6.src.rpm", + "dummy-glibc-2.14-5.src.rpm", + ]) + self.assertItemsEqual(pkg_map["debuginfo"], [ + "dummy-glibc-debuginfo-2.14-5.x86_64.rpm", + "dummy-glibc-debuginfo-common-2.14-5.x86_64.rpm", + ]) + + def test_bash_multilib_exclude_debuginfo(self): + packages = [ + 'dummy-bash.+', + '-dummy-bash-debuginfo', + '-dummy-bash-debugsource', + ] + pkg_map = self.go(packages, None, greedy="none") + + 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-bash-4.2.37-6.src.rpm", + "dummy-filesystem-4.2.37-6.src.rpm", + "dummy-glibc-2.14-5.src.rpm", + ]) + self.assertItemsEqual(pkg_map["debuginfo"], [ + "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(self): packages = [ "dummy-bash",