From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 0DD731382C5 for ; Mon, 30 Apr 2018 06:29:30 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 1ED01E0BE9; Mon, 30 Apr 2018 06:29:29 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id EC251E0BEB for ; Mon, 30 Apr 2018 06:29:28 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id E863E335C99 for ; Mon, 30 Apr 2018 06:29:27 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 33DB32A3 for ; Mon, 30 Apr 2018 06:29:26 +0000 (UTC) From: "Zac Medico" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Zac Medico" Message-ID: <1525069201.e1145930e94db753e29330a54e24b0814bd6c80c.zmedico@gentoo> Subject: [gentoo-commits] proj/portage:master commit in: pym/_emerge/ X-VCS-Repository: proj/portage X-VCS-Files: pym/_emerge/EbuildMetadataPhase.py X-VCS-Directories: pym/_emerge/ X-VCS-Committer: zmedico X-VCS-Committer-Name: Zac Medico X-VCS-Revision: e1145930e94db753e29330a54e24b0814bd6c80c X-VCS-Branch: master Date: Mon, 30 Apr 2018 06:29:26 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: 82c3b1d5-14de-46f2-ae7a-ced713781b4f X-Archives-Hash: e879d2319cd9b078d9202ccd92d7ae5c commit: e1145930e94db753e29330a54e24b0814bd6c80c Author: Zac Medico gentoo org> AuthorDate: Mon Apr 30 03:22:46 2018 +0000 Commit: Zac Medico gentoo org> CommitDate: Mon Apr 30 06:20:01 2018 +0000 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=e1145930 EbuildMetadataPhase: add_reader asyncio compat (bug 654382) Use add_reader for asyncio compatibility. Bug: https://bugs.gentoo.org/654382 pym/_emerge/EbuildMetadataPhase.py | 31 ++++++++++++------------------- 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/pym/_emerge/EbuildMetadataPhase.py b/pym/_emerge/EbuildMetadataPhase.py index 7a5310b83..42bcd6739 100644 --- a/pym/_emerge/EbuildMetadataPhase.py +++ b/pym/_emerge/EbuildMetadataPhase.py @@ -15,7 +15,6 @@ from portage import _unicode_encode from portage.dep import extract_unpack_dependencies from portage.eapi import eapi_has_automatic_unpack_dependencies -import errno import fcntl import io @@ -109,8 +108,7 @@ class EbuildMetadataPhase(SubProcess): self._raw_metadata = [] files.ebuild = master_fd - self._reg_id = self.scheduler.io_add_watch(files.ebuild, - self._registered_events, self._output_handler) + self.scheduler.add_reader(files.ebuild, self._output_handler) self._registered = True retval = portage.doebuild(ebuild_path, "depend", @@ -130,19 +128,14 @@ class EbuildMetadataPhase(SubProcess): self.pid = retval[0] - def _output_handler(self, fd, event): - - if event & self.scheduler.IO_IN: - while True: - try: - self._raw_metadata.append( - os.read(self._files.ebuild, self._bufsize)) - except OSError as e: - if e.errno not in (errno.EAGAIN,): - raise - break - else: - if not self._raw_metadata[-1]: + def _output_handler(self): + while True: + buf = self._read_buf(self._files.ebuild, None) + if buf is None: + break # EAGAIN + elif buf: + self._raw_metadata.append(buf) + else: # EIO/POLLHUP if self.pid is None: self._unregister() self._async_wait() @@ -150,9 +143,9 @@ class EbuildMetadataPhase(SubProcess): self._async_waitpid() break - self._unregister_if_appropriate(event) - - return True + def _unregister(self): + self.scheduler.remove_reader(self._files.ebuild) + SubProcess._unregister(self) def _async_waitpid_cb(self, *args, **kwargs): """