From bcb104a16a8ee96eb038c0f6a4fbf875fb61b730 Mon Sep 17 00:00:00 2001 From: Jan Kaluza Date: Oct 16 2018 07:08:14 +0000 Subject: Fix wrong inclusion of non-multilib packages in final MMD. The original Pungi code, on which MBS code is based on, always passed only RPMs with valid architectures to further decide if their subset should end up in a final modulemd file. In MBS, we pass RPMs with all architecture and there was no code to actually filter out the RPMs which are from architectures which should never end up in a final MMD. This commit checks that RPMs for completely different architectures will never be considered to be included in a final MMD. --- diff --git a/module_build_service/builder/KojiContentGenerator.py b/module_build_service/builder/KojiContentGenerator.py index b633b04..5da0003 100644 --- a/module_build_service/builder/KojiContentGenerator.py +++ b/module_build_service/builder/KojiContentGenerator.py @@ -465,6 +465,13 @@ class KojiContentGenerator(object): # Check each RPM in `self.rpms_dict` to find out if it can be included in mmd # for this architecture. for nevra, rpm in self.rpms_dict.items(): + # Filter out RPMs which will never end up in final modulemd: + # - the architecture of an RPM is not multilib architecture for `arch`. + # - the architecture of an RPM is not the final mmd architecture. + # - the architecture of an RPM is not "noarch". + if rpm["arch"] not in multilib_arches and rpm["arch"] not in [arch, "noarch"]: + continue + srpm = rpm["srpm_name"] # Skip the RPM if it is excluded on this arch or exclusive diff --git a/tests/test_content_generator.py b/tests/test_content_generator.py index b272f68..1595eb0 100644 --- a/tests/test_content_generator.py +++ b/tests/test_content_generator.py @@ -432,8 +432,10 @@ class TestBuild: def test_fill_in_rpms_list(self): self._add_test_rpm("dhcp-libs-12:4.3.5-5.module_2118aef6.x86_64", "dhcp") self._add_test_rpm("dhcp-libs-12:4.3.5-5.module_2118aef6.i686", "dhcp") + self._add_test_rpm("dhcp-libs-12:4.3.5-5.module_2118aef6.s390x", "dhcp") self._add_test_rpm("perl-Tangerine-12:4.3.5-5.module_2118aef6.x86_64", "perl-Tangerine") self._add_test_rpm("perl-Tangerine-12:4.3.5-5.module_2118aef6.i686", "perl-Tangerine") + self._add_test_rpm("perl-Tangerine-12:4.3.5-5.module_2118aef6.s390x", "perl-Tangerine") mmd = self.cg.module.mmd() mmd = self.cg._fill_in_rpms_list(mmd, "x86_64")