authorgravatar for mlugg@mlugg.co.ukMatthew Lugg <mlugg@mlugg.co.uk> 2025-11-15 09:45:22+00:00
committergravatar for mlugg@mlugg.co.ukMatthew Lugg <mlugg@mlugg.co.uk> 2025-11-15 09:49:02+00:00
logcd8fdd252d9ffd5bfb772cef49e4c79041872d38
tree35e9647d4129edf2d4e5caf0b8233727d58765ab
parentbc78d8efdb90c77670c30474071942f093a2427f
signaturelock-open Commit is signed but in an unrecognized format.

build.zig: use `Step.UpdateSourceFiles` for `zig1.wasm`

We were already using this for `stage1/zig.h`, but `stage1/zig1.wasm` was being modified directly by the `wasm-opt` command. That's a bad idea because it forces the build system to assume that `wasm-opt` has side effects, so it is re-run every time you run `zig build update-zig1`, i.e. it does not interact with the cache system correctly. It is much better to create non-side-effecting `Run` steps (using `addOutput*Arg`) where possible so that the build system has a more correct understanding of the step graph.

1 files changed, 5 insertions(+), 5 deletions(-)

build.zig+5-5
...@@ -678,14 +678,14 @@ fn addWasiUpdateStep(b: *std.Build, version: [:0]const u8) !void {...@@ -678,14 +678,14 @@ fn addWasiUpdateStep(b: *std.Build, version: [:0]const u8) !void {
678 });678 });
679 run_opt.addArtifactArg(exe);679 run_opt.addArtifactArg(exe);
680 run_opt.addArg("-o");680 run_opt.addArg("-o");
681 run_opt.addFileArg(b.path("stage1/zig1.wasm"));681 const optimized_wasm = run_opt.addOutputFileArg("zig1.wasm");
682682
683 const copy_zig_h = b.addUpdateSourceFiles();683 const update_zig1 = b.addUpdateSourceFiles();
684 copy_zig_h.addCopyFileToSource(b.path("lib/zig.h"), "stage1/zig.h");684 update_zig1.addCopyFileToSource(optimized_wasm, "stage1/zig1.wasm");
685 update_zig1.addCopyFileToSource(b.path("lib/zig.h"), "stage1/zig.h");
685686
686 const update_zig1_step = b.step("update-zig1", "Update stage1/zig1.wasm");687 const update_zig1_step = b.step("update-zig1", "Update stage1/zig1.wasm");
687 update_zig1_step.dependOn(&run_opt.step);688 update_zig1_step.dependOn(&update_zig1.step);
688 update_zig1_step.dependOn(&copy_zig_h.step);
689}689}
690690
691const AddCompilerModOptions = struct {691const AddCompilerModOptions = struct {