diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2017-02-10 08:15:48 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2017-02-13 12:42:42 +0200 |
commit | abccaf9596461215fce0e32322133fb6c39be44f (patch) | |
tree | 3fc16a6e6142d65e6b47ae686ab845cc164478cc /build2/context | |
parent | bcb2a89e111a918a48a132a2a29e0c26d724591d (diff) |
Implement parallel error propagation, keep_going mode
Keep going is the default but there is now the -s|--serial-stop that makes
the driver run serially and stop at first error.
Also fix some lockups, other minor improvements/features.
Diffstat (limited to 'build2/context')
-rw-r--r-- | build2/context | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/build2/context b/build2/context index da2ced5..3c731a5 100644 --- a/build2/context +++ b/build2/context @@ -111,7 +111,7 @@ namespace build2 // } // } // - // sched.wait (); // (3) + // sched.wait (task_count); // (3) // // Here is what's going on here: // @@ -237,6 +237,14 @@ namespace build2 current_mode = inner_oif.mode; } + // Keep going flag. + // + // Note that setting it to false is not of much help unless we are running + // serially. In parallel we queue most of the things up before we see any + // failures. + // + extern bool keep_going; + // Total number of dependency relationships in the current action. // Together with the target::dependents count it is incremented // during the rule search & match phase and is decremented during @@ -321,6 +329,15 @@ namespace build2 } void + diag_did (ostream&, const action&, const target&); + + inline diag_phrase + diag_did (const action& a, const target& t) + { + return diag_phrase {a, t, &diag_did}; + } + + void diag_done (ostream&, const action&, const target&); inline diag_phrase |