summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2007-11-03 16:34:23 +0000
committerZac Medico <zmedico@gentoo.org>2007-11-03 16:34:23 +0000
commitbac6bc9e839aabce20d35b49d6710b264c55391c (patch)
treeaaa82a20b77d7b53b1ce06a8adec110565150bac
parent0fd192fcbb302959fbc065dd7a9e1963dbe6785f (diff)
downloadportage-bac6bc9e839aabce20d35b49d6710b264c55391c.tar.gz
portage-bac6bc9e839aabce20d35b49d6710b264c55391c.tar.bz2
portage-bac6bc9e839aabce20d35b49d6710b264c55391c.zip
Bug #197932 - Make dbapi._cpv_sort_ascending()
preserve explicit -r0 for consistency in findname and aux_get calls. svn path=/main/trunk/; revision=8390
-rw-r--r--pym/portage/dbapi/__init__.py19
1 files changed, 10 insertions, 9 deletions
diff --git a/pym/portage/dbapi/__init__.py b/pym/portage/dbapi/__init__.py
index 0bec4cce5..90e4ca779 100644
--- a/pym/portage/dbapi/__init__.py
+++ b/pym/portage/dbapi/__init__.py
@@ -30,16 +30,17 @@ class dbapi(object):
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):
"""Return all CPVs in the db