From 32221e8f363d26cedbb5c0fa50f0ee970c25d769 Mon Sep 17 00:00:00 2001 From: Lubomír Sedlář Date: Jan 12 2022 13:59:09 +0000 Subject: hybrid: Explicitly pull in debugsource packages This should cover case where we there's a build like this: foo-1-1.src.rpm foo-sub-1-1.noarch.rpm foo-debugsource-1-1.x86_64.rpm The compose contains the noarch package, and should also have the debugsource package. The original code only checked for foo-sub-debugsource though. JIRA: RHELCMP-7628 Signed-off-by: Lubomír Sedlář --- diff --git a/pungi/phases/gather/methods/method_hybrid.py b/pungi/phases/gather/methods/method_hybrid.py index 3aa60cb..32fa85e 100644 --- a/pungi/phases/gather/methods/method_hybrid.py +++ b/pungi/phases/gather/methods/method_hybrid.py @@ -349,8 +349,11 @@ class GatherMethodHybrid(pungi.phases.gather.method.GatherMethodBase): # There are two ways how the debuginfo package can be named. We # want to get them all. - for pattern in ["%s-debuginfo", "%s-debugsource"]: - debuginfo_name = pattern % pkg.name + source_name = kobo.rpmlib.parse_nvra(pkg.rpm_sourcerpm)["name"] + for debuginfo_name in [ + "%s-debuginfo" % pkg.name, + "%s-debugsource" % source_name, + ]: debuginfo = self._get_debuginfo(debuginfo_name, pkg_arch) for dbg in debuginfo: # For each debuginfo package that matches on name and diff --git a/tests/test_gather_method_hybrid.py b/tests/test_gather_method_hybrid.py index bc0a283..b053f22 100644 --- a/tests/test_gather_method_hybrid.py +++ b/tests/test_gather_method_hybrid.py @@ -391,7 +391,7 @@ class TestRunSolver(HelperMixin, helpers.PungiTestCase): ), } po.return_value = ([("p-1-1", "x86_64", frozenset())], ["m1"]) - self.phase.packages = {"p-1-1.x86_64": mock.Mock()} + self.phase.packages = {"p-1-1.x86_64": mock.Mock(rpm_sourcerpm="p-1-1.src.rpm")} res = self.phase.run_solver( self.compose.variants["Server"], @@ -431,7 +431,9 @@ class TestRunSolver(HelperMixin, helpers.PungiTestCase): ) def test_with_comps(self, run, gc, po, wc): - self.phase.packages = {"pkg-1.0-1.x86_64": mock.Mock()} + self.phase.packages = { + "pkg-1.0-1.x86_64": mock.Mock(rpm_sourcerpm="pkg-1.0-1.src.rpm") + } self.phase.debuginfo = {"x86_64": {}} po.return_value = ([("pkg-1.0-1", "x86_64", frozenset())], []) res = self.phase.run_solver( @@ -473,11 +475,23 @@ class TestRunSolver(HelperMixin, helpers.PungiTestCase): ) def test_with_comps_with_debuginfo(self, run, gc, po, wc): - dbg1 = NamedMock(name="pkg-debuginfo", arch="x86_64", sourcerpm="pkg.src.rpm") - dbg2 = NamedMock(name="pkg-debuginfo", arch="x86_64", sourcerpm="x.src.rpm") + # dbg1 and dbg2 mocks both package from Kobo (with sourcerpm) and from + # createrepo_c (with rpm_sourcerpm) + dbg1 = NamedMock( + name="pkg-debuginfo", + arch="x86_64", + sourcerpm="pkg-1.0-1.src.rpm", + rpm_sourcerpm="pkg-1.0-1.src.rpm", + ) + dbg2 = NamedMock( + name="pkg-debuginfo", + arch="x86_64", + sourcerpm="pkg-1.0-2.src.rpm", + rpm_sourcerpm="pkg-1.0-2.src.rpm", + ) self.phase.packages = { "pkg-1.0-1.x86_64": NamedMock( - name="pkg", arch="x86_64", rpm_sourcerpm="pkg.src.rpm" + name="pkg", arch="x86_64", rpm_sourcerpm="pkg-1.0-1.src.rpm" ), "pkg-debuginfo-1.0-1.x86_64": dbg1, "pkg-debuginfo-1.0-2.x86_64": dbg2, @@ -558,8 +572,8 @@ class TestRunSolver(HelperMixin, helpers.PungiTestCase): ] po.side_effect = [([("pkg-1.0-1", "x86_64", frozenset())], []), (final, [])] self.phase.packages = { - "pkg-1.0-1.x86_64": mock.Mock(), - "pkg-en-1.0-1.noarch": mock.Mock(), + "pkg-1.0-1.x86_64": mock.Mock(rpm_sourcerpm="pkg-1.0-1.src.rpm"), + "pkg-en-1.0-1.noarch": mock.Mock(rpm_sourcerpm="pkg-1.0-1.src.rpm"), } res = self.phase.run_solver( @@ -628,9 +642,15 @@ class TestRunSolver(HelperMixin, helpers.PungiTestCase): cr.Metadata.return_value.keys.return_value = [] self.phase.package_maps = { "x86_64": { - "pkg-devel-1.0-1.x86_64": NamedMock(name="pkg-devel"), - "pkg-devel-1.0-1.i686": NamedMock(name="pkg-devel"), - "foo-1.0-1.x86_64": NamedMock(name="foo"), + "pkg-devel-1.0-1.x86_64": NamedMock( + name="pkg-devel", rpm_sourcerpm="pkg-1.0-1.src.rpm" + ), + "pkg-devel-1.0-1.i686": NamedMock( + name="pkg-devel", rpm_sourcerpm="pkg-1.0-1.src.rpm" + ), + "foo-1.0-1.x86_64": NamedMock( + name="foo", rpm_sourcerpm="foo-1.0-1.src.rpm" + ), } } self.phase.packages = self.phase.package_maps["x86_64"] @@ -718,6 +738,7 @@ class TestRunSolver(HelperMixin, helpers.PungiTestCase): release="1", arch="x86_64", provides=[("/usr/lib/libfoo.1.so.1", None, None)], + rpm_sourcerpm="foo-1.0-1.src.rpm", ), "def": NamedMock( name="foo", @@ -726,6 +747,7 @@ class TestRunSolver(HelperMixin, helpers.PungiTestCase): release="1", arch="i686", provides=[("/usr/lib/libfoo.1.so.1", None, None)], + rpm_sourcerpm="foo-1.0-1.src.rpm", ), "ghi": NamedMock( name="pkg-devel", @@ -734,6 +756,7 @@ class TestRunSolver(HelperMixin, helpers.PungiTestCase): release="1", arch="x86_64", provides=[], + rpm_sourcerpm="pkg-devel-1.0-1.src.rpm", ), } cr.Metadata.return_value.keys.return_value = packages.keys()