summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pym/portage/dbapi/porttree.py24
1 files changed, 17 insertions, 7 deletions
diff --git a/pym/portage/dbapi/porttree.py b/pym/portage/dbapi/porttree.py
index 2d515e07c..4f700b1bd 100644
--- a/pym/portage/dbapi/porttree.py
+++ b/pym/portage/dbapi/porttree.py
@@ -787,13 +787,23 @@ class portdbapi(dbapi):
# match *all* packages, only against the cpv, in order
# to bypass unecessary cache access for things like IUSE
# and SLOT.
- if mydep == mykey:
- # Share cache with match-all/cp_list
- # when the result is the same.
- level = "match-all"
- myval = self.cp_list(mykey)
- else:
- myval = match_from_list(mydep, self.cp_list(mykey))
+ myval = None
+ mytree = None
+ if mydep.repo is not None:
+ mytree = self.treemap.get(mydep.repo)
+ if mytree is None:
+ myval = []
+
+ if myval is None:
+ if mydep == mykey:
+ # Share cache with match-all/cp_list
+ # when the result is the same.
+ level = "match-all"
+ myval = self.cp_list(mykey, mytree=mytree)
+ else:
+ myval = match_from_list(mydep,
+ self.cp_list(mykey, mytree=mytree))
+
elif level == "list-visible":
#a list of all visible packages, not called directly (just by xmatch())
#myval = self.visible(self.cp_list(mykey))