For bug #167450, optimize merge order by delaying the merge of root nodes. (trunk...
authorZac Medico <zmedico@gentoo.org>
Sun, 18 Feb 2007 20:46:27 +0000 (20:46 -0000)
committerZac Medico <zmedico@gentoo.org>
Sun, 18 Feb 2007 20:46:27 +0000 (20:46 -0000)
svn path=/main/branches/2.1.2/; revision=5997

bin/emerge

index 593528542ffb7654d773dd7e2a51821b0283f203..8f4f257128cc48f6fb779ec28b39ea57ae6a2ec9 100755 (executable)
@@ -2021,8 +2021,18 @@ class depgraph:
                                                # output, so it's disabled in reversed mode.
                                                selected_nodes = nodes
                                        else:
-                                               # Only pop one node for optimal merge order.
-                                               selected_nodes = [nodes[0]]
+                                               # For optimal merge order:
+                                               #  * Only pop one node.
+                                               #  * Removing a root node (node without a parent)
+                                               #    will not produce a leaf node, so avoid it.
+                                               for node in nodes:
+                                                       if mygraph.parent_nodes(node):
+                                                               # found a non-root node
+                                                               selected_nodes = [node]
+                                                               break
+                                               if not selected_nodes:
+                                                       # settle for a root node
+                                                       selected_nodes = [nodes[0]]
                                else:
                                        """Recursively gather a group of nodes that RDEPEND on
                                        eachother.  This ensures that they are merged as a group