diff --git a/module_build_service/builder/KojiContentGenerator.py b/module_build_service/builder/KojiContentGenerator.py index c8a43079..b633b04d 100644 --- a/module_build_service/builder/KojiContentGenerator.py +++ b/module_build_service/builder/KojiContentGenerator.py @@ -451,6 +451,10 @@ class KojiContentGenerator(object): # "i686" -> [] multilib_arches = set(compatible_arches) - set( pungi.arch.get_compatible_arches(arch)) + # List of architectures that should be in ExclusiveArch tag or missing + # from ExcludeArch tag. Multilib should not be enabled here. + exclusive_arches = pungi.arch.get_valid_arches( + arch, multilib=False, add_noarch=False) # Modulemd.SimpleSet into which we will add the RPMs. rpm_artifacts = Modulemd.SimpleSet() @@ -465,9 +469,9 @@ class KojiContentGenerator(object): # Skip the RPM if it is excluded on this arch or exclusive # for different arch. - if rpm["excludearch"] and set(rpm["excludearch"]) & set(compatible_arches): + if rpm["excludearch"] and set(rpm["excludearch"]) & set(exclusive_arches): continue - if rpm["exclusivearch"] and not set(rpm["exclusivearch"]) & set(compatible_arches): + if rpm["exclusivearch"] and not set(rpm["exclusivearch"]) & set(exclusive_arches): continue # Check the "whitelist" buildopts section of MMD. diff --git a/tests/test_content_generator.py b/tests/test_content_generator.py index d24574b6..b272f680 100644 --- a/tests/test_content_generator.py +++ b/tests/test_content_generator.py @@ -549,3 +549,18 @@ class TestBuild: # Only x86_64 packages should be filled in, because we requested x86_64 arch. assert set(mmd.get_content_licenses().get()) == set(expected) + + def test_fill_in_rpms_list_noarch_filtering_not_influenced_by_multilib(self): + # A build has ExcludeArch: i686 (because it only works on 64 bit arches). + # A noarch package is built there, and this noarch packages should be + # included in x86_64 repo. + self._add_test_rpm("dhcp-libs-12:4.3.5-5.module_2118aef6.noarch", "dhcp", + excludearch=["i686"]) + + mmd = self.cg.module.mmd() + mmd = self.cg._fill_in_rpms_list(mmd, "x86_64") + + # Only i686 package for dhcp-libs should be added, because perl-Tangerine does not have + # multilib set. + assert set(mmd.get_rpm_artifacts().get()) == set([ + "dhcp-libs-12:4.3.5-5.module_2118aef6.noarch"])