mirror of
https://git.yoctoproject.org/poky
synced 2026-04-21 03:32:12 +02:00
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>
This commit is contained in:
@@ -165,7 +165,7 @@ class BBCooker:
|
||||
Manages one bitbake build run
|
||||
"""
|
||||
|
||||
def __init__(self, configuration, featureSet=None, readypipe=None):
|
||||
def __init__(self, configuration, featureSet=None):
|
||||
self.recipecaches = None
|
||||
self.skiplist = {}
|
||||
self.featureset = CookerFeatures()
|
||||
@@ -233,10 +233,6 @@ class BBCooker:
|
||||
# Let SIGHUP exit as SIGTERM
|
||||
signal.signal(signal.SIGHUP, self.sigterm_exception)
|
||||
|
||||
if readypipe:
|
||||
os.write(readypipe, b"ready")
|
||||
os.close(readypipe)
|
||||
|
||||
def process_inotify_updates(self):
|
||||
for n in [self.confignotifier, self.notifier]:
|
||||
if n.check_events(timeout=0):
|
||||
|
||||
@@ -388,8 +388,10 @@ class BitBakeServer(object):
|
||||
self.bitbake_lock.close()
|
||||
|
||||
ready = ConnectionReader(self.readypipe)
|
||||
r = ready.wait(30)
|
||||
if not r:
|
||||
r = ready.poll(30)
|
||||
if r:
|
||||
r = ready.get()
|
||||
if not r or r != "ready":
|
||||
ready.close()
|
||||
bb.error("Unable to start bitbake server")
|
||||
if os.path.exists(logfile):
|
||||
@@ -404,8 +406,15 @@ class BitBakeServer(object):
|
||||
print("Starting bitbake server pid %d" % os.getpid())
|
||||
server = ProcessServer(self.bitbake_lock, self.sock, self.sockname)
|
||||
self.configuration.setServerRegIdleCallback(server.register_idle_function)
|
||||
|
||||
self.cooker = bb.cooker.BBCooker(self.configuration, self.featureset, self.readypipein)
|
||||
writer = ConnectionWriter(self.readypipein)
|
||||
try:
|
||||
self.cooker = bb.cooker.BBCooker(self.configuration, self.featureset)
|
||||
writer.send("ready")
|
||||
except:
|
||||
writer.send("fail")
|
||||
raise
|
||||
finally:
|
||||
os.close(self.readypipein)
|
||||
server.cooker = self.cooker
|
||||
server.server_timeout = self.configuration.server_timeout
|
||||
server.xmlrpcinterface = self.configuration.xmlrpcinterface
|
||||
|
||||
Reference in New Issue
Block a user