Blame SOURCES/BZ-1193871-updateinfo-notice-when-arch-changed.patch

5e9bef
diff --git a/yum/update_md.py b/yum/update_md.py
5e9bef
--- a/yum/update_md.py	2015-01-19 07:44:35.567107008 -0500
5e9bef
+++ b/yum/update_md.py	2015-01-19 08:57:31.576489424 -0500
5e9bef
@@ -398,6 +399,9 @@ class UpdateMetadata(object):
5e9bef
             except Errors.RepoMDError:
5e9bef
                 continue # No metadata found for this repo
5e9bef
 
5e9bef
+        self.arch_storage = ArchStorage()
5e9bef
+        self.archlist = self.arch_storage.archlist
5e9bef
+
5e9bef
     def get_notices(self, name=None):
5e9bef
         """ Return all notices. """
5e9bef
         if name is None:
5e9bef
@@ -434,16 +438,29 @@ class UpdateMetadata(object):
5e9bef
         name = oldpkgtup[0]
5e9bef
         arch = oldpkgtup[1]
5e9bef
         ret = []
5e9bef
+        other_arch_list = []
5e9bef
+        notices = set()
5e9bef
         for notice in self.get_notices(name):
5e9bef
             for upkg in notice['pkglist']:
5e9bef
                 for pkg in upkg['packages']:
5e9bef
+                    other_arch = False
5e9bef
                     if pkg['name'] != name or pkg['arch'] != arch:
5e9bef
-                        continue
5e9bef
+                        if (notice not in notices and pkg['name'] == name and pkg['arch'] in self.archlist):
5e9bef
+                            other_arch = True
5e9bef
+                        else:
5e9bef
+                            continue
5e9bef
                     pkgtup = (pkg['name'], pkg['arch'], pkg['epoch'] or '0',
5e9bef
                               pkg['version'], pkg['release'])
5e9bef
                     if _rpm_tup_vercmp(pkgtup, oldpkgtup) <= 0:
5e9bef
                         continue
5e9bef
-                    ret.append((pkgtup, notice))
5e9bef
+                    if other_arch:
5e9bef
+                        other_arch_list.append((pkgtup, notice))
5e9bef
+                    else:
5e9bef
+                        ret.append((pkgtup, notice))
5e9bef
+                        notices.add(notice)
5e9bef
+        for pkgtup, notice in other_arch_list:
5e9bef
+            if notice not in notices:
5e9bef
+                ret.append((pkgtup, notice))
5e9bef
         ret.sort(cmp=_rpm_tup_vercmp, key=lambda x: x[0], reverse=True)
5e9bef
         return ret
5e9bef
 
5e9bef
diff -up yum-3.4.3/yum/update_md.py.old yum-3.4.3/yum/update_md.py
5e9bef
--- yum-3.4.3/yum/update_md.py.old	2015-05-28 19:23:35.589691937 +0200
5e9bef
+++ yum-3.4.3/yum/update_md.py	2015-05-28 19:24:05.971806965 +0200
5e9bef
@@ -33,6 +33,7 @@ import Errors
5e9bef
 import logginglevels
5e9bef
 
5e9bef
 import rpmUtils.miscutils
5e9bef
+from rpmUtils.arch import ArchStorage
5e9bef
 
5e9bef
 
5e9bef
 def safe_iterparse(filename, logger=None):