mirror of
https://git.yoctoproject.org/poky
synced 2026-04-29 00:32:14 +02:00
bitbake: cooker: Fix exception handling in parsers
We shouldn't be generating exception inside a generator. Rearrange the code to improve the handling of this. Also fix the misconverted code from when multiconfig was added and pass the exception as "result". (Bitbake rev: ae89e23696de2f27c00ae00922933395171de5d5) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
@@ -2087,12 +2087,12 @@ class Parser(multiprocessing.Process):
|
||||
tb = sys.exc_info()[2]
|
||||
exc.recipe = filename
|
||||
exc.traceback = list(bb.exceptions.extract_traceback(tb, context=3))
|
||||
return True, exc
|
||||
return True, None, exc
|
||||
# Need to turn BaseExceptions into Exceptions here so we gracefully shutdown
|
||||
# and for example a worker thread doesn't just exit on its own in response to
|
||||
# a SystemExit event for example.
|
||||
except BaseException as exc:
|
||||
return True, ParsingFailure(exc, filename)
|
||||
return True, None, ParsingFailure(exc, filename)
|
||||
finally:
|
||||
bb.event.LogHandler.filter = origfilter
|
||||
|
||||
@@ -2252,11 +2252,7 @@ class CookerParser(object):
|
||||
pass
|
||||
else:
|
||||
empty = False
|
||||
value = result[1]
|
||||
if isinstance(value, BaseException):
|
||||
raise value
|
||||
else:
|
||||
yield result
|
||||
yield result
|
||||
|
||||
if not (self.parsed >= self.toparse):
|
||||
raise bb.parse.ParseError("Not all recipes parsed, parser thread killed/died? Exiting.", None)
|
||||
@@ -2267,6 +2263,9 @@ class CookerParser(object):
|
||||
parsed = None
|
||||
try:
|
||||
parsed, mc, result = next(self.results)
|
||||
if isinstance(result, BaseException):
|
||||
# Turn exceptions back into exceptions
|
||||
raise result
|
||||
except StopIteration:
|
||||
self.shutdown()
|
||||
return False
|
||||
|
||||
Reference in New Issue
Block a user