Don't allow slot collision nodes to block other packages since blocker validation...
authorZac Medico <zmedico@gentoo.org>
Wed, 10 Jan 2007 23:46:57 +0000 (23:46 -0000)
committerZac Medico <zmedico@gentoo.org>
Wed, 10 Jan 2007 23:46:57 +0000 (23:46 -0000)
svn path=/main/trunk/; revision=5535

bin/emerge

index ffbb214f76eb50f499877f486778f740e02511d1..c7c43f4bdf5061b32ab62715436b4fef34894e53 100755 (executable)
@@ -1012,6 +1012,9 @@ class depgraph:
                self.blocker_digraph = digraph()
                self.blocker_parents = {}
                self._slot_collision_info = []
+               # Slot collision nodes are not allowed to block other packages since
+               # blocker validation is only able to account for one package per slot.
+               self._slot_collision_nodes = set()
                self._altlist_cache = {}
                self._pprovided_args = []
 
@@ -1095,7 +1098,8 @@ class depgraph:
                if mytype == "blocks":
                        if myparent and \
                                "--buildpkgonly" not in self.myopts and \
-                               "--nodeps" not in self.myopts:
+                               "--nodeps" not in self.myopts and \
+                               myparent not in self._slot_collision_nodes:
                                mybigkey[1] = myparent[1]
                                self.blocker_parents.setdefault(
                                        tuple(mybigkey), set()).add(myparent)
@@ -1189,6 +1193,7 @@ class depgraph:
                                                myparents.append(myparent)
                                        self._slot_collision_info.append(
                                                ((jbigkey, myparents), (existing_node, e_parents)))
+                                       self._slot_collision_nodes.add(jbigkey)
                                        slot_collision = True
 
                        if slot_collision: