gather: Allow filtering debuginfo packages

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ář <lsedlar@redhat.com>
This commit is contained in:
Lubomír Sedlář 2018-02-28 09:57:49 +01:00
parent 660c04368b
commit 3201648c37
2 changed files with 61 additions and 1 deletions

View File

@ -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):

View File

@ -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",