diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-09-11 23:17:43 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-09-12 23:55:29 +0100 |
commit | 28949d3f80de33c1c034d877691308c301e50bbd (patch) | |
tree | d22819403228e154241a1ea8ae48d842a21c476a /bitbake/lib | |
parent | 74afde0058e5ca6f27e645013e8a71ce297b23be (diff) | |
download | poky-28949d3f80de33c1c034d877691308c301e50bbd.tar.gz |
bitbake: process/cooker: Improve readypipe handling
Issues in start are not being correctly detected by the current readypipe
code. Change it to use specific "ready" or "fail" messages to correctly
determine the correct failure mode and avoid bitbake seeming to hang
(it does currently timeout eventually).
[YOCTO #12062]
(Bitbake rev: 60d4791e3dd05729d2a2adf6f3b203c80d466a73)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib')
-rw-r--r-- | bitbake/lib/bb/cooker.py | 6 | ||||
-rw-r--r-- | bitbake/lib/bb/server/process.py | 17 |
2 files changed, 14 insertions, 9 deletions
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py index 7d040dcd88..8fe36eba1e 100644 --- a/bitbake/lib/bb/cooker.py +++ b/bitbake/lib/bb/cooker.py | |||
@@ -165,7 +165,7 @@ class BBCooker: | |||
165 | Manages one bitbake build run | 165 | Manages one bitbake build run |
166 | """ | 166 | """ |
167 | 167 | ||
168 | def __init__(self, configuration, featureSet=None, readypipe=None): | 168 | def __init__(self, configuration, featureSet=None): |
169 | self.recipecaches = None | 169 | self.recipecaches = None |
170 | self.skiplist = {} | 170 | self.skiplist = {} |
171 | self.featureset = CookerFeatures() | 171 | self.featureset = CookerFeatures() |
@@ -233,10 +233,6 @@ class BBCooker: | |||
233 | # Let SIGHUP exit as SIGTERM | 233 | # Let SIGHUP exit as SIGTERM |
234 | signal.signal(signal.SIGHUP, self.sigterm_exception) | 234 | signal.signal(signal.SIGHUP, self.sigterm_exception) |
235 | 235 | ||
236 | if readypipe: | ||
237 | os.write(readypipe, b"ready") | ||
238 | os.close(readypipe) | ||
239 | |||
240 | def process_inotify_updates(self): | 236 | def process_inotify_updates(self): |
241 | for n in [self.confignotifier, self.notifier]: | 237 | for n in [self.confignotifier, self.notifier]: |
242 | if n.check_events(timeout=0): | 238 | if n.check_events(timeout=0): |
diff --git a/bitbake/lib/bb/server/process.py b/bitbake/lib/bb/server/process.py index 5c7dfaefa1..6a12f01057 100644 --- a/bitbake/lib/bb/server/process.py +++ b/bitbake/lib/bb/server/process.py | |||
@@ -388,8 +388,10 @@ class BitBakeServer(object): | |||
388 | self.bitbake_lock.close() | 388 | self.bitbake_lock.close() |
389 | 389 | ||
390 | ready = ConnectionReader(self.readypipe) | 390 | ready = ConnectionReader(self.readypipe) |
391 | r = ready.wait(30) | 391 | r = ready.poll(30) |
392 | if not r: | 392 | if r: |
393 | r = ready.get() | ||
394 | if not r or r != "ready": | ||
393 | ready.close() | 395 | ready.close() |
394 | bb.error("Unable to start bitbake server") | 396 | bb.error("Unable to start bitbake server") |
395 | if os.path.exists(logfile): | 397 | if os.path.exists(logfile): |
@@ -404,8 +406,15 @@ class BitBakeServer(object): | |||
404 | print("Starting bitbake server pid %d" % os.getpid()) | 406 | print("Starting bitbake server pid %d" % os.getpid()) |
405 | server = ProcessServer(self.bitbake_lock, self.sock, self.sockname) | 407 | server = ProcessServer(self.bitbake_lock, self.sock, self.sockname) |
406 | self.configuration.setServerRegIdleCallback(server.register_idle_function) | 408 | self.configuration.setServerRegIdleCallback(server.register_idle_function) |
407 | 409 | writer = ConnectionWriter(self.readypipein) | |
408 | self.cooker = bb.cooker.BBCooker(self.configuration, self.featureset, self.readypipein) | 410 | try: |
411 | self.cooker = bb.cooker.BBCooker(self.configuration, self.featureset) | ||
412 | writer.send("ready") | ||
413 | except: | ||
414 | writer.send("fail") | ||
415 | raise | ||
416 | finally: | ||
417 | os.close(self.readypipein) | ||
409 | server.cooker = self.cooker | 418 | server.cooker = self.cooker |
410 | server.server_timeout = self.configuration.server_timeout | 419 | server.server_timeout = self.configuration.server_timeout |
411 | server.xmlrpcinterface = self.configuration.xmlrpcinterface | 420 | server.xmlrpcinterface = self.configuration.xmlrpcinterface |