aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xlib/bb/main.py13
-rw-r--r--lib/bb/server/process.py8
2 files changed, 14 insertions, 7 deletions
diff --git a/lib/bb/main.py b/lib/bb/main.py
index 0418d52b8..07972f69e 100755
--- a/lib/bb/main.py
+++ b/lib/bb/main.py
@@ -438,9 +438,10 @@ def setup_bitbake(configParams, configuration, extrafeatures=None):
return None, None
# we start a server with a given configuration
logger.info("Starting bitbake server...")
- server = bb.server.process.BitBakeServer(lock, sockname, configuration, featureset)
- # The server will handle any events already in the queue
+ # Clear the event queue since we already displayed messages
bb.event.ui_queue = []
+ server = bb.server.process.BitBakeServer(lock, sockname, configuration, featureset)
+
else:
logger.info("Reconnecting to bitbake server...")
if not os.path.exists(sockname):
@@ -448,7 +449,13 @@ def setup_bitbake(configParams, configuration, extrafeatures=None):
time.sleep(5)
raise bb.server.process.ProcessTimeout("Bitbake still shutting down as socket exists but no lock?")
if not configParams.server_only:
- server_connection = bb.server.process.connectProcessServer(sockname, featureset)
+ try:
+ server_connection = bb.server.process.connectProcessServer(sockname, featureset)
+ except EOFError:
+ # The server may have been shutting down but not closed the socket yet. If that happened,
+ # ignore it.
+ pass
+
if server_connection or configParams.server_only:
break
except (Exception, bb.server.process.ProcessTimeout) as e:
diff --git a/lib/bb/server/process.py b/lib/bb/server/process.py
index 3ab793c77..fad8aac4d 100644
--- a/lib/bb/server/process.py
+++ b/lib/bb/server/process.py
@@ -215,6 +215,10 @@ class ProcessServer(multiprocessing.Process):
ready = self.idle_commands(.1, fds)
print("Exiting")
+ # Remove the socket file so we don't get any more connections to avoid races
+ os.unlink(self.sockname)
+ self.sock.close()
+
try:
self.cooker.shutdown(True)
except:
@@ -222,10 +226,6 @@ class ProcessServer(multiprocessing.Process):
self.cooker.post_serve()
- # Remove the socket file so we don't get any more connections to avoid races
- os.unlink(self.sockname)
- self.sock.close()
-
# Finally release the lockfile but warn about other processes holding it open
lock = self.bitbake_lock
lockfile = lock.name