decide uniq arch when one repo only has one uniq arch
authorGui Chen <gui.chen@intel.com>
Sat, 22 Sep 2012 15:00:40 +0000 (23:00 +0800)
committerGui Chen <gui.chen@intel.com>
Wed, 12 Dec 2012 11:33:23 +0000 (19:33 +0800)
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 <gui.chen@intel.com>
mic/utils/misc.py

index 5b5a299..9458bae 100644 (file)
@@ -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 = ""