diff options
author | Zac Medico <zmedico@gentoo.org> | 2006-10-16 21:34:10 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2006-10-16 21:34:10 +0000 |
commit | 9d8b7c4fb69f6c4992263a3aee1486dc7f22537f (patch) | |
tree | b6478c56ea45bacb99e33e06764842b8e58a6249 | |
parent | 15d5b303c2d314f912f68b8084b1793ebc993632 (diff) | |
download | portage-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
-rwxr-xr-x | bin/emerge | 8 |
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 |