summaryrefslogtreecommitdiffstats
path: root/pym/_emerge
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2007-10-28 07:26:24 +0000
committerZac Medico <zmedico@gentoo.org>2007-10-28 07:26:24 +0000
commit4ac207ffc70bb84a74d0b11d80864c5cdfa2ad32 (patch)
tree6dae73b638d9c844d6df3d20e69ca74979f28a9d /pym/_emerge
parent2641d1772d8170f788d6ce8586b1f97a4506f04b (diff)
downloadportage-4ac207ffc70bb84a74d0b11d80864c5cdfa2ad32.tar.gz
portage-4ac207ffc70bb84a74d0b11d80864c5cdfa2ad32.tar.bz2
portage-4ac207ffc70bb84a74d0b11d80864c5cdfa2ad32.zip
Sort all dbapi.cp_list() results in ascending order and
cache the results when possible. The order is preserved in dbapi.match() so those results are also sorted. svn path=/main/trunk/; revision=8329
Diffstat (limited to 'pym/_emerge')
-rw-r--r--pym/_emerge/__init__.py26
1 files changed, 6 insertions, 20 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py
index e5ac45cd5..a5d6f88fc 100644
--- a/pym/_emerge/__init__.py
+++ b/pym/_emerge/__init__.py
@@ -827,23 +827,6 @@ def perform_global_updates(mycpv, mydb, mycommands):
if updates:
mydb.aux_update(mycpv, updates)
-def cpv_sort_descending(cpv_list):
- """Sort in place, returns None."""
- if len(cpv_list) <= 1:
- return
- first_split = portage.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] = portage.catpkgsplit(cpv_list[i])[1:]
- cpv_list.sort(portage.pkgcmp, reverse=True)
- 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
-
def visible(pkgsettings, cpv, metadata, built=False, installed=False):
"""
Check if a package is visible. This can raise an InvalidDependString
@@ -1873,7 +1856,8 @@ class depgraph(object):
# we have to try all of them to prevent the old-style
# virtuals from overriding available new-styles.
continue
- cpv_sort_descending(cpv_list)
+ # descending order
+ cpv_list.reverse()
for cpv in cpv_list:
if filtered_db.cpv_exists(cpv):
continue
@@ -1984,7 +1968,8 @@ class depgraph(object):
cpv_list = db.xmatch("match-all", atom)
else:
cpv_list = db.match(atom)
- cpv_sort_descending(cpv_list)
+ # descending order
+ cpv_list.reverse()
for cpv in cpv_list:
try:
metadata = dict(izip(db_keys,
@@ -2098,7 +2083,8 @@ class depgraph(object):
cpv_list = db.xmatch("match-all", atom)
else:
cpv_list = db.match(atom)
- cpv_sort_descending(cpv_list)
+ # descending order
+ cpv_list.reverse()
for cpv in cpv_list:
reinstall_for_flags = None
try: