summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-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 7ca1ffdd9..c39d522c4 100644
--- a/lib/bb/cooker.py
+++ b/lib/bb/cooker.py
@@ -1353,7 +1353,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 5567c6f57..316512d7a 100644
--- a/lib/prserv/serv.py
+++ b/lib/prserv/serv.py
@@ -266,17 +266,20 @@ def is_local_special(host, port):
else:
return False
+class PRServiceConfigError(Exception):
+ pass
+
def auto_start(d):
global singleton
if (not d.getVar('PRSERV_HOST', True)) or (not d.getVar('PRSERV_PORT', True)):
- return True
+ return
if is_local_special(d.getVar('PRSERV_HOST', True), int(d.getVar('PRSERV_PORT', True))) 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")
@@ -292,7 +295,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