summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2008-11-09 22:18:21 +0000
committerZac Medico <zmedico@gentoo.org>2008-11-09 22:18:21 +0000
commit8429cad5332f22cc6c80cad87bc532508371916e (patch)
treedc559c677977aff20a1d027eb152b6243c4bd813
parentda8db0b8189d038fbda86b002343c33247e0b6ee (diff)
downloadportage-8429cad5332f22cc6c80cad87bc532508371916e.tar.gz
portage-8429cad5332f22cc6c80cad87bc532508371916e.tar.bz2
portage-8429cad5332f22cc6c80cad87bc532508371916e.zip
Inside Scheduler._reverse_uninstall_edges(), iover 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. 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
-rw-r--r--pym/_emerge/__init__.py5
1 files changed, 4 insertions, 1 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py
index c2384234c..804afb3f7 100644
--- a/pym/_emerge/__init__.py
+++ b/pym/_emerge/__init__.py
@@ -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