From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <gentoo-commits+bounces-542490-garchives=archives.gentoo.org@lists.gentoo.org> Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id 145A21382A0 for <garchives@archives.gentoo.org>; Fri, 4 Jan 2013 06:30:15 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 4061921C042; Fri, 4 Jan 2013 06:30:05 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 930F421C042 for <gentoo-commits@lists.gentoo.org>; Fri, 4 Jan 2013 06:30:04 +0000 (UTC) Received: from hornbill.gentoo.org (hornbill.gentoo.org [94.100.119.163]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 7361033D77F for <gentoo-commits@lists.gentoo.org>; Fri, 4 Jan 2013 06:30:02 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by hornbill.gentoo.org (Postfix) with ESMTP id EDEECE5446 for <gentoo-commits@lists.gentoo.org>; Fri, 4 Jan 2013 06:30:00 +0000 (UTC) From: "Zac Medico" <zmedico@gentoo.org> 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" <zmedico@gentoo.org> Message-ID: <1357280988.439151bb5b0bd2ac4c9d2dd218fe377ce0b988e6.zmedico@gentoo> Subject: [gentoo-commits] proj/portage:master commit in: bin/ X-VCS-Repository: proj/portage X-VCS-Files: bin/ebuild-ipc.py X-VCS-Directories: bin/ X-VCS-Committer: zmedico X-VCS-Committer-Name: Zac Medico X-VCS-Revision: 439151bb5b0bd2ac4c9d2dd218fe377ce0b988e6 X-VCS-Branch: master Date: Fri, 4 Jan 2013 06:30:00 +0000 (UTC) Precedence: bulk List-Post: <mailto:gentoo-commits@lists.gentoo.org> List-Help: <mailto:gentoo-commits+help@lists.gentoo.org> List-Unsubscribe: <mailto:gentoo-commits+unsubscribe@lists.gentoo.org> List-Subscribe: <mailto:gentoo-commits+subscribe@lists.gentoo.org> List-Id: Gentoo Linux mail <gentoo-commits.gentoo.org> X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: d28d5916-fb41-4fb4-897e-e993ed7dd148 X-Archives-Hash: 41f482564aba856748f3473bc6b12c30 commit: 439151bb5b0bd2ac4c9d2dd218fe377ce0b988e6 Author: Zac Medico <zmedico <AT> gentoo <DOT> org> AuthorDate: Fri Jan 4 06:29:48 2013 +0000 Commit: Zac Medico <zmedico <AT> gentoo <DOT> org> CommitDate: Fri Jan 4 06:29:48 2013 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=439151bb ebuild-ipc: use PipeReader in _wait --- bin/ebuild-ipc.py | 30 +++++++++++++++--------------- 1 files changed, 15 insertions(+), 15 deletions(-) diff --git a/bin/ebuild-ipc.py b/bin/ebuild-ipc.py index 52ea05c..e91c69c 100755 --- a/bin/ebuild-ipc.py +++ b/bin/ebuild-ipc.py @@ -41,6 +41,9 @@ import portage portage._internal_caller = True portage._disable_legacy_globals() +from portage.util._eventloop.global_event_loop import global_event_loop +from _emerge.PipeReader import PipeReader + class EbuildIpc(object): # Timeout for each individual communication attempt (we retry @@ -99,23 +102,22 @@ class EbuildIpc(object): start_time = time.time() - while True: - try: - events = select.select([pr], [], [], - self._COMMUNICATE_RETRY_TIMEOUT_SECONDS) - except select.error as e: - portage.util.writemsg_level( - "ebuild-ipc: %s: %s\n" % \ - (portage.localization._('during select'), e), - level=logging.ERROR, noiselevel=-1) - continue + pipe_reader = PipeReader(input_files={"pipe_read":pr}, + scheduler=global_event_loop()) + pipe_reader.start() - if events[0]: - break + eof = pipe_reader.poll() is not None + + while not eof: + pipe_reader.scheduler.iteration() - if self._daemon_is_alive(): + eof = pipe_reader.poll() is not None + if eof: + break + elif self._daemon_is_alive(): self._timeout_retry_msg(start_time, msg) else: + pipe_reader.cancel() self._no_daemon_msg() try: os.kill(pid, signal.SIGKILL) @@ -258,7 +260,6 @@ class EbuildIpc(object): msg = portage.localization._('during write') retval = self._wait(pid, pr, msg) - os.close(pr) if retval != os.EX_OK: portage.util.writemsg_level( @@ -288,7 +289,6 @@ class EbuildIpc(object): os.close(pw) retval = self._wait(pid, pr, portage.localization._('during read')) - os.close(pr) os.close(input_fd) return retval