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 {
21192119 for (all_steps) |step_index| {
21202120 const step = maker.stepByIndex(step_index);
21212121 switch (step.state) {
2122 .dependency_failure, .failure, .skipped => _ = maker.invalidateResult(step),
2122 .dependency_failure, .dependency_skipped, .failure, .skipped => _ = maker.invalidateResult(step),
21232123 else => continue,
21242124 }
21252125 }
......@@ -2334,7 +2334,7 @@ fn makeSteps(
23342334 .precheck_unstarted => unreachable,
23352335 .precheck_started => unreachable,
23362336 .precheck_done => unreachable,
2337 .dependency_failure => pending_count += 1,
2337 .dependency_failure, .dependency_skipped => pending_count += 1,
23382338 .success => success_count += 1,
23392339 .skipped, .skipped_oom => skipped_count += 1,
23402340 .failure => {
......@@ -2580,9 +2580,12 @@ fn makeStep(
25802580
25812581 .failure,
25822582 .dependency_failure,
2583 => break .dependency_failure,
2584
2585 .dependency_skipped,
25832586 .skipped_oom,
25842587 .skipped,
2585 => break .dependency_failure,
2588 => break .dependency_skipped,
25862589
25872590 .success => {},
25882591 }
......@@ -2603,11 +2606,12 @@ fn makeStep(
26032606
26042607 .failure,
26052608 .dependency_failure,
2609 .dependency_skipped,
26062610 .skipped_oom,
2611 .skipped,
26072612 => false,
26082613
26092614 .success,
2610 .skipped,
26112615 => true,
26122616 };
26132617
......@@ -2624,7 +2628,7 @@ fn makeStep(
26242628 .precheck_done => unreachable,
26252629 .success => .success,
26262630 .failure, .dependency_failure => .failure,
2627 .skipped => .skipped,
2631 .dependency_skipped, .skipped => .skipped,
26282632 .skipped_oom => .skipped_oom,
26292633 };
26302634 serveBuildStepCompleted(
......@@ -2778,6 +2782,12 @@ fn printStepStatus(maker: *Maker, step_index: Configuration.Step.Index, stderr:
27782782 try stderr.setColor(.reset);
27792783 },
27802784
2785 .dependency_skipped => {
2786 try stderr.setColor(.dim);
2787 try writer.writeAll(" transitive skip\n");
2788 try stderr.setColor(.reset);
2789 },
2790
27812791 .success => {
27822792 try stderr.setColor(.green);
27832793 if (s.result_cached) {
......@@ -3024,6 +3034,7 @@ fn constructGraphAndCheckForDependencyLoop(
30243034
30253035 // These don't happen until we actually run the step graph.
30263036 .dependency_failure => unreachable,
3037 .dependency_skipped => unreachable,
30273038 .success => unreachable,
30283039 .failure => unreachable,
30293040 .skipped => unreachable,
lib/compiler/Maker/Step.zig+3
......@@ -163,6 +163,9 @@ pub const State = enum {
163163 /// be re-evaluated.
164164 precheck_done,
165165 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,
166169 success,
167170 failure,
168171 /// This state indicates that the step did not complete, however, it also did not fail,