From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <gentoo-commits+bounces-526327-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 B157C1381F3
	for <garchives@archives.gentoo.org>; Thu, 22 Nov 2012 12:24:00 +0000 (UTC)
Received: from pigeon.gentoo.org (localhost [127.0.0.1])
	by pigeon.gentoo.org (Postfix) with SMTP id 0EB6A21C018;
	Thu, 22 Nov 2012 12:23:50 +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 8C6EE21C018
	for <gentoo-commits@lists.gentoo.org>; Thu, 22 Nov 2012 12:23:50 +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 751B633D8E5
	for <gentoo-commits@lists.gentoo.org>; Thu, 22 Nov 2012 12:23:49 +0000 (UTC)
Received: from localhost.localdomain (localhost [127.0.0.1])
	by hornbill.gentoo.org (Postfix) with ESMTP id B8E52E5436
	for <gentoo-commits@lists.gentoo.org>; Thu, 22 Nov 2012 12:23:46 +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: <1353587000.4cc3db2b37e3a0ee123f9c9c81aba56be543b383.zmedico@gentoo>
Subject: [gentoo-commits] proj/portage:master commit in: pym/portage/util/_eventloop/
X-VCS-Repository: proj/portage
X-VCS-Files: pym/portage/util/_eventloop/EventLoop.py
X-VCS-Directories: pym/portage/util/_eventloop/
X-VCS-Committer: zmedico
X-VCS-Committer-Name: Zac Medico
X-VCS-Revision: 4cc3db2b37e3a0ee123f9c9c81aba56be543b383
X-VCS-Branch: master
Date: Thu, 22 Nov 2012 12:23:46 +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: 94870adb-47dc-4fd0-b0d8-c8b7ddb39e55
X-Archives-Hash: a385f573314449d7aab2271b98bf6952

commit:     4cc3db2b37e3a0ee123f9c9c81aba56be543b383
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Thu Nov 22 12:23:20 2012 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Thu Nov 22 12:23:20 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=4cc3db2b

EventLoop: handle Linux 2.4 errno 38 for epoll

---
 pym/portage/util/_eventloop/EventLoop.py |   27 +++++++++++++++++++--------
 1 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/pym/portage/util/_eventloop/EventLoop.py b/pym/portage/util/_eventloop/EventLoop.py
index 15d4ef2..17a468f 100644
--- a/pym/portage/util/_eventloop/EventLoop.py
+++ b/pym/portage/util/_eventloop/EventLoop.py
@@ -53,9 +53,28 @@ class EventLoop(object):
 		self._timeout_handlers = {}
 		self._timeout_interval = None
 
+		self._poll_obj = None
 		try:
 			select.epoll
 		except AttributeError:
+			pass
+		else:
+			try:
+				epoll_obj = select.epoll()
+			except IOError:
+				# This happens with Linux 2.4 kernels:
+				# IOError: [Errno 38] Function not implemented
+				pass
+			else:
+				self._poll_obj = _epoll_adapter(epoll_obj)
+				self.IO_ERR = select.EPOLLERR
+				self.IO_HUP = select.EPOLLHUP
+				self.IO_IN = select.EPOLLIN
+				self.IO_NVAL = 0
+				self.IO_OUT = select.EPOLLOUT
+				self.IO_PRI = select.EPOLLPRI
+
+		if self._poll_obj is None:
 			self._poll_obj = create_poll_instance()
 			self.IO_ERR = PollConstants.POLLERR
 			self.IO_HUP = PollConstants.POLLHUP
@@ -63,14 +82,6 @@ class EventLoop(object):
 			self.IO_NVAL = PollConstants.POLLNVAL
 			self.IO_OUT = PollConstants.POLLOUT
 			self.IO_PRI = PollConstants.POLLPRI
-		else:
-			self._poll_obj = _epoll_adapter(select.epoll())
-			self.IO_ERR = select.EPOLLERR
-			self.IO_HUP = select.EPOLLHUP
-			self.IO_IN = select.EPOLLIN
-			self.IO_NVAL = 0
-			self.IO_OUT = select.EPOLLOUT
-			self.IO_PRI = select.EPOLLPRI
 
 		self._child_handlers = {}
 		self._sigchld_read = None