aboutsummaryrefslogtreecommitdiffstats
path: root/lib/bb/cooker.py
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2023-01-09 23:17:56 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2023-01-11 10:58:20 +0000
commitb5215887d2f8ea3f28f1ebda721bd5b8f93ec7f3 (patch)
tree8488c957c528c0226522ef82c4508d8946729013 /lib/bb/cooker.py
parent4a41a7d0594e6a84a67b9de70a505858aebcd84a (diff)
downloadbitbake-b5215887d2f8ea3f28f1ebda721bd5b8f93ec7f3.tar.gz
process/cooker/command: Fix currentAsyncCommand locking/races
currentAsyncCommand currently doesn't have any locking and we have a conflict in "idle" conditions since the idle functions count needs to be zero *and* there needs to be no active command. Move the changes/checks of currentAsyncCommand to within the lock and then we can add it to the condition for idle, simplifying some of the code. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'lib/bb/cooker.py')
-rw-r--r--lib/bb/cooker.py12
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py
index 13d6e9d84..5a0e675b4 100644
--- a/lib/bb/cooker.py
+++ b/lib/bb/cooker.py
@@ -149,7 +149,7 @@ class BBCooker:
Manages one bitbake build run
"""
- def __init__(self, featureSet=None, idleCallBackRegister=None, waitIdle=None):
+ def __init__(self, featureSet=None, server=None):
self.recipecaches = None
self.eventlog = None
self.skiplist = {}
@@ -163,8 +163,12 @@ class BBCooker:
self.configuration = bb.cookerdata.CookerConfiguration()
- self.idleCallBackRegister = idleCallBackRegister
- self.waitIdle = waitIdle
+ self.process_server = server
+ self.idleCallBackRegister = None
+ self.waitIdle = None
+ if server:
+ self.idleCallBackRegister = server.register_idle_function
+ self.waitIdle = server.wait_for_idle
bb.debug(1, "BBCooker starting %s" % time.time())
sys.stdout.flush()
@@ -203,7 +207,7 @@ class BBCooker:
except UnsupportedOperation:
pass
- self.command = bb.command.Command(self)
+ self.command = bb.command.Command(self, self.process_server)
self.state = state.initial
self.parser = None