summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2007-01-10 23:46:57 +0000
committerZac Medico <zmedico@gentoo.org>2007-01-10 23:46:57 +0000
commit0421f17a9f6bacf90210ee4fe14d63399cc5e968 (patch)
tree57ec09bc24528c2bb037711e2bd87466fe94fee0
parent21dce179d858c6c71216ce6670cbc236dbe1d319 (diff)
downloadportage-0421f17a9f6bacf90210ee4fe14d63399cc5e968.tar.gz
portage-0421f17a9f6bacf90210ee4fe14d63399cc5e968.tar.bz2
portage-0421f17a9f6bacf90210ee4fe14d63399cc5e968.zip
Don't allow slot collision nodes to block other packages since blocker validation is only able to account for one package per slot.
svn path=/main/trunk/; revision=5535
-rwxr-xr-xbin/emerge7
1 files changed, 6 insertions, 1 deletions
diff --git a/bin/emerge b/bin/emerge
index ffbb214f7..c7c43f4bd 100755
--- a/bin/emerge
+++ b/bin/emerge
@@ -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: