summaryrefslogtreecommitdiffstats
path: root/bin
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2006-10-16 21:34:10 +0000
committerZac Medico <zmedico@gentoo.org>2006-10-16 21:34:10 +0000
commit9d8b7c4fb69f6c4992263a3aee1486dc7f22537f (patch)
treeb6478c56ea45bacb99e33e06764842b8e58a6249 /bin
parent15d5b303c2d314f912f68b8084b1793ebc993632 (diff)
downloadportage-9d8b7c4fb69f6c4992263a3aee1486dc7f22537f.tar.gz
portage-9d8b7c4fb69f6c4992263a3aee1486dc7f22537f.tar.bz2
portage-9d8b7c4fb69f6c4992263a3aee1486dc7f22537f.zip
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
Diffstat (limited to 'bin')
-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