diff options
author | Christopher Larson <chris_larson@mentor.com> | 2016-10-04 09:11:23 -0700 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-10-05 10:28:12 +0100 |
commit | 7d27275ef83c38104e898ff259be173ad71743a7 (patch) | |
tree | 9a3bf0be2fcb532b913c10187f8d3e10685fc640 | |
parent | 1110dde73aa04772090ca7b2b21a953d49734fb0 (diff) | |
download | poky-7d27275ef83c38104e898ff259be173ad71743a7.tar.gz |
bitbake: bb.build: in _exec_task, catch errors from TaskStarted
We don't always want a traceback when an exception is raised by the
TaskStarted event handler. Silently return if we get a SystemExit or
HandledException, and print the error and return for FuncFailed.
This is done via a separate try/catch block, to avoid firing TaskFailed if all
the TaskStarted event handlers didn't complete, otherwise the bitbake UIs get
unhappy.
(Bitbake rev: ca5b788280ad4303cc08a376e847cbbeda31970c)
Signed-off-by: Christopher Larson <chris_larson@mentor.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | bitbake/lib/bb/build.py | 40 |
1 files changed, 24 insertions, 16 deletions
diff --git a/bitbake/lib/bb/build.py b/bitbake/lib/bb/build.py index 249f7d6bb4..c4c8aeb645 100644 --- a/bitbake/lib/bb/build.py +++ b/bitbake/lib/bb/build.py | |||
@@ -565,24 +565,32 @@ def _exec_task(fn, task, d, quieterr): | |||
565 | 565 | ||
566 | flags = localdata.getVarFlags(task) | 566 | flags = localdata.getVarFlags(task) |
567 | 567 | ||
568 | event.fire(TaskStarted(task, logfn, flags, localdata), localdata) | ||
569 | try: | 568 | try: |
570 | for func in (prefuncs or '').split(): | 569 | try: |
571 | exec_func(func, localdata) | 570 | event.fire(TaskStarted(task, logfn, flags, localdata), localdata) |
572 | exec_func(task, localdata) | 571 | except (bb.BBHandledException, SystemExit): |
573 | for func in (postfuncs or '').split(): | 572 | return 1 |
574 | exec_func(func, localdata) | 573 | except FuncFailed as exc: |
575 | except FuncFailed as exc: | ||
576 | if quieterr: | ||
577 | event.fire(TaskFailedSilent(task, logfn, localdata), localdata) | ||
578 | else: | ||
579 | errprinted = errchk.triggered | ||
580 | logger.error(str(exc)) | 574 | logger.error(str(exc)) |
581 | event.fire(TaskFailed(task, logfn, localdata, errprinted), localdata) | 575 | return 1 |
582 | return 1 | 576 | |
583 | except bb.BBHandledException: | 577 | try: |
584 | event.fire(TaskFailed(task, logfn, localdata, True), localdata) | 578 | for func in (prefuncs or '').split(): |
585 | return 1 | 579 | exec_func(func, localdata) |
580 | exec_func(task, localdata) | ||
581 | for func in (postfuncs or '').split(): | ||
582 | exec_func(func, localdata) | ||
583 | except FuncFailed as exc: | ||
584 | if quieterr: | ||
585 | event.fire(TaskFailedSilent(task, logfn, localdata), localdata) | ||
586 | else: | ||
587 | errprinted = errchk.triggered | ||
588 | logger.error(str(exc)) | ||
589 | event.fire(TaskFailed(task, logfn, localdata, errprinted), localdata) | ||
590 | return 1 | ||
591 | except bb.BBHandledException: | ||
592 | event.fire(TaskFailed(task, logfn, localdata, True), localdata) | ||
593 | return 1 | ||
586 | finally: | 594 | finally: |
587 | sys.stdout.flush() | 595 | sys.stdout.flush() |
588 | sys.stderr.flush() | 596 | sys.stderr.flush() |