diff options
Diffstat (limited to 'bitbake/lib/bb/server')
-rw-r--r-- | bitbake/lib/bb/server/process.py | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/bitbake/lib/bb/server/process.py b/bitbake/lib/bb/server/process.py index 9e5e709f04..38b923fe2d 100644 --- a/bitbake/lib/bb/server/process.py +++ b/bitbake/lib/bb/server/process.py | |||
@@ -395,11 +395,16 @@ class BitBakeServer(object): | |||
395 | bb.daemonize.createDaemon(self._startServer, logfile) | 395 | bb.daemonize.createDaemon(self._startServer, logfile) |
396 | self.sock.close() | 396 | self.sock.close() |
397 | self.bitbake_lock.close() | 397 | self.bitbake_lock.close() |
398 | os.close(self.readypipein) | ||
398 | 399 | ||
399 | ready = ConnectionReader(self.readypipe) | 400 | ready = ConnectionReader(self.readypipe) |
400 | r = ready.poll(30) | 401 | r = ready.poll(30) |
401 | if r: | 402 | if r: |
402 | r = ready.get() | 403 | try: |
404 | r = ready.get() | ||
405 | except EOFError: | ||
406 | # Trap the child exitting/closing the pipe and error out | ||
407 | r = None | ||
403 | if not r or r != "ready": | 408 | if not r or r != "ready": |
404 | ready.close() | 409 | ready.close() |
405 | bb.error("Unable to start bitbake server") | 410 | bb.error("Unable to start bitbake server") |
@@ -425,21 +430,16 @@ class BitBakeServer(object): | |||
425 | bb.error("Server log for this session (%s):\n%s" % (logfile, "".join(lines))) | 430 | bb.error("Server log for this session (%s):\n%s" % (logfile, "".join(lines))) |
426 | raise SystemExit(1) | 431 | raise SystemExit(1) |
427 | ready.close() | 432 | ready.close() |
428 | os.close(self.readypipein) | ||
429 | 433 | ||
430 | def _startServer(self): | 434 | def _startServer(self): |
431 | print(self.start_log_format % (os.getpid(), datetime.datetime.now().strftime(self.start_log_datetime_format))) | 435 | print(self.start_log_format % (os.getpid(), datetime.datetime.now().strftime(self.start_log_datetime_format))) |
432 | server = ProcessServer(self.bitbake_lock, self.sock, self.sockname) | 436 | server = ProcessServer(self.bitbake_lock, self.sock, self.sockname) |
433 | self.configuration.setServerRegIdleCallback(server.register_idle_function) | 437 | self.configuration.setServerRegIdleCallback(server.register_idle_function) |
438 | os.close(self.readypipe) | ||
434 | writer = ConnectionWriter(self.readypipein) | 439 | writer = ConnectionWriter(self.readypipein) |
435 | try: | 440 | self.cooker = bb.cooker.BBCooker(self.configuration, self.featureset) |
436 | self.cooker = bb.cooker.BBCooker(self.configuration, self.featureset) | 441 | writer.send("ready") |
437 | writer.send("ready") | 442 | writer.close() |
438 | except: | ||
439 | writer.send("fail") | ||
440 | raise | ||
441 | finally: | ||
442 | os.close(self.readypipein) | ||
443 | server.cooker = self.cooker | 443 | server.cooker = self.cooker |
444 | server.server_timeout = self.configuration.server_timeout | 444 | server.server_timeout = self.configuration.server_timeout |
445 | server.xmlrpcinterface = self.configuration.xmlrpcinterface | 445 | server.xmlrpcinterface = self.configuration.xmlrpcinterface |