diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2023-02-17 12:09:33 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2023-02-19 07:48:28 +0000 |
commit | 42f4f740b1d6305b0636e232cc5e2c808285059c (patch) | |
tree | 06165592dfa620f5385dace063bea5fb88bae874 /bitbake | |
parent | 149ea9db9645e29e29914ff7fab6c67237f7debc (diff) | |
download | poky-42f4f740b1d6305b0636e232cc5e2c808285059c.tar.gz |
bitbake: cookerdata: Improve early exception handling
Martin Jansa reported that if you put a syntax error into an imported
module such as qa.py in OE, no error is shown.
Part of the issue appears to be that the catch_parse_error() decorator only
catches certain exceptions and SyntaxError isn't one of them. As far as I can
tell we should remove all the special cases and use the more advanced code
in all cases, not just expansion errors.
I confirmed this now prints a proper error message for a qa.py syntax error.
(Bitbake rev: 2365d891847f8e73d1c4661ddfdab8818ff619dc)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
-rw-r--r-- | bitbake/lib/bb/cookerdata.py | 10 |
1 files changed, 1 insertions, 9 deletions
diff --git a/bitbake/lib/bb/cookerdata.py b/bitbake/lib/bb/cookerdata.py index d93760c1c1..38d0b4666e 100644 --- a/bitbake/lib/bb/cookerdata.py +++ b/bitbake/lib/bb/cookerdata.py | |||
@@ -160,12 +160,7 @@ def catch_parse_error(func): | |||
160 | def wrapped(fn, *args): | 160 | def wrapped(fn, *args): |
161 | try: | 161 | try: |
162 | return func(fn, *args) | 162 | return func(fn, *args) |
163 | except IOError as exc: | 163 | except Exception as exc: |
164 | import traceback | ||
165 | parselog.critical(traceback.format_exc()) | ||
166 | parselog.critical("Unable to parse %s: %s" % (fn, exc)) | ||
167 | raise bb.BBHandledException() | ||
168 | except bb.data_smart.ExpansionError as exc: | ||
169 | import traceback | 164 | import traceback |
170 | 165 | ||
171 | bbdir = os.path.dirname(__file__) + os.sep | 166 | bbdir = os.path.dirname(__file__) + os.sep |
@@ -177,9 +172,6 @@ def catch_parse_error(func): | |||
177 | break | 172 | break |
178 | parselog.critical("Unable to parse %s" % fn, exc_info=(exc_class, exc, tb)) | 173 | parselog.critical("Unable to parse %s" % fn, exc_info=(exc_class, exc, tb)) |
179 | raise bb.BBHandledException() | 174 | raise bb.BBHandledException() |
180 | except bb.parse.ParseError as exc: | ||
181 | parselog.critical(str(exc)) | ||
182 | raise bb.BBHandledException() | ||
183 | return wrapped | 175 | return wrapped |
184 | 176 | ||
185 | @catch_parse_error | 177 | @catch_parse_error |