From 75907929be736e2d4cf088d8d9861f2666e59557 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Sat, 24 Sep 2011 13:58:16 -0700 Subject: 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. --- bin/repoman | 2 +- 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: -- cgit v1.2.3-1-g7c22