aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/_emerge')
-rw-r--r--lib/_emerge/EbuildFetcher.py12
1 files changed, 4 insertions, 8 deletions
diff --git a/lib/_emerge/EbuildFetcher.py b/lib/_emerge/EbuildFetcher.py
index 55349c33c..107a6d590 100644
--- a/lib/_emerge/EbuildFetcher.py
+++ b/lib/_emerge/EbuildFetcher.py
@@ -364,16 +364,11 @@ class _EbuildFetcherProcess(ForkProcess):
if msg:
self.scheduler.output(msg, log_path=self.logfile)
- def _async_waitpid_cb(self, *args, **kwargs):
+ def _proc_join_done(self, proc, future):
"""
- Override _async_waitpid_cb to perform cleanup that is
- not necessarily idempotent.
+ Extend _proc_join_done to emit an eerror message for fetch failure.
"""
- ForkProcess._async_waitpid_cb(self, *args, **kwargs)
- # Collect elog messages that might have been
- # created by the pkg_nofetch phase.
- # Skip elog messages for prefetch, in order to avoid duplicates.
- if not self.prefetch and self.returncode != os.EX_OK:
+ if not self.prefetch and not future.cancelled() and proc.exitcode != os.EX_OK:
msg_lines = []
msg = "Fetch failed for '%s'" % (self.pkg.cpv,)
if self.logfile is not None:
@@ -382,3 +377,4 @@ class _EbuildFetcherProcess(ForkProcess):
if self.logfile is not None:
msg_lines.append(" '%s'" % (self.logfile,))
self._eerror(msg_lines)
+ super(_EbuildFetcherProcess, self)._proc_join_done(proc, future)