commit: ac9184e0b0445a9294ae47f71abe7117799a4577 Author: Zac Medico <zmedico <AT> gentoo <DOT> org> AuthorDate: Wed Jun 24 05:11:53 2020 +0000 Commit: Zac Medico <zmedico <AT> gentoo <DOT> org> CommitDate: Wed Jun 24 05:30:54 2020 +0000 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=ac9184e0
SpawnProcess._async_wait: allow _main_task to exit normally Unnecessary cancellation of _main_task triggered this ResourceWarning for the ebuild(1) fetch command, since it prevented cleanup of BuildLogger's internal PipeLogger instance: sys:1: ResourceWarning: unclosed file <_io.FileIO name=10 mode='rb' closefd=True> Signed-off-by: Zac Medico <zmedico <AT> gentoo.org> lib/_emerge/SpawnProcess.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lib/_emerge/SpawnProcess.py b/lib/_emerge/SpawnProcess.py index f96911571..60239a65a 100644 --- a/lib/_emerge/SpawnProcess.py +++ b/lib/_emerge/SpawnProcess.py @@ -172,12 +172,23 @@ class SpawnProcess(SubProcess): raise def _main_exit(self, main_task): + self._main_task = None try: main_task.result() except asyncio.CancelledError: self.cancel() self._async_waitpid() + def _async_wait(self): + # Allow _main_task to exit normally rather than via cancellation. + if self._main_task is None: + super(SpawnProcess, self)._async_wait() + + def _async_waitpid(self): + # Allow _main_task to exit normally rather than via cancellation. + if self._main_task is None: + super(SpawnProcess, self)._async_waitpid() + def _can_log(self, slave_fd): return True