aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2012-12-27 00:15:22 -0800
committerZac Medico <zmedico@gentoo.org>2012-12-27 00:17:37 -0800
commit684e0f9fa1ed5039dc51e7854bd9cb318a2eaafe (patch)
treec58874bceab7a0300d23ab7bef15e17f85b3fb47 /pym/portage/util/_eventloop/EventLoop.py
parentmerge-sync: handle PyPy syncfs fail, bug #446610 (diff)
downloadportage-684e0f9fa1ed5039dc51e7854bd9cb318a2eaafe.tar.gz
portage-684e0f9fa1ed5039dc51e7854bd9cb318a2eaafe.tar.bz2
portage-684e0f9fa1ed5039dc51e7854bd9cb318a2eaafe.zip
Add PipeReaderBlockingIO, Jython experimentation.
Diffstat (limited to 'pym/portage/util/_eventloop/EventLoop.py')
-rw-r--r--pym/portage/util/_eventloop/EventLoop.py16
1 files changed, 13 insertions, 3 deletions
diff --git a/pym/portage/util/_eventloop/EventLoop.py b/pym/portage/util/_eventloop/EventLoop.py
index 37e600792..efd1f1376 100644
--- a/pym/portage/util/_eventloop/EventLoop.py
+++ b/pym/portage/util/_eventloop/EventLoop.py
@@ -2,7 +2,6 @@
# Distributed under the terms of the GNU General Public License v2
import errno
-import fcntl
import logging
import os
import select
@@ -10,6 +9,12 @@ import signal
import time
try:
+ import fcntl
+except ImportError:
+ # http://bugs.jython.org/issue1074
+ fcntl = None
+
+try:
import threading
except ImportError:
import dummy_threading as threading
@@ -54,7 +59,7 @@ class EventLoop(object):
that global_event_loop does not need constructor arguments)
@type main: bool
"""
- self._use_signal = main
+ self._use_signal = main and fcntl is not None
self._thread_rlock = threading.RLock()
self._poll_event_queue = []
self._poll_event_handlers = {}
@@ -524,7 +529,12 @@ def can_poll_device():
return _can_poll_device
p = select.poll()
- p.register(dev_null.fileno(), PollConstants.POLLIN)
+ try:
+ p.register(dev_null.fileno(), PollConstants.POLLIN)
+ except TypeError:
+ # Jython: Object 'org.python.core.io.FileIO@f8f175' is not watchable
+ _can_poll_device = False
+ return _can_poll_device
invalid_request = False
for f, event in p.poll():