From 750294aa1f87815e23bac1f3e6e287cf9fa88705 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 6 Aug 2026 20:27:23 -0700 Subject: [PATCH] Maker: introduce transitive_skip --- lib/compiler/Maker.zig | 21 ++++++++++++++++----- lib/compiler/Maker/Step.zig | 3 +++ 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/lib/compiler/Maker.zig b/lib/compiler/Maker.zig index f949ac591a951a2f7ac5bc8fe5b5a672c85d4413..d0d36f62ce2c0d36aac774392edce182ed621d4a 100644 --- a/lib/compiler/Maker.zig +++ b/lib/compiler/Maker.zig @@ -2119,7 +2119,7 @@ fn markFailedStepsDirty(maker: *Maker) void { for (all_steps) |step_index| { const step = maker.stepByIndex(step_index); switch (step.state) { - .dependency_failure, .failure, .skipped => _ = maker.invalidateResult(step), + .dependency_failure, .dependency_skipped, .failure, .skipped => _ = maker.invalidateResult(step), else => continue, } } @@ -2334,7 +2334,7 @@ fn makeSteps( .precheck_unstarted => unreachable, .precheck_started => unreachable, .precheck_done => unreachable, - .dependency_failure => pending_count += 1, + .dependency_failure, .dependency_skipped => pending_count += 1, .success => success_count += 1, .skipped, .skipped_oom => skipped_count += 1, .failure => { @@ -2580,9 +2580,12 @@ fn makeStep( .failure, .dependency_failure, + => break .dependency_failure, + + .dependency_skipped, .skipped_oom, .skipped, - => break .dependency_failure, + => break .dependency_skipped, .success => {}, } @@ -2603,11 +2606,12 @@ fn makeStep( .failure, .dependency_failure, + .dependency_skipped, .skipped_oom, + .skipped, => false, .success, - .skipped, => true, }; @@ -2624,7 +2628,7 @@ fn makeStep( .precheck_done => unreachable, .success => .success, .failure, .dependency_failure => .failure, - .skipped => .skipped, + .dependency_skipped, .skipped => .skipped, .skipped_oom => .skipped_oom, }; serveBuildStepCompleted( @@ -2778,6 +2782,12 @@ fn printStepStatus(maker: *Maker, step_index: Configuration.Step.Index, stderr: try stderr.setColor(.reset); }, + .dependency_skipped => { + try stderr.setColor(.dim); + try writer.writeAll(" transitive skip\n"); + try stderr.setColor(.reset); + }, + .success => { try stderr.setColor(.green); if (s.result_cached) { @@ -3024,6 +3034,7 @@ fn constructGraphAndCheckForDependencyLoop( // These don't happen until we actually run the step graph. .dependency_failure => unreachable, + .dependency_skipped => unreachable, .success => unreachable, .failure => unreachable, .skipped => unreachable, diff --git a/lib/compiler/Maker/Step.zig b/lib/compiler/Maker/Step.zig index b8c5992cce243ed5b7f5fb0cdfc1b6b9d92f7fdb..181cdf2bd75fc678fc45d72cbab16a9e9bbeecd1 100644 --- a/lib/compiler/Maker/Step.zig +++ b/lib/compiler/Maker/Step.zig @@ -163,6 +163,9 @@ pub const State = enum { /// be re-evaluated. precheck_done, dependency_failure, + /// Handled exactly the same as `dependency_failure` except communicates + /// that the dependency didn't fail but rather was skipped. + dependency_skipped, success, failure, /// This state indicates that the step did not complete, however, it also did not fail, -- 2.54.0