mirror of
https://git.yoctoproject.org/poky
synced 2026-05-08 05:09:24 +00:00
cooker: pass traceback back from parsing thread
Uses bb.exceptions to get a traceback back from the parsing thread to the main thread, where it is then formatted. Also enables 3 lines of context for the formatted traceback, and limits the number of entries displayed to 5. (Bitbake rev: 8c33f50eb68411c071c001331e0134aeb776953b) Signed-off-by: Chris Larson <chris_larson@mentor.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
36d1dcef65
commit
1749a73669
@@ -1129,7 +1129,9 @@ def parse_file(task):
|
||||
try:
|
||||
return True, bb.cache.Cache.parse(filename, appends, parse_file.cfg, caches_array)
|
||||
except Exception, exc:
|
||||
tb = sys.exc_info()[2]
|
||||
exc.recipe = filename
|
||||
exc.traceback = list(bb.exceptions.extract_traceback(tb, context=3))
|
||||
raise 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
|
||||
@@ -1219,9 +1221,14 @@ class CookerParser(object):
|
||||
self.shutdown(clean=False)
|
||||
bb.fatal('Error parsing %s: %s' %
|
||||
(exc.recipe, bb.exceptions.to_string(exc.realexception)))
|
||||
except Exception as exc:
|
||||
except Exception:
|
||||
import traceback
|
||||
etype, value, tb = sys.exc_info()
|
||||
formatted = bb.exceptions.format_extracted(value.traceback, limit=5)
|
||||
formatted.extend(traceback.format_exception_only(etype, value))
|
||||
|
||||
self.shutdown(clean=False)
|
||||
bb.fatal('Error parsing %s: %s' % (exc.recipe, exc))
|
||||
bb.fatal('Error parsing %s:\n%s' % (value.recipe, ''.join(formatted)))
|
||||
|
||||
self.current += 1
|
||||
self.virtuals += len(result)
|
||||
|
||||
Reference in New Issue
Block a user