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/algorithm | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'build2/algorithm') diff --git a/build2/algorithm b/build2/algorithm index 5ee6c64..33da884 100644 --- a/build2/algorithm +++ b/build2/algorithm @@ -149,9 +149,11 @@ namespace build2 // Execute the action on target, assuming a rule has been matched and the // recipe for this action has been set. This is the synchrounous executor - // implementation (but may still return target_state::busy is the target + // implementation (but may still return target_state::busy if the target // is already being executed). Decrements the dependents count. // + // Note: does not translate target_state::failed to the failed exception. + // target_state execute (action, const target&); @@ -159,6 +161,8 @@ namespace build2 // if the asynchrounous execution has been started and target_state::busy if // the target has already been busy. // + // Note: does not translate target_state::failed to the failed exception. + // target_state execute_async (action, const target&, size_t start_count, atomic_count& task_count); @@ -174,8 +178,10 @@ namespace build2 // A special version of the above that should be used for "direct" and "now" // execution, that is, side-stepping the normal target-prerequisite // relationship (so no dependents count is decremented) and execution order - // (so this function never returns the postponed target state). It will also - // wait for the completion if the target is busy. + // (so this function never returns the postponed target state). + // + // Note: waits for the completion if the target is busy and translates + // target_state::failed to the failed exception. // target_state execute_direct (action, const target&); -- cgit v1.1