From abccaf9596461215fce0e32322133fb6c39be44f Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Fri, 10 Feb 2017 08:15:48 +0200 Subject: 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. --- build2/context | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'build2/context') 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 -- cgit v1.1