Inside Scheduler._reverse_uninstall_edges(), iover all nodes rather than just
authorZac Medico <zmedico@gentoo.org>
Sun, 9 Nov 2008 22:18:21 +0000 (22:18 -0000)
committerZac Medico <zmedico@gentoo.org>
Sun, 9 Nov 2008 22:18:21 +0000 (22:18 -0000)
the merge list, because some uninstall nodes may not be in the merge list
since they will be performed as part of an upgrade within a slot. This solves
a problem with Scheduler._choose_pkg() not parallelizing in some cases when
it should, due to an uninstall node not having it's edge reversed like it's
supposed to.

svn path=/main/trunk/; revision=11839

pym/_emerge/__init__.py

index c2384234c327c0d8255181053802fe120f3dc379..804afb3f7ac4ba9e4314fb9238ac6055d454d374 100644 (file)
@@ -9271,7 +9271,10 @@ class Scheduler(PollScheduler):
 
                graph = self._digraph
 
-               for node in self._mergelist:
+               # Iterate over all nodes rather than just the merge list, because
+               # some uninstall nodes may not be in the merge list since they will
+               # be performed as part of an upgrade within a slot.
+               for node in graph.all_nodes():
                        if not isinstance(node, Package) or \
                                node.operation != "uninstall":
                                continue