Properly exclude old-style virtuals from the portdbapi.cp_list() cache.
authorZac Medico <zmedico@gentoo.org>
Tue, 9 Oct 2007 09:26:49 +0000 (09:26 -0000)
committerZac Medico <zmedico@gentoo.org>
Tue, 9 Oct 2007 09:26:49 +0000 (09:26 -0000)
svn path=/main/trunk/; revision=8010

pym/portage/dbapi/porttree.py

index d47f6fd9d94c5d1edfd88c19f6e92fbc590278f1..d6fd4a17213fb3c841baa657dd0dc4f8cb991fc8 100644 (file)
@@ -501,7 +501,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
@@ -527,7 +528,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):