diff options
author | Zac Medico <zmedico@gentoo.org> | 2009-03-11 05:57:06 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2009-03-11 05:57:06 +0000 |
commit | 28355b368a48e1da35921fc347b5347b782a3094 (patch) | |
tree | bca632c96311242b9b8c1a925713532d912cf80d /pym/_emerge | |
parent | 0ff34642ad42905cf9d28b39a12aa6d359f8fbca (diff) | |
download | portage-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__.py | 21 |
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 |