From 16c494ec54475a4339e93e2c4e4447d5f9f5e029 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Sat, 10 May 2008 08:35:22 +0000 Subject: When selecting leaf nodes, if there is a mix of merge and uninstall nodes, save the uninstall nodes from later since sometimes a merge node will render an install node unnecessary, and we want to avoid doing a separate uninstall task in that case. svn path=/main/trunk/; revision=10279 --- pym/_emerge/__init__.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'pym') diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py index 15e57047e..a18f5255b 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -3712,8 +3712,18 @@ class depgraph(object): if ignore_priority is None and not tree_mode: # Greedily pop all of these nodes since no relationship # has been ignored. This optimization destroys --tree - # output, so it's disabled in reversed mode. - selected_nodes = nodes + # output, so it's disabled in reversed mode. If there + # is a mix of merge and uninstall nodes, save the + # uninstall nodes from later since sometimes a merge + # node will render an install node unnecessary, and + # we want to avoid doing a separate uninstall task in + # that case. + merge_nodes = [node for node in nodes \ + if node.operation == "merge"] + if merge_nodes: + selected_nodes = merge_nodes + else: + selected_nodes = nodes else: # For optimal merge order: # * Only pop one node. -- cgit v1.2.3-1-g7c22