authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-08-06 20:27:23-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-08-07 11:19:55-07:00
log750294aa1f87815e23bac1f3e6e287cf9fa88705
tree1a4e3293f223c68034d02a49a4cbccb4b92511b9
parentd9d308f6241e6b3add34429cc2e8698c6d17c635

Maker: introduce transitive_skip


2 files changed, 19 insertions(+), 5 deletions(-)

lib/compiler/Maker.zig+16-5
...@@ -2119,7 +2119,7 @@ fn markFailedStepsDirty(maker: *Maker) void {...@@ -2119,7 +2119,7 @@ fn markFailedStepsDirty(maker: *Maker) void {
2119 for (all_steps) |step_index| {2119 for (all_steps) |step_index| {
2120 const step = maker.stepByIndex(step_index);2120 const step = maker.stepByIndex(step_index);
2121 switch (step.state) {2121 switch (step.state) {
2122 .dependency_failure, .failure, .skipped => _ = maker.invalidateResult(step),2122 .dependency_failure, .dependency_skipped, .failure, .skipped => _ = maker.invalidateResult(step),
2123 else => continue,2123 else => continue,
2124 }2124 }
2125 }2125 }
...@@ -2334,7 +2334,7 @@ fn makeSteps(...@@ -2334,7 +2334,7 @@ fn makeSteps(
2334 .precheck_unstarted => unreachable,2334 .precheck_unstarted => unreachable,
2335 .precheck_started => unreachable,2335 .precheck_started => unreachable,
2336 .precheck_done => unreachable,2336 .precheck_done => unreachable,
2337 .dependency_failure => pending_count += 1,2337 .dependency_failure, .dependency_skipped => pending_count += 1,
2338 .success => success_count += 1,2338 .success => success_count += 1,
2339 .skipped, .skipped_oom => skipped_count += 1,2339 .skipped, .skipped_oom => skipped_count += 1,
2340 .failure => {2340 .failure => {
...@@ -2580,9 +2580,12 @@ fn makeStep(...@@ -2580,9 +2580,12 @@ fn makeStep(
25802580
2581 .failure,2581 .failure,
2582 .dependency_failure,2582 .dependency_failure,
2583 => break .dependency_failure,
2584
2585 .dependency_skipped,
2583 .skipped_oom,2586 .skipped_oom,
2584 .skipped,2587 .skipped,
2585 => break .dependency_failure,2588 => break .dependency_skipped,
25862589
2587 .success => {},2590 .success => {},
2588 }2591 }
...@@ -2603,11 +2606,12 @@ fn makeStep(...@@ -2603,11 +2606,12 @@ fn makeStep(
26032606
2604 .failure,2607 .failure,
2605 .dependency_failure,2608 .dependency_failure,
2609 .dependency_skipped,
2606 .skipped_oom,2610 .skipped_oom,
2611 .skipped,
2607 => false,2612 => false,
26082613
2609 .success,2614 .success,
2610 .skipped,
2611 => true,2615 => true,
2612 };2616 };
26132617
...@@ -2624,7 +2628,7 @@ fn makeStep(...@@ -2624,7 +2628,7 @@ fn makeStep(
2624 .precheck_done => unreachable,2628 .precheck_done => unreachable,
2625 .success => .success,2629 .success => .success,
2626 .failure, .dependency_failure => .failure,2630 .failure, .dependency_failure => .failure,
2627 .skipped => .skipped,2631 .dependency_skipped, .skipped => .skipped,
2628 .skipped_oom => .skipped_oom,2632 .skipped_oom => .skipped_oom,
2629 };2633 };
2630 serveBuildStepCompleted(2634 serveBuildStepCompleted(
...@@ -2778,6 +2782,12 @@ fn printStepStatus(maker: *Maker, step_index: Configuration.Step.Index, stderr:...@@ -2778,6 +2782,12 @@ fn printStepStatus(maker: *Maker, step_index: Configuration.Step.Index, stderr:
2778 try stderr.setColor(.reset);2782 try stderr.setColor(.reset);
2779 },2783 },
27802784
2785 .dependency_skipped => {
2786 try stderr.setColor(.dim);
2787 try writer.writeAll(" transitive skip\n");
2788 try stderr.setColor(.reset);
2789 },
2790
2781 .success => {2791 .success => {
2782 try stderr.setColor(.green);2792 try stderr.setColor(.green);
2783 if (s.result_cached) {2793 if (s.result_cached) {
...@@ -3024,6 +3034,7 @@ fn constructGraphAndCheckForDependencyLoop(...@@ -3024,6 +3034,7 @@ fn constructGraphAndCheckForDependencyLoop(
30243034
3025 // These don't happen until we actually run the step graph.3035 // These don't happen until we actually run the step graph.
3026 .dependency_failure => unreachable,3036 .dependency_failure => unreachable,
3037 .dependency_skipped => unreachable,
3027 .success => unreachable,3038 .success => unreachable,
3028 .failure => unreachable,3039 .failure => unreachable,
3029 .skipped => unreachable,3040 .skipped => unreachable,
lib/compiler/Maker/Step.zig+3
...@@ -163,6 +163,9 @@ pub const State = enum {...@@ -163,6 +163,9 @@ pub const State = enum {
163 /// be re-evaluated.163 /// be re-evaluated.
164 precheck_done,164 precheck_done,
165 dependency_failure,165 dependency_failure,
166 /// Handled exactly the same as `dependency_failure` except communicates
167 /// that the dependency didn't fail but rather was skipped.
168 dependency_skipped,
166 success,169 success,
167 failure,170 failure,
168 /// This state indicates that the step did not complete, however, it also did not fail,171 /// This state indicates that the step did not complete, however, it also did not fail,