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/algorithm | |
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/algorithm')
-rw-r--r-- | build2/algorithm | 12 |
1 files changed, 9 insertions, 3 deletions
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&); |