summaryrefslogtreecommitdiffstats
path: root/pym/_emerge
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-03-11 05:57:06 +0000
committerZac Medico <zmedico@gentoo.org>2009-03-11 05:57:06 +0000
commit28355b368a48e1da35921fc347b5347b782a3094 (patch)
treebca632c96311242b9b8c1a925713532d912cf80d /pym/_emerge
parent0ff34642ad42905cf9d28b39a12aa6d359f8fbca (diff)
downloadportage-28355b368a48e1da35921fc347b5347b782a3094.tar.gz
portage-28355b368a48e1da35921fc347b5347b782a3094.tar.bz2
portage-28355b368a48e1da35921fc347b5347b782a3094.zip
Optimize depgraph._dep_expand() to avoid calling pordbapi.cp_all(),
since it can be more efficient to call cp_list() on each category. Thanks to Marat Radchenko <slonopotamusorama@gmail.com> for the suggestion. (trunk r12653) svn path=/main/branches/2.1.6/; revision=12921
Diffstat (limited to 'pym/_emerge')
-rw-r--r--pym/_emerge/__init__.py21
1 files changed, 6 insertions, 15 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py
index f5505d85a..b2e5c37fc 100644
--- a/pym/_emerge/__init__.py
+++ b/pym/_emerge/__init__.py
@@ -5258,23 +5258,14 @@ class depgraph(object):
cat, atom_pn = portage.catsplit(null_cp)
dbs = self._filtered_trees[root_config.root]["dbs"]
- cp_set = set()
+ categories = set()
for db, pkg_type, built, installed, db_keys in dbs:
- cp_set.update(db.cp_all())
- for cp in list(cp_set):
- cat, pn = portage.catsplit(cp)
- if pn != atom_pn:
- cp_set.discard(cp)
+ for cat in db.categories:
+ if db.cp_list("%s/%s" % (cat, atom_pn)):
+ categories.add(cat)
+
deps = []
- for cp in cp_set:
- have_pkg = False
- for db, pkg_type, built, installed, db_keys in dbs:
- if db.cp_list(cp):
- have_pkg = True
- break
- if not have_pkg:
- continue
- cat, pn = portage.catsplit(cp)
+ for cat in categories:
deps.append(insert_category_into_atom(
atom_without_category, cat))
return deps