summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbin/emerge8
1 files changed, 8 insertions, 0 deletions
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