diff options
-rw-r--r-- | bitbake/lib/bb/build.py | 76 |
1 files changed, 38 insertions, 38 deletions
diff --git a/bitbake/lib/bb/build.py b/bitbake/lib/bb/build.py index 99954b0c26..7e4ab9f64c 100644 --- a/bitbake/lib/bb/build.py +++ b/bitbake/lib/bb/build.py | |||
@@ -686,51 +686,51 @@ def _exec_task(fn, task, d, quieterr): | |||
686 | try: | 686 | try: |
687 | try: | 687 | try: |
688 | event.fire(TaskStarted(task, fn, logfn, flags, localdata), localdata) | 688 | event.fire(TaskStarted(task, fn, logfn, flags, localdata), localdata) |
689 | except (bb.BBHandledException, SystemExit): | ||
690 | return 1 | ||
691 | 689 | ||
692 | try: | ||
693 | for func in (prefuncs or '').split(): | 690 | for func in (prefuncs or '').split(): |
694 | exec_func(func, localdata) | 691 | exec_func(func, localdata) |
695 | exec_func(task, localdata) | 692 | exec_func(task, localdata) |
696 | for func in (postfuncs or '').split(): | 693 | for func in (postfuncs or '').split(): |
697 | exec_func(func, localdata) | 694 | exec_func(func, localdata) |
698 | except bb.BBHandledException: | 695 | finally: |
699 | event.fire(TaskFailed(task, fn, logfn, localdata, True), localdata) | 696 | # Need to flush and close the logs before sending events where the |
700 | return 1 | 697 | # UI may try to look at the logs. |
701 | except (Exception, SystemExit) as exc: | 698 | sys.stdout.flush() |
702 | if quieterr: | 699 | sys.stderr.flush() |
703 | event.fire(TaskFailedSilent(task, fn, logfn, localdata), localdata) | 700 | |
704 | else: | 701 | bblogger.removeHandler(handler) |
705 | errprinted = errchk.triggered | 702 | |
706 | # If the output is already on stdout, we've printed the information in the | 703 | # Restore the backup fds |
707 | # logs once already so don't duplicate | 704 | os.dup2(osi[0], osi[1]) |
708 | if verboseStdoutLogging: | 705 | os.dup2(oso[0], oso[1]) |
709 | errprinted = True | 706 | os.dup2(ose[0], ose[1]) |
710 | logger.error(repr(exc)) | 707 | |
711 | event.fire(TaskFailed(task, fn, logfn, localdata, errprinted), localdata) | 708 | # Close the backup fds |
712 | return 1 | 709 | os.close(osi[0]) |
713 | finally: | 710 | os.close(oso[0]) |
714 | sys.stdout.flush() | 711 | os.close(ose[0]) |
715 | sys.stderr.flush() | 712 | |
716 | 713 | logfile.close() | |
717 | bblogger.removeHandler(handler) | 714 | if os.path.exists(logfn) and os.path.getsize(logfn) == 0: |
718 | 715 | logger.debug2("Zero size logfn %s, removing", logfn) | |
719 | # Restore the backup fds | 716 | bb.utils.remove(logfn) |
720 | os.dup2(osi[0], osi[1]) | 717 | bb.utils.remove(loglink) |
721 | os.dup2(oso[0], oso[1]) | 718 | except bb.BBHandledException: |
722 | os.dup2(ose[0], ose[1]) | 719 | event.fire(TaskFailed(task, fn, logfn, localdata, True), localdata) |
723 | 720 | return 1 | |
724 | # Close the backup fds | 721 | except (Exception, SystemExit) as exc: |
725 | os.close(osi[0]) | 722 | if quieterr: |
726 | os.close(oso[0]) | 723 | event.fire(TaskFailedSilent(task, fn, logfn, localdata), localdata) |
727 | os.close(ose[0]) | 724 | else: |
725 | errprinted = errchk.triggered | ||
726 | # If the output is already on stdout, we've printed the information in the | ||
727 | # logs once already so don't duplicate | ||
728 | if verboseStdoutLogging: | ||
729 | errprinted = True | ||
730 | logger.error(repr(exc)) | ||
731 | event.fire(TaskFailed(task, fn, logfn, localdata, errprinted), localdata) | ||
732 | return 1 | ||
728 | 733 | ||
729 | logfile.close() | ||
730 | if os.path.exists(logfn) and os.path.getsize(logfn) == 0: | ||
731 | logger.debug2("Zero size logfn %s, removing", logfn) | ||
732 | bb.utils.remove(logfn) | ||
733 | bb.utils.remove(loglink) | ||
734 | event.fire(TaskSucceeded(task, fn, logfn, localdata), localdata) | 734 | event.fire(TaskSucceeded(task, fn, logfn, localdata), localdata) |
735 | 735 | ||
736 | if not localdata.getVarFlag(task, 'nostamp', False) and not localdata.getVarFlag(task, 'selfstamp', False): | 736 | if not localdata.getVarFlag(task, 'nostamp', False) and not localdata.getVarFlag(task, 'selfstamp', False): |