diff options
author | Zac Medico <zmedico@gentoo.org> | 2007-06-13 21:48:27 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2007-06-13 21:48:27 +0000 |
commit | 63342f81ead58a11d80298f8d46f991e97411e05 (patch) | |
tree | 9e67eb9c6085521b8e7934b02820c01fd9101f94 /bin | |
parent | 99a2eab755150bc2427b644b786b15daeccd6cb5 (diff) | |
download | portage-63342f81ead58a11d80298f8d46f991e97411e05.tar.gz portage-63342f81ead58a11d80298f8d46f991e97411e05.tar.bz2 portage-63342f81ead58a11d80298f8d46f991e97411e05.zip |
For bug #181953, prevent the circular_blocks code from selecting a node that's already been selected by the normal node selection process. (trunk r6837)
svn path=/main/branches/2.1.2/; revision=6838
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/emerge | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/bin/emerge b/bin/emerge index dee541b72..41d0220d5 100755 --- a/bin/emerge +++ b/bin/emerge @@ -2086,8 +2086,16 @@ class depgraph: if not circular_blocks: circular_blocks = True blocker_deps = myblockers.leaf_nodes() - if blocker_deps: - selected_nodes = [blocker_deps.pop()] + while blocker_deps: + # Some of these nodes might have already been selected + # by the normal node selection process after the + # circular_blocks flag has been set. Therefore, we + # have to verify that they're still in the graph so + # that they're not selected more than once. + node = blocker_deps.pop() + if mygraph.contains(node): + selected_nodes = [node] + break if not selected_nodes: # No leaf nodes are available, so we have a circular |