summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2017-08-31 17:09:54 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-08-31 17:36:53 +0100
commit971272e84f4efe7ebd0037e164ba54f013a2a34e (patch)
treec5f41dac293599f260d5fff6c66f0841122f2b2d
parentb8616931bc0e523a3a3bb23b4f623f8b6e71d690 (diff)
downloadbitbake-contrib-971272e84f4efe7ebd0037e164ba54f013a2a34e.zip
bitbake-contrib-971272e84f4efe7ebd0037e164ba54f013a2a34e.tar.gz
bitbake-contrib-971272e84f4efe7ebd0037e164ba54f013a2a34e.tar.bz2
cooker: Allow changes in PRSERV_HOST to be responded to
When we reload the configuration, PRSERV_HOST can change. Therefore restart the PR Server depending on the new configuration at reparse. Note that the server has to be started from the right process, it can't be in the UI which shuts down as that shutdown triggers a shutdown of its children and the PR Server shuts down too. This is why we need pre_serve() which ensures its executed in the right context. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--lib/bb/cooker.py19
1 files changed, 11 insertions, 8 deletions
diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py
index 5ee1c0a..a2c1b40 100644
--- a/lib/bb/cooker.py
+++ b/lib/bb/cooker.py
@@ -379,6 +379,13 @@ class BBCooker:
self.baseconfig_valid = True
self.parsecache_valid = False
+ def handlePRServ(self):
+ # Setup a PR Server based on the new configuration
+ try:
+ self.prhost = prserv.serv.auto_start(self.data)
+ except prserv.serv.PRServiceConfigError as e:
+ bb.fatal("Unable to start PR Server, exitting")
+
def enableDataTracking(self):
self.configuration.tracking = True
if hasattr(self, "data"):
@@ -1468,6 +1475,7 @@ class BBCooker:
if not self.baseconfig_valid:
logger.debug(1, "Reloading base configuration data")
self.initConfigurationData()
+ self.handlePRServ()
# This is called for all async commands when self.state != running
def updateCache(self):
@@ -1571,14 +1579,9 @@ class BBCooker:
return pkgs_to_build
def pre_serve(self):
- # Empty the environment. The environment will be populated as
- # necessary from the data store.
- #bb.utils.empty_environment()
- try:
- self.prhost = prserv.serv.auto_start(self.data)
- except prserv.serv.PRServiceConfigError:
- bb.event.fire(CookerExit(), self.data)
- self.state = state.error
+ # We now are in our own process so we can call this here.
+ # PRServ exits if its parent process exits
+ self.handlePRServ()
return
def post_serve(self):