aboutsummaryrefslogtreecommitdiffstats
path: root/lib/bb/cooker.py
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2019-08-12 15:56:20 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-08-14 14:19:03 +0100
commit05888700e5f6cba48a26c8a4c447634a28e3baa6 (patch)
tree2c2b515f25d13352bdacdeee03eb19c860ba869f /lib/bb/cooker.py
parent373b085ead992a725b2230ededd992b4c61a1a05 (diff)
downloadbitbake-contrib-05888700e5f6cba48a26c8a4c447634a28e3baa6.tar.gz
cooker: Improve hash server startup code to avoid exit tracebacks
At exit the hashserv code was causing tracebacks as join() wasn't being called from the thread that started the process. Ensure that the hashserver is started from the pre_serve hook which is the final thread the cooker runs in. This avoids the traceback at the expense of some horrific poking into data stores which will ultimately need improving through a proper API. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'lib/bb/cooker.py')
-rw-r--r--lib/bb/cooker.py29
1 files changed, 17 insertions, 12 deletions
diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py
index ec1b35d72..0607fcc70 100644
--- a/lib/bb/cooker.py
+++ b/lib/bb/cooker.py
@@ -371,22 +371,10 @@ class BBCooker:
self.data.setVar('BB_CMDLINE', self.ui_cmdline)
- if self.data.getVar("BB_HASHSERVE") == "localhost:0":
- if not self.hashserv:
- dbfile = (self.data.getVar("PERSISTENT_DIR") or self.data.getVar("CACHE")) + "/hashserv.db"
- self.hashserv = hashserv.create_server(('localhost', 0), dbfile, '')
- self.hashservport = "localhost:" + str(self.hashserv.server_port)
- self.hashserv.process = multiprocessing.Process(target=self.hashserv.serve_forever)
- self.hashserv.process.daemon = True
- self.hashserv.process.start()
- self.data.setVar("BB_HASHSERVE", self.hashservport)
-
#
# Copy of the data store which has been expanded.
# Used for firing events and accessing variables where expansion needs to be accounted for
#
- bb.parse.init_parser(self.data)
-
if CookerFeatures.BASEDATASTORE_TRACKING in self.featureset:
self.disableDataTracking()
@@ -404,6 +392,22 @@ class BBCooker:
except prserv.serv.PRServiceConfigError as e:
bb.fatal("Unable to start PR Server, exitting")
+ if self.data.getVar("BB_HASHSERVE") == "localhost:0":
+ if not self.hashserv:
+ dbfile = (self.data.getVar("PERSISTENT_DIR") or self.data.getVar("CACHE")) + "/hashserv.db"
+ self.hashserv = hashserv.create_server(('localhost', 0), dbfile, '')
+ self.hashservport = "localhost:" + str(self.hashserv.server_port)
+ self.hashserv.process = multiprocessing.Process(target=self.hashserv.serve_forever)
+ self.hashserv.process.daemon = True
+ self.hashserv.process.start()
+ self.data.setVar("BB_HASHSERVE", self.hashservport)
+ self.databuilder.origdata.setVar("BB_HASHSERVE", self.hashservport)
+ self.databuilder.data.setVar("BB_HASHSERVE", self.hashservport)
+ for mc in self.databuilder.mcdata:
+ self.databuilder.mcdata[mc].setVar("BB_HASHSERVE", self.hashservport)
+
+ bb.parse.init_parser(self.data)
+
def enableDataTracking(self):
self.configuration.tracking = True
if hasattr(self, "data"):
@@ -1677,6 +1681,7 @@ class BBCooker:
def reset(self):
self.initConfigurationData()
+ self.handlePRServ()
def clientComplete(self):
"""Called when the client is done using the server"""