summaryrefslogtreecommitdiffstats
path: root/pym
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-03-11 07:44:27 +0000
committerZac Medico <zmedico@gentoo.org>2009-03-11 07:44:27 +0000
commit34dad043f92c1107f5999c0b4bba57d77c5cbcbb (patch)
tree950840662b8bfebe588636ea4a1bd4929e17ac48 /pym
parent60a2919b5d2b035ee0036de27bfa7aca4796e364 (diff)
downloadportage-34dad043f92c1107f5999c0b4bba57d77c5cbcbb.tar.gz
portage-34dad043f92c1107f5999c0b4bba57d77c5cbcbb.tar.bz2
portage-34dad043f92c1107f5999c0b4bba57d77c5cbcbb.zip
Optimize dbapi._cpv_sort_ascending() by calling vercmp directly instead of
calling pkgcmp. (trunk r12815) svn path=/main/branches/2.1.6/; revision=13047
Diffstat (limited to 'pym')
-rw-r--r--pym/portage/dbapi/__init__.py16
1 files changed, 7 insertions, 9 deletions
diff --git a/pym/portage/dbapi/__init__.py b/pym/portage/dbapi/__init__.py
index 6bea1e5d3..9956d0999 100644
--- a/pym/portage/dbapi/__init__.py
+++ b/pym/portage/dbapi/__init__.py
@@ -13,7 +13,7 @@ portage.proxy.lazyimport.lazyimport(globals(),
'portage.locks:unlockfile',
'portage.output:colorize',
'portage.util:cmp_sort_key,writemsg',
- 'portage.versions:catpkgsplit,pkgcmp',
+ 'portage.versions:catpkgsplit,vercmp',
)
from portage import auxdbkeys, dep_expand
@@ -60,14 +60,12 @@ class dbapi(object):
# 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(key=cmp_sort_key(pkgcmp))
- for i, mysplit in enumerate(cpv_list):
- cpv_list[i] = str_map[mysplit]
+ ver_map = {}
+ for cpv in cpv_list:
+ ver_map[cpv] = '-'.join(catpkgsplit(cpv)[2:])
+ def cmp_cpv(cpv1, cpv2):
+ return vercmp(ver_map[cpv1], ver_map[cpv2])
+ cpv_list.sort(key=cmp_sort_key(cmp_cpv))
def cpv_all(self):
"""Return all CPVs in the db