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