summaryrefslogtreecommitdiffstats
path: root/pym/_emerge/Scheduler.py
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2011-03-16 21:50:36 -0700
committerZac Medico <zmedico@gentoo.org>2011-03-18 12:48:53 -0700
commit379b1e85b516ca17f0f220ec8ac9b9997a2b8c22 (patch)
treeee8117606f5ca1a63d2fab3a1dd0f7bbd1e5b2bc /pym/_emerge/Scheduler.py
parentef507665cb7b3fe697126f75e794025edf3f03eb (diff)
downloadportage-379b1e85b516ca17f0f220ec8ac9b9997a2b8c22.tar.gz
portage-379b1e85b516ca17f0f220ec8ac9b9997a2b8c22.tar.bz2
portage-379b1e85b516ca17f0f220ec8ac9b9997a2b8c22.zip
Scheduler: tweak prefetcher cancellation logic
This should prevent "TypeError: an integer is required" raised from waitpid when trying to cancel a prefetcher that never started.
Diffstat (limited to 'pym/_emerge/Scheduler.py')
-rw-r--r--pym/_emerge/Scheduler.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/pym/_emerge/Scheduler.py b/pym/_emerge/Scheduler.py
index b5b258d4a..5d190428f 100644
--- a/pym/_emerge/Scheduler.py
+++ b/pym/_emerge/Scheduler.py
@@ -1819,6 +1819,14 @@ class Scheduler(PollScheduler):
"installed", pkg.root_config, installed=True,
operation="uninstall")
+ prefetcher = self._prefetchers.pop(pkg, None)
+ if prefetcher is not None and not prefetcher.isAlive():
+ try:
+ self._task_queues.fetch._task_queue.remove(prefetcher)
+ except ValueError:
+ pass
+ prefetcher = None
+
task = MergeListItem(args_set=self._args_set,
background=self._background, binpkg_opts=self._binpkg_opts,
build_opts=self._build_opts,
@@ -1828,7 +1836,7 @@ class Scheduler(PollScheduler):
find_blockers=self._find_blockers(pkg), logger=self._logger,
mtimedb=self._mtimedb, pkg=pkg, pkg_count=self._pkg_count.copy(),
pkg_to_replace=pkg_to_replace,
- prefetcher=self._prefetchers.get(pkg),
+ prefetcher=prefetcher,
scheduler=self._sched_iface,
settings=self._allocate_config(pkg.root),
statusMessage=self._status_msg,