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.
# 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)
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: