diff options
author | Zac Medico <zmedico@gentoo.org> | 2007-05-07 02:29:05 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2007-05-07 02:29:05 +0000 |
commit | fa22b44819621506723a56870873f6bc2a371c33 (patch) | |
tree | f2cb7693f5d48f3f9221fa56cbedc0ce9ab35bfa | |
parent | a19511798f8e34ac464b8972cf70cc8de79f7176 (diff) | |
download | portage-fa22b44819621506723a56870873f6bc2a371c33.tar.gz portage-fa22b44819621506723a56870873f6bc2a371c33.tar.bz2 portage-fa22b44819621506723a56870873f6bc2a371c33.zip |
Prevent blockers that are only partially resolvable by merge order from accidentally being ignored.
svn path=/main/trunk/; revision=6494
-rw-r--r-- | pym/emerge/__init__.py | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/pym/emerge/__init__.py b/pym/emerge/__init__.py index f38ca1b40..4d3f32e76 100644 --- a/pym/emerge/__init__.py +++ b/pym/emerge/__init__.py @@ -977,6 +977,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. @@ -1977,6 +1978,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. @@ -2163,7 +2167,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, |