#1031 Fix filtering noarch RPMs
Merged 9 months ago by mprahl. Opened 9 months ago by jkaluza.
jkaluza/fm-orchestrator lsedlar-filter-multilib  into  master

@@ -451,6 +451,10 @@ 

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

  

              # 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.

@@ -549,3 +549,18 @@ 

  

          # 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"])

I'm not sure if it counts, but +1 from me :)

Commit 456ab29 fixes this pull-request

Pull-Request has been merged by mprahl

9 months ago

Pull-Request has been merged by mprahl

9 months ago