diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py index c7c2ca6483..2c54209f89 100644 --- a/bitbake/lib/bb/cooker.py +++ b/bitbake/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/bitbake/lib/prserv/serv.py b/bitbake/lib/prserv/serv.py index 3489200536..6132100eed 100644 --- a/bitbake/lib/prserv/serv.py +++ b/bitbake/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 = ":"'])) - 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