From: Zac Medico Date: Sat, 24 Sep 2011 20:58:16 +0000 (-0700) Subject: portdbapi.xmatch: optimize minimum-visible X-Git-Tag: v2.2.0_alpha60~20 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=75907929be736e2d4cf088d8d9861f2666e59557;p=portage.git 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. --- 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: