Properly exclude old-style virtuals from the
authorZac Medico <zmedico@gentoo.org>
Fri, 12 Oct 2007 06:25:26 +0000 (06:25 -0000)
committerZac Medico <zmedico@gentoo.org>
Fri, 12 Oct 2007 06:25:26 +0000 (06:25 -0000)
portdbapi.cp_list() cache. (trunk r8010)

svn path=/main/branches/2.1.2/; revision=8068

pym/portage.py

index 3edc5296a2b8e0581d886803af09a2bc861fe682..b7ca0a4a433c79ea34096b887c3c1963384bf34c 100644 (file)
@@ -6479,7 +6479,8 @@ class portdbapi(dbapi):
        def cp_list(self, mycp, use_cache=1, mytree=None):
                if self.frozen and mytree is None:
                        mylist = self.xcache["match-all"].get(mycp)
-                       if mylist is not None:
+                       # cp_list() doesn't expand old-style virtuals
+                       if mylist and mylist[0].startswith(mycp):
                                return mylist[:]
                mysplit = mycp.split("/")
                invalid_category = mysplit[0] not in self._categories
@@ -6505,7 +6506,8 @@ class portdbapi(dbapi):
                else:
                        mylist = d.keys()
                if self.frozen and mytree is None:
-                       self.xcache["match-all"][mycp] = mylist[:]
+                       if not (not mylist and mycp.startswith("virtual/")):
+                               self.xcache["match-all"][mycp] = mylist[:]
                return mylist
 
        def freeze(self):