From c619010d3b5efa9dc0ebec7839b73cbcd59edcb2 Mon Sep 17 00:00:00 2001 From: Gui Chen Date: Sat, 22 Sep 2012 23:00:40 +0800 Subject: [PATCH] decide uniq arch when one repo only has one uniq arch the arch detection is changed: when one uniq arch is found in a repo, this arch should be detected arch now. Signed-off-by: Gui Chen --- mic/utils/misc.py | 58 +++++++++++++++++++++++++++++++++---------------------- 1 file changed, 35 insertions(+), 23 deletions(-) diff --git a/mic/utils/misc.py b/mic/utils/misc.py index 5b5a299..9458bae 100644 --- a/mic/utils/misc.py +++ b/mic/utils/misc.py @@ -621,8 +621,35 @@ def get_rpmver_in_repo(repometadata): return None def get_arch(repometadata): - archlist = [] + def uniqarch(archlist=[]): + uniq_arch = [] + for i in range(len(archlist)): + if archlist[i] not in rpmmisc.archPolicies.keys(): + continue + need_append = True + j = 0 + while j < len(uniq_arch): + if archlist[i] in rpmmisc.archPolicies[uniq_arch[j]].split(':'): + need_append = False + break + if uniq_arch[j] in rpmmisc.archPolicies[archlist[i]].split(':'): + if need_append: + uniq_arch[j] = archlist[i] + need_append = False + else: + uniq_arch.remove(uniq_arch[j]) + continue + j += 1 + if need_append: + uniq_arch.append(archlist[i]) + + return uniq_arch + + + ret_uniq_arch = [] + ret_arch_list = [] for repo in repometadata: + archlist = [] if repo["primary"].endswith(".xml"): root = xmlparse(repo["primary"]) ns = root.getroot().tag @@ -640,28 +667,13 @@ def get_arch(repometadata): con.close() - uniq_arch = [] - for i in range(len(archlist)): - if archlist[i] not in rpmmisc.archPolicies.keys(): - continue - need_append = True - j = 0 - while j < len(uniq_arch): - if archlist[i] in rpmmisc.archPolicies[uniq_arch[j]].split(':'): - need_append = False - break - if uniq_arch[j] in rpmmisc.archPolicies[archlist[i]].split(':'): - if need_append: - uniq_arch[j] = archlist[i] - need_append = False - else: - uniq_arch.remove(uniq_arch[j]) - continue - j += 1 - if need_append: - uniq_arch.append(archlist[i]) - - return uniq_arch, archlist + uniq_arch = uniqarch(archlist) + if not ret_uniq_arch and len(uniq_arch) == 1: + ret_uniq_arch = uniq_arch + ret_arch_list += uniq_arch + + ret_arch_list = uniqarch(ret_arch_list) + return ret_uniq_arch, ret_arch_list def get_package(pkg, repometadata, arch = None): ver = "" -- 2.7.4