diff options
author | Zac Medico <zmedico@gentoo.org> | 2012-12-27 00:15:22 -0800 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2012-12-27 00:17:37 -0800 |
commit | 684e0f9fa1ed5039dc51e7854bd9cb318a2eaafe (patch) | |
tree | c58874bceab7a0300d23ab7bef15e17f85b3fb47 /pym/portage/util/_eventloop/EventLoop.py | |
parent | merge-sync: handle PyPy syncfs fail, bug #446610 (diff) | |
download | portage-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.py | 16 |
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(): |