From 9d8b7c4fb69f6c4992263a3aee1486dc7f22537f Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Mon, 16 Oct 2006 21:34:10 +0000 Subject: Remove blocker nodes from the digraph prior to the merge order calculation so that they don't trigger false circular dependencies as reported in comment #17 of bug #151331. svn path=/main/trunk/; revision=4728 --- bin/emerge | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'bin') diff --git a/bin/emerge b/bin/emerge index 86bf640b0..ab5fe2fc1 100755 --- a/bin/emerge +++ b/bin/emerge @@ -1385,6 +1385,13 @@ class depgraph: def altlist(self, reversed=False): mygraph=self.digraph.copy() + for node in self.blocker_digraph.root_nodes(): + """These nodes aren't needed for the merge order calculation. They + may be in the digraph for --tree support, but they need to be + removed prior to the merge order calculation so that they don't + trigger any false circular dependency issues.""" + if mygraph.contains(node): + mygraph.remove(node) myblockers = self.blocker_digraph.copy() retlist=[] circular_blocks = False @@ -1460,6 +1467,7 @@ class depgraph: for node in myblockers.root_nodes(): retlist.append(node.split()) for parent in self.blocker_parents[node]: + # Valid blockers need to be in the digraph for --tree support. self.digraph.add(node, parent) return retlist -- cgit v1.2.3-1-g7c22