From c4cf6ac4bc08680d5428ec00d105d544ef839bcd Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Mon, 7 May 2007 02:30:10 +0000 Subject: Prevent blockers that are only partially resolvable by merge order from accidentally being ignored. (trunk r6493:6494) svn path=/main/branches/2.1.2/; revision=6495 --- bin/emerge | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'bin') diff --git a/bin/emerge b/bin/emerge index 01506e08c..9ae6dd10e 100755 --- a/bin/emerge +++ b/bin/emerge @@ -975,6 +975,7 @@ class depgraph: self.args_keys = [] self.blocker_digraph = digraph() self.blocker_parents = {} + self._unresolved_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. @@ -1943,6 +1944,9 @@ class depgraph: self.blocker_digraph.addnode(node, blocker) if not unresolved_blocks and not depends_on_order: self.blocker_parents[blocker].remove(parent) + if unresolved_blocks: + self._unresolved_blocker_parents.setdefault( + blocker, set()).add(parent) if not self.blocker_parents[blocker]: del self.blocker_parents[blocker] # Validate blockers that depend on merge order. @@ -2129,7 +2133,12 @@ class depgraph: for blocker in myblockers.root_nodes(): if not myblockers.child_nodes(blocker): myblockers.remove(blocker) - del self.blocker_parents[blocker] + unresolved = \ + self._unresolved_blocker_parents.get(blocker) + if unresolved: + self.blocker_parents[blocker] = unresolved + else: + del self.blocker_parents[blocker] if not reversed: """Blocker validation does not work with reverse mode, -- cgit v1.2.3-1-g7c22