aboutsummaryrefslogtreecommitdiff
path: root/build2/algorithm
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2017-02-10 08:15:48 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2017-02-13 12:42:42 +0200
commitabccaf9596461215fce0e32322133fb6c39be44f (patch)
tree3fc16a6e6142d65e6b47ae686ab845cc164478cc /build2/algorithm
parentbcb2a89e111a918a48a132a2a29e0c26d724591d (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/algorithm12
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&);