From 2183277b1bb4c5324eb42e9f60c876b9f05b3b5e Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Tue, 5 Oct 2010 18:46:06 -0700 Subject: Optimize xmatch match-all-cpv-only for repo deps. --- pym/portage/dbapi/porttree.py | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) (limited to 'pym') 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)) -- cgit v1.2.3-1-g7c22