From: Zac Medico Date: Wed, 6 Oct 2010 01:46:06 +0000 (-0700) Subject: Optimize xmatch match-all-cpv-only for repo deps. X-Git-Tag: v2.2_rc90~15 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=2183277b1bb4c5324eb42e9f60c876b9f05b3b5e;p=portage.git Optimize xmatch match-all-cpv-only for repo deps. --- 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))