diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2019-07-31 15:55:51 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2019-08-06 11:21:32 +0100 |
commit | 347c2056022d21deea6e2e7359eca2b96c6f01fe (patch) | |
tree | 521dd5daa3de4f23487eb84884d0ffd759b63207 /bitbake/lib/bb | |
parent | 4fbb862cdcdcfa44da83f9a7e7a74ab518ef67d0 (diff) | |
download | poky-347c2056022d21deea6e2e7359eca2b96c6f01fe.tar.gz |
bitbake: build/utils: Drop bb.build.FuncFailed
Its hard to see what this exception adds in the current codebase. The logfile
attribute is effectively ignored, the exception doesn't serve a defined
purpose and mostly seems to be worked around.
Remove it entirely. If this does cause output problems, we'll figure
out better ways to address those.
(Bitbake rev: cfeffb602dd5319f071cd6bcf84139ec77f2d170)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb')
-rw-r--r-- | bitbake/lib/bb/build.py | 57 | ||||
-rw-r--r-- | bitbake/lib/bb/data.py | 2 | ||||
-rw-r--r-- | bitbake/lib/bb/utils.py | 2 |
3 files changed, 12 insertions, 49 deletions
diff --git a/bitbake/lib/bb/build.py b/bitbake/lib/bb/build.py index e2f91fa3b7..30a2ba236f 100644 --- a/bitbake/lib/bb/build.py +++ b/bitbake/lib/bb/build.py | |||
@@ -54,23 +54,6 @@ else: | |||
54 | builtins['bb'] = bb | 54 | builtins['bb'] = bb |
55 | builtins['os'] = os | 55 | builtins['os'] = os |
56 | 56 | ||
57 | class FuncFailed(Exception): | ||
58 | def __init__(self, name = None, logfile = None): | ||
59 | self.logfile = logfile | ||
60 | self.name = name | ||
61 | if name: | ||
62 | self.msg = 'Function failed: %s' % name | ||
63 | else: | ||
64 | self.msg = "Function failed" | ||
65 | |||
66 | def __str__(self): | ||
67 | if self.logfile and os.path.exists(self.logfile): | ||
68 | msg = ("%s (log file is located at %s)" % | ||
69 | (self.msg, self.logfile)) | ||
70 | else: | ||
71 | msg = self.msg | ||
72 | return msg | ||
73 | |||
74 | class TaskBase(event.Event): | 57 | class TaskBase(event.Event): |
75 | """Base class for task events""" | 58 | """Base class for task events""" |
76 | 59 | ||
@@ -189,12 +172,7 @@ class StdoutNoopContextManager: | |||
189 | return sys.stdout.name | 172 | return sys.stdout.name |
190 | 173 | ||
191 | 174 | ||
192 | # | 175 | def exec_func(func, d, dirs = None): |
193 | # pythonexception allows the python exceptions generated to be raised | ||
194 | # as the real exceptions (not FuncFailed) and without a backtrace at the | ||
195 | # origin of the failure. | ||
196 | # | ||
197 | def exec_func(func, d, dirs = None, pythonexception=False): | ||
198 | """Execute a BB 'function'""" | 176 | """Execute a BB 'function'""" |
199 | 177 | ||
200 | try: | 178 | try: |
@@ -266,7 +244,7 @@ def exec_func(func, d, dirs = None, pythonexception=False): | |||
266 | 244 | ||
267 | with bb.utils.fileslocked(lockfiles): | 245 | with bb.utils.fileslocked(lockfiles): |
268 | if ispython: | 246 | if ispython: |
269 | exec_func_python(func, d, runfile, cwd=adir, pythonexception=pythonexception) | 247 | exec_func_python(func, d, runfile, cwd=adir) |
270 | else: | 248 | else: |
271 | exec_func_shell(func, d, runfile, cwd=adir) | 249 | exec_func_shell(func, d, runfile, cwd=adir) |
272 | 250 | ||
@@ -286,7 +264,7 @@ _functionfmt = """ | |||
286 | {function}(d) | 264 | {function}(d) |
287 | """ | 265 | """ |
288 | logformatter = bb.msg.BBLogFormatter("%(levelname)s: %(message)s") | 266 | logformatter = bb.msg.BBLogFormatter("%(levelname)s: %(message)s") |
289 | def exec_func_python(func, d, runfile, cwd=None, pythonexception=False): | 267 | def exec_func_python(func, d, runfile, cwd=None): |
290 | """Execute a python BB 'function'""" | 268 | """Execute a python BB 'function'""" |
291 | 269 | ||
292 | code = _functionfmt.format(function=func) | 270 | code = _functionfmt.format(function=func) |
@@ -311,14 +289,7 @@ def exec_func_python(func, d, runfile, cwd=None, pythonexception=False): | |||
311 | bb.methodpool.insert_method(func, text, fn, lineno - 1) | 289 | bb.methodpool.insert_method(func, text, fn, lineno - 1) |
312 | 290 | ||
313 | comp = utils.better_compile(code, func, "exec_python_func() autogenerated") | 291 | comp = utils.better_compile(code, func, "exec_python_func() autogenerated") |
314 | utils.better_exec(comp, {"d": d}, code, "exec_python_func() autogenerated", pythonexception=pythonexception) | 292 | utils.better_exec(comp, {"d": d}, code, "exec_python_func() autogenerated") |
315 | except (bb.parse.SkipRecipe, bb.build.FuncFailed): | ||
316 | raise | ||
317 | except Exception as e: | ||
318 | if pythonexception: | ||
319 | raise | ||
320 | logger.error(str(e)) | ||
321 | raise FuncFailed(func, None) | ||
322 | finally: | 293 | finally: |
323 | bb.debug(2, "Python function %s finished" % func) | 294 | bb.debug(2, "Python function %s finished" % func) |
324 | 295 | ||
@@ -475,13 +446,8 @@ exit $ret | |||
475 | with open(fifopath, 'r+b', buffering=0) as fifo: | 446 | with open(fifopath, 'r+b', buffering=0) as fifo: |
476 | try: | 447 | try: |
477 | bb.debug(2, "Executing shell function %s" % func) | 448 | bb.debug(2, "Executing shell function %s" % func) |
478 | 449 | with open(os.devnull, 'r+') as stdin, logfile: | |
479 | try: | 450 | bb.process.run(cmd, shell=False, stdin=stdin, log=logfile, extrafiles=[(fifo,readfifo)]) |
480 | with open(os.devnull, 'r+') as stdin, logfile: | ||
481 | bb.process.run(cmd, shell=False, stdin=stdin, log=logfile, extrafiles=[(fifo,readfifo)]) | ||
482 | except bb.process.CmdError: | ||
483 | logfn = d.getVar('BB_LOGFILE') | ||
484 | raise FuncFailed(func, logfn) | ||
485 | finally: | 451 | finally: |
486 | os.unlink(fifopath) | 452 | os.unlink(fifopath) |
487 | 453 | ||
@@ -609,9 +575,6 @@ def _exec_task(fn, task, d, quieterr): | |||
609 | event.fire(TaskStarted(task, logfn, flags, localdata), localdata) | 575 | event.fire(TaskStarted(task, logfn, flags, localdata), localdata) |
610 | except (bb.BBHandledException, SystemExit): | 576 | except (bb.BBHandledException, SystemExit): |
611 | return 1 | 577 | return 1 |
612 | except FuncFailed as exc: | ||
613 | logger.error(str(exc)) | ||
614 | return 1 | ||
615 | 578 | ||
616 | try: | 579 | try: |
617 | for func in (prefuncs or '').split(): | 580 | for func in (prefuncs or '').split(): |
@@ -619,7 +582,10 @@ def _exec_task(fn, task, d, quieterr): | |||
619 | exec_func(task, localdata) | 582 | exec_func(task, localdata) |
620 | for func in (postfuncs or '').split(): | 583 | for func in (postfuncs or '').split(): |
621 | exec_func(func, localdata) | 584 | exec_func(func, localdata) |
622 | except FuncFailed as exc: | 585 | except bb.BBHandledException: |
586 | event.fire(TaskFailed(task, logfn, localdata, True), localdata) | ||
587 | return 1 | ||
588 | except Exception as exc: | ||
623 | if quieterr: | 589 | if quieterr: |
624 | event.fire(TaskFailedSilent(task, logfn, localdata), localdata) | 590 | event.fire(TaskFailedSilent(task, logfn, localdata), localdata) |
625 | else: | 591 | else: |
@@ -627,9 +593,6 @@ def _exec_task(fn, task, d, quieterr): | |||
627 | logger.error(str(exc)) | 593 | logger.error(str(exc)) |
628 | event.fire(TaskFailed(task, logfn, localdata, errprinted), localdata) | 594 | event.fire(TaskFailed(task, logfn, localdata, errprinted), localdata) |
629 | return 1 | 595 | return 1 |
630 | except bb.BBHandledException: | ||
631 | event.fire(TaskFailed(task, logfn, localdata, True), localdata) | ||
632 | return 1 | ||
633 | finally: | 596 | finally: |
634 | sys.stdout.flush() | 597 | sys.stdout.flush() |
635 | sys.stderr.flush() | 598 | sys.stderr.flush() |
diff --git a/bitbake/lib/bb/data.py b/bitbake/lib/bb/data.py index 443615b977..0d75d0c1a9 100644 --- a/bitbake/lib/bb/data.py +++ b/bitbake/lib/bb/data.py | |||
@@ -130,7 +130,7 @@ def emit_var(var, o=sys.__stdout__, d = init(), all=False): | |||
130 | if all: | 130 | if all: |
131 | oval = d.getVar(var, False) | 131 | oval = d.getVar(var, False) |
132 | val = d.getVar(var) | 132 | val = d.getVar(var) |
133 | except (KeyboardInterrupt, bb.build.FuncFailed): | 133 | except (KeyboardInterrupt): |
134 | raise | 134 | raise |
135 | except Exception as exc: | 135 | except Exception as exc: |
136 | o.write('# expansion of %s threw %s: %s\n' % (var, exc.__class__.__name__, str(exc))) | 136 | o.write('# expansion of %s threw %s: %s\n' % (var, exc.__class__.__name__, str(exc))) |
diff --git a/bitbake/lib/bb/utils.py b/bitbake/lib/bb/utils.py index ed19825faf..0618e46fe6 100644 --- a/bitbake/lib/bb/utils.py +++ b/bitbake/lib/bb/utils.py | |||
@@ -394,7 +394,7 @@ def better_exec(code, context, text = None, realfile = "<code>", pythonexception | |||
394 | code = better_compile(code, realfile, realfile) | 394 | code = better_compile(code, realfile, realfile) |
395 | try: | 395 | try: |
396 | exec(code, get_context(), context) | 396 | exec(code, get_context(), context) |
397 | except (bb.BBHandledException, bb.parse.SkipRecipe, bb.build.FuncFailed, bb.data_smart.ExpansionError): | 397 | except (bb.BBHandledException, bb.parse.SkipRecipe, bb.data_smart.ExpansionError): |
398 | # Error already shown so passthrough, no need for traceback | 398 | # Error already shown so passthrough, no need for traceback |
399 | raise | 399 | raise |
400 | except Exception as e: | 400 | except Exception as e: |