summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2020-09-02 23:12:42 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2020-09-05 11:45:16 +0100
commit16f820a2a82c12184e7ea0734a61c45a22e82530 (patch)
treea771cd8ac14e8e02665244b3aeabe34c0bbf31f1 /bitbake
parent4cb33dae15adb7f88a35a3630368db16923bca7e (diff)
downloadpoky-16f820a2a82c12184e7ea0734a61c45a22e82530.tar.gz
bitbake: cooker/cookerdata: Use BBHandledException, not sys.exit()
Calling sys.exit() in the middle of the code is rather antisocial. We catch this in various places but we shouldn't have to. In all these cases we have already sent events explaining to the user what happened. This means the correct exception is BBHandledException. The recent startup changes have moved the point a lot of this code gets called to inside the UI, with memres it would have always been possible from there anyway. This change makes things much more consistent. (Bitbake rev: 91699f366d24480ff3b19faec78fb9f3181b3e14) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/lib/bb/cooker.py4
-rw-r--r--bitbake/lib/bb/cookerdata.py10
2 files changed, 7 insertions, 7 deletions
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
index fc017dd19f..a85e3587fd 100644
--- a/bitbake/lib/bb/cooker.py
+++ b/bitbake/lib/bb/cooker.py
@@ -352,7 +352,7 @@ class BBCooker:
352 self.caches_array.append(getattr(module, cache_name)) 352 self.caches_array.append(getattr(module, cache_name))
353 except ImportError as exc: 353 except ImportError as exc:
354 logger.critical("Unable to import extra RecipeInfo '%s' from '%s': %s" % (cache_name, module_name, exc)) 354 logger.critical("Unable to import extra RecipeInfo '%s' from '%s': %s" % (cache_name, module_name, exc))
355 sys.exit("FATAL: Failed to import extra cache class '%s'." % cache_name) 355 raise bb.BBHandledException()
356 356
357 self.databuilder = bb.cookerdata.CookerDataBuilder(self.configuration, False) 357 self.databuilder = bb.cookerdata.CookerDataBuilder(self.configuration, False)
358 self.databuilder.parseBaseConfiguration() 358 self.databuilder.parseBaseConfiguration()
@@ -1127,7 +1127,7 @@ class BBCooker:
1127 from bb import shell 1127 from bb import shell
1128 except ImportError: 1128 except ImportError:
1129 parselog.exception("Interactive mode not available") 1129 parselog.exception("Interactive mode not available")
1130 sys.exit(1) 1130 raise bb.BBHandledException()
1131 else: 1131 else:
1132 shell.start( self ) 1132 shell.start( self )
1133 1133
diff --git a/bitbake/lib/bb/cookerdata.py b/bitbake/lib/bb/cookerdata.py
index 190ff3ab82..48953a830b 100644
--- a/bitbake/lib/bb/cookerdata.py
+++ b/bitbake/lib/bb/cookerdata.py
@@ -164,7 +164,7 @@ def catch_parse_error(func):
164 import traceback 164 import traceback
165 parselog.critical(traceback.format_exc()) 165 parselog.critical(traceback.format_exc())
166 parselog.critical("Unable to parse %s: %s" % (fn, exc)) 166 parselog.critical("Unable to parse %s: %s" % (fn, exc))
167 sys.exit(1) 167 raise bb.BBHandledException()
168 except bb.data_smart.ExpansionError as exc: 168 except bb.data_smart.ExpansionError as exc:
169 import traceback 169 import traceback
170 170
@@ -176,10 +176,10 @@ def catch_parse_error(func):
176 if not fn.startswith(bbdir): 176 if not fn.startswith(bbdir):
177 break 177 break
178 parselog.critical("Unable to parse %s" % fn, exc_info=(exc_class, exc, tb)) 178 parselog.critical("Unable to parse %s" % fn, exc_info=(exc_class, exc, tb))
179 sys.exit(1) 179 raise bb.BBHandledException()
180 except bb.parse.ParseError as exc: 180 except bb.parse.ParseError as exc:
181 parselog.critical(str(exc)) 181 parselog.critical(str(exc))
182 sys.exit(1) 182 raise bb.BBHandledException()
183 return wrapped 183 return wrapped
184 184
185@catch_parse_error 185@catch_parse_error
@@ -355,7 +355,7 @@ class CookerDataBuilder(object):
355 for layer in broken_layers: 355 for layer in broken_layers:
356 parselog.critical(" %s", layer) 356 parselog.critical(" %s", layer)
357 parselog.critical("Please check BBLAYERS in %s" % (layerconf)) 357 parselog.critical("Please check BBLAYERS in %s" % (layerconf))
358 sys.exit(1) 358 raise bb.BBHandledException()
359 359
360 for layer in layers: 360 for layer in layers:
361 parselog.debug(2, "Adding layer %s", layer) 361 parselog.debug(2, "Adding layer %s", layer)
@@ -427,7 +427,7 @@ class CookerDataBuilder(object):
427 handlerfn = data.getVarFlag(var, "filename", False) 427 handlerfn = data.getVarFlag(var, "filename", False)
428 if not handlerfn: 428 if not handlerfn:
429 parselog.critical("Undefined event handler function '%s'" % var) 429 parselog.critical("Undefined event handler function '%s'" % var)
430 sys.exit(1) 430 raise bb.BBHandledException()
431 handlerln = int(data.getVarFlag(var, "lineno", False)) 431 handlerln = int(data.getVarFlag(var, "lineno", False))
432 bb.event.register(var, data.getVar(var, False), (data.getVarFlag(var, "eventmask") or "").split(), handlerfn, handlerln) 432 bb.event.register(var, data.getVar(var, False), (data.getVarFlag(var, "eventmask") or "").split(), handlerfn, handlerln)
433 433