X-Git-Url: http://git.tremily.us/?a=blobdiff_plain;f=src%2Fengine%2FSCons%2FScript%2FMain.py;h=ec00737f435f1f5153ece96483e1cdf057dbe187;hb=a9164a54f907e235d17bdd501a556149637385bc;hp=75d01176985f5e9dd0f04caf3fa91e251204f375;hpb=941ef35c4655da2b486ff3e35431a8ed473cceab;p=scons.git diff --git a/src/engine/SCons/Script/Main.py b/src/engine/SCons/Script/Main.py index 75d01176..ec00737f 100644 --- a/src/engine/SCons/Script/Main.py +++ b/src/engine/SCons/Script/Main.py @@ -195,14 +195,17 @@ class BuildTask(SCons.Taskmaster.Task): def do_failed(self, status=2): _BuildFailures.append(self.exception[1]) global exit_status + global this_build_status if self.options.ignore_errors: SCons.Taskmaster.Task.executed(self) elif self.options.keep_going: SCons.Taskmaster.Task.fail_continue(self) exit_status = status + this_build_status = status else: SCons.Taskmaster.Task.fail_stop(self) exit_status = status + this_build_status = status def executed(self): t = self.targets[0] @@ -384,7 +387,9 @@ class QuestionTask(SCons.Taskmaster.Task): if self.targets[0].get_state() != SCons.Node.up_to_date or \ (self.top and not self.targets[0].exists()): global exit_status + global this_build_status exit_status = 1 + this_build_status = 1 self.tm.stop() def executed(self): @@ -428,7 +433,8 @@ print_stacktrace = 0 print_time = 0 sconscript_time = 0 cumulative_command_time = 0 -exit_status = 0 # exit status, assume success by default +exit_status = 0 # final exit status, assume success by default +this_build_status = 0 # "exit status" of an individual build num_jobs = None delayed_warnings = [] @@ -714,6 +720,7 @@ def version_string(label, module): def _main(parser): global exit_status + global this_build_status options = parser.values @@ -727,6 +734,7 @@ def _main(parser): default_warnings = [ SCons.Warnings.CorruptSConsignWarning, SCons.Warnings.DeprecatedWarning, SCons.Warnings.DuplicateEnvironmentWarning, + SCons.Warnings.LinkWarning, SCons.Warnings.MissingSConscriptWarning, SCons.Warnings.NoMD5ModuleWarning, SCons.Warnings.NoMetaclassSupportWarning, @@ -734,6 +742,7 @@ def _main(parser): SCons.Warnings.NoParallelSupportWarning, SCons.Warnings.MisleadingKeywordsWarning, SCons.Warnings.StackSizeWarning, ] + for warning in default_warnings: SCons.Warnings.enableWarningClass(warning) SCons.Warnings._warningOut = _scons_internal_warning @@ -974,6 +983,9 @@ def _main(parser): def _build_targets(fs, options, targets, target_top): + global this_build_status + this_build_status = 0 + progress_display.set_mode(not (options.no_progress or options.silent)) display.set_mode(not options.silent) SCons.Action.print_actions = not options.silent @@ -1143,9 +1155,11 @@ def _build_targets(fs, options, targets, target_top): if jobs.were_interrupted(): progress_display("scons: Build interrupted.") global exit_status + global this_build_status exit_status = 2 + this_build_status = 2 - if exit_status: + if this_build_status: progress_display("scons: " + failure_message) else: progress_display("scons: " + closing_message)