Bug #197932 - Make dbapi._cpv_sort_ascending()
authorZac Medico <zmedico@gentoo.org>
Sat, 3 Nov 2007 16:34:57 +0000 (16:34 -0000)
committerZac Medico <zmedico@gentoo.org>
Sat, 3 Nov 2007 16:34:57 +0000 (16:34 -0000)
preserve explicit -r0 for consistency in findname
and aux_get calls. (trunk r8390)

svn path=/main/branches/2.1.2/; revision=8391

pym/portage.py

index 57796e9389e22985cf62d2df70ee16e958d9ce95..f6f43f4e121c80a69121e42f89d81f405816c047 100644 (file)
@@ -5309,16 +5309,17 @@ class dbapi:
                if len(cpv_list) > 1:
                        first_split = catpkgsplit(cpv_list[0])
                        cat = first_split[0]
-                       cpv_list[0] = first_split[1:]
-                       for i in xrange(1, len(cpv_list)):
-                               cpv_list[i] = catpkgsplit(cpv_list[i])[1:]
+                       # If the cpv includes explicit -r0, it has to be preserved
+                       # for consistency in findname and aux_get calls, so use a
+                       # dict to map strings back to their original values.
+                       str_map = {}
+                       for i, cpv in enumerate(cpv_list):
+                               mysplit = tuple(catpkgsplit(cpv)[1:])
+                               str_map[mysplit] = cpv
+                               cpv_list[i] = mysplit
                        cpv_list.sort(pkgcmp)
-                       for i, (pn, ver, rev) in enumerate(cpv_list):
-                               if rev == "r0":
-                                       cpv = cat + "/" + pn + "-" + ver
-                               else:
-                                       cpv = cat + "/" + pn + "-" + ver + "-" + rev
-                               cpv_list[i] = cpv
+                       for i, mysplit in enumerate(cpv_list):
+                               cpv_list[i] = str_map[mysplit]
 
        def cpv_all(self):
                cpv_list = []