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