diff options
author | Richard Purdie <rpurdie@linux.intel.com> | 2010-01-21 23:46:20 +0000 |
---|---|---|
committer | Richard Purdie <rpurdie@linux.intel.com> | 2010-01-21 23:46:20 +0000 |
commit | 5c62833766048b83c0d7ea9e77194b9ca6af7fb1 (patch) | |
tree | 960a3030ecff5fc41fd6398474a60556834d0b6b | |
parent | fd42ffa273396b3ba425fe34cc43b62d540187fe (diff) | |
download | openembedded-core-5c62833766048b83c0d7ea9e77194b9ca6af7fb1.tar.gz openembedded-core-5c62833766048b83c0d7ea9e77194b9ca6af7fb1.tar.bz2 openembedded-core-5c62833766048b83c0d7ea9e77194b9ca6af7fb1.zip |
runqueue.py: Use fcntl to make the worker pipes non-blocking
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
-rw-r--r-- | bitbake/lib/bb/runqueue.py | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py index 7a34ba9f7e..1f9907b9d5 100644 --- a/bitbake/lib/bb/runqueue.py +++ b/bitbake/lib/bb/runqueue.py @@ -26,6 +26,7 @@ from bb import msg, data, event, mkdirhier, utils import bb, os, sys import signal import stat +import fcntl class TaskFailure(Exception): """Exception raised when a task in a runqueue fails""" @@ -1161,12 +1162,16 @@ class runQueuePipe(): def __init__(self, pipein, pipeout, d): self.fd = pipein os.close(pipeout) + fcntl.fcntl(self.fd, fcntl.F_SETFL, fcntl.fcntl(self.fd, fcntl.F_GETFL) | os.O_NONBLOCK) self.queue = "" self.d = d def read(self): start = len(self.queue) - self.queue = self.queue + os.read(self.fd, 1024) + try: + self.queue = self.queue + os.read(self.fd, 1024) + except OSError: + pass end = len(self.queue) index = self.queue.find("</event>") while index != -1: |