diff options
author | Zac Medico <zmedico@gentoo.org> | 2011-09-24 13:58:16 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2011-09-24 13:58:16 -0700 |
commit | 75907929be736e2d4cf088d8d9861f2666e59557 (patch) | |
tree | ef83dad5a0c00691596f2ecef7b695e5dcbe337f | |
parent | 5e587e1db10e38f003462f8171bd4d838cc095be (diff) | |
download | portage-75907929be736e2d4cf088d8d9861f2666e59557.tar.gz portage-75907929be736e2d4cf088d8d9861f2666e59557.tar.bz2 portage-75907929be736e2d4cf088d8d9861f2666e59557.zip |
portdbapi.xmatch: optimize minimum-visible
Also, make repoman cache IUSE, since that's required for _match_use to
work effciently. This will eliminate lots of redundant aux_get calls
for repoman, triggered by USE deps.
-rwxr-xr-x | bin/repoman | 2 | ||||
-rw-r--r-- | pym/portage/dbapi/porttree.py | 14 |
2 files changed, 5 insertions, 11 deletions
diff --git a/bin/repoman b/bin/repoman index 85c9c1785..184c5ef2c 100755 --- a/bin/repoman +++ b/bin/repoman @@ -627,7 +627,7 @@ root_config = RootConfig(repoman_settings, trees[root], None) # We really only need to cache the metadata that's necessary for visibility # filtering. Anything else can be discarded to reduce memory consumption. portdb._aux_cache_keys.clear() -portdb._aux_cache_keys.update(["EAPI", "KEYWORDS", "SLOT"]) +portdb._aux_cache_keys.update(["EAPI", "IUSE", "KEYWORDS", "SLOT"]) reposplit = myreporoot.split(os.path.sep) repolevel = len(reposplit) diff --git a/pym/portage/dbapi/porttree.py b/pym/portage/dbapi/porttree.py index 42e5ca168..782cecccc 100644 --- a/pym/portage/dbapi/porttree.py +++ b/pym/portage/dbapi/porttree.py @@ -957,16 +957,10 @@ class portdbapi(dbapi): mydep.slot != metadata["SLOT"]: continue - if mydep.use is not None: - mydep_with_repo = mydep - if repo is not None and mydep.repo is None: - mydep_with_repo = mydep.with_repo(repo) - has_iuse = False - for has_iuse in self._iter_match_use( - mydep_with_repo, [cpv]): - break - if has_iuse is False: - continue + if mydep.unevaluated_atom.use is not None and \ + not self._match_use(mydep, cpv, metadata): + continue + myval = cpv break if myval: |