commit: c14ac733a4e05990973d99e13f19aaf9bde57bcb Author: Zac Medico <zmedico <AT> gentoo <DOT> org> AuthorDate: Wed Jul 22 20:16:42 2020 +0000 Commit: Zac Medico <zmedico <AT> gentoo <DOT> org> CommitDate: Wed Jul 22 20:20:11 2020 +0000 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=c14ac733
_EbuildFetcherProcess: emit eerror for fetch failure in _proc_join_done Since ForkProcess now receives process exit status in the _proc_join_done method instead of the _async_waitpid_cb method, _EbuildFetcherProcess needs to emit eerror messages there instead. Fixes: bde44b75407d ("ForkProcess: replace os.fork with multiprocessing.Process (bug 730192)") Bug: https://bugs.gentoo.org/730192 Signed-off-by: Zac Medico <zmedico <AT> gentoo.org> lib/_emerge/EbuildFetcher.py | 12 ++++-------- 1 file 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)