summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2013-05-20 16:20:15 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-05-20 23:55:57 +0100
commitc21c3fd3adc7bbbd7018a03e99f058b05bec10b2 (patch)
tree4c8a7208b87e75b287370a51f1b9d161dc23dc7b
parentea7254390807d6d4a34bd07ebe33b381de462ced (diff)
downloadbitbake-c21c3fd3adc7bbbd7018a03e99f058b05bec10b2.tar.gz
prserv/cooker: Handle PRService errors cleanly
Current if the PR Service fails to start, bitbake carries on regardless or hangs with no error message. This adds an exception and then handles it correctly so the UIs correctly handle the error and exit cleanly. [YOCTO #4010] (Bitbake master rev: 949c01228a977c3b92bfc0802f6c71b40d8e05b3) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--lib/bb/cooker.py5
-rw-r--r--lib/prserv/serv.py9
2 files changed, 10 insertions, 4 deletions
diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py
index c7c2ca648..2c54209f8 100644
--- a/lib/bb/cooker.py
+++ b/lib/bb/cooker.py
@@ -1486,7 +1486,10 @@ class BBCooker:
# Empty the environment. The environment will be populated as
# necessary from the data store.
#bb.utils.empty_environment()
- prserv.serv.auto_start(self.configuration.data)
+ try:
+ prserv.serv.auto_start(self.configuration.data)
+ except prserv.serv.PRServiceConfigError:
+ bb.event.fire(CookerExit(), self.configuration.event_data)
return
def post_serve(self):
diff --git a/lib/prserv/serv.py b/lib/prserv/serv.py
index 348920053..6132100ee 100644
--- a/lib/prserv/serv.py
+++ b/lib/prserv/serv.py
@@ -263,6 +263,9 @@ def is_local_special(host, port):
else:
return False
+class PRServiceConfigError(Exception):
+ pass
+
def auto_start(d):
global singleton
@@ -273,14 +276,14 @@ def auto_start(d):
if len(host_params) != 2:
logger.critical('\n'.join(['PRSERV_HOST: incorrect format',
'Usage: PRSERV_HOST = "<hostname>:<port>"']))
- return True
+ raise PRServiceConfigError
if is_local_special(host_params[0], int(host_params[1])) and not singleton:
import bb.utils
cachedir = (d.getVar("PERSISTENT_DIR", True) or d.getVar("CACHE", True))
if not cachedir:
logger.critical("Please set the 'PERSISTENT_DIR' or 'CACHE' variable")
- sys.exit(1)
+ raise PRServiceConfigError
bb.utils.mkdirhier(cachedir)
dbfile = os.path.join(cachedir, "prserv.sqlite3")
logfile = os.path.join(cachedir, "prserv.log")
@@ -296,7 +299,7 @@ def auto_start(d):
return PRServerConnection(host,port).ping()
except Exception:
logger.critical("PRservice %s:%d not available" % (host, port))
- return False
+ raise PRServiceConfigError
def auto_shutdown(d=None):
global singleton