For bug #184806, account for the fact the metadata is not cached for slot_collision_n...
authorZac Medico <zmedico@gentoo.org>
Tue, 10 Jul 2007 17:28:04 +0000 (17:28 -0000)
committerZac Medico <zmedico@gentoo.org>
Tue, 10 Jul 2007 17:28:04 +0000 (17:28 -0000)
svn path=/main/branches/2.1.2/; revision=7215

bin/emerge
pym/portage.py

index b0310c2ad2f0e51f0d82e8cdc566de98176de3b4..451aa53b17f923c544a59c4646abf2f85cad561a 100755 (executable)
@@ -1756,6 +1756,9 @@ class depgraph:
                                # Update old-style virtuals if this package provides any.
                                # These are needed for dep_virtual calls inside dep_check.
                                p_db = self.mydbapi[p_root] # contains cached metadata
+                               if myparent in self._slot_collision_nodes:
+                                       # The metadata isn't cached due to the slot collision.
+                                       p_db = self.trees[p_root][self.pkg_tree_map[p_type]].dbapi
                                try:
                                        self.pkgsettings[p_root].setinst(p_key, p_db)
                                        # For consistency, also update the global virtuals.
@@ -2718,6 +2721,7 @@ class depgraph:
 
                for mylist_index in xrange(len(mylist)):
                        x, depth, ordered = mylist[mylist_index]
+                       pkg_node = tuple(x)
                        pkg_type = x[0]
                        myroot = x[1]
                        pkg_key = x[2]
@@ -2749,14 +2753,16 @@ class depgraph:
                                        addl += bad(" (is blocking %s)") % block_parents
                                blockers.append(addl)
                        else:
-                               mydbapi = self.trees[myroot][self.pkg_tree_map[pkg_type]].dbapi
                                pkg_status = x[3]
                                pkg_merge = ordered and pkg_status != "nomerge"
                                binary_package = pkg_type != "ebuild"
+                               if pkg_node in self._slot_collision_nodes:
+                                       # The metadata isn't cached due to the slot collision.
+                                       mydbapi = self.trees[myroot][self.pkg_tree_map[pkg_type]].dbapi
+                               else:
+                                       mydbapi = self.mydbapi[myroot] # contains cached metadata
                                metadata = dict(izip(self._mydbapi_keys,
-                                       self.mydbapi[myroot].aux_get(
-                                       pkg_key, self._mydbapi_keys)))
-                               mydbapi = self.mydbapi[myroot] # use the cached metadata
+                                       mydbapi.aux_get(pkg_key, self._mydbapi_keys)))
                                if pkg_key not in self.useFlags[myroot]:
                                        """If this is a --resume then the USE flags need to be
                                        fetched from the appropriate locations here."""
index 5c8731c7de454200083af86007cc62e766729341..57d58e5b8927e98f1d59b1cfe6687be03a862407 100644 (file)
@@ -1,5 +1,5 @@
-repo_name = open(repo_name_path# portage.py -- core Portage functionality
-# Copyright 1998-2004 Gentoo Foundation
+# portage.py -- core Portage functionality
+# Copyright 1998-2007 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 # $Id$