From a35d077ebcb3260136b536ce4b86422304e489ef Mon Sep 17 00:00:00 2001 From: nas Date: Sun, 31 Aug 2025 11:53:37 +0200 Subject: [PATCH 1/2] add support for zig 0.15 --- dockerfiles/zig-0.15.Dockerfile | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 dockerfiles/zig-0.15.Dockerfile diff --git a/dockerfiles/zig-0.15.Dockerfile b/dockerfiles/zig-0.15.Dockerfile new file mode 100644 index 0000000..9079759 --- /dev/null +++ b/dockerfiles/zig-0.15.Dockerfile @@ -0,0 +1,27 @@ +# syntax=docker/dockerfile:1.7-labs +FROM alpine:3.20 + +RUN apk add --no-cache 'xz>=5.6' 'curl>=8.9' + +# Download and install Zig +RUN curl -O https://ziglang.org/download/0.15.1/zig-linux-x86_64-0.15.1.tar.xz \ + && tar -xf zig-linux-x86_64-0.15.1.tar.xz \ + && mv zig-linux-x86_64-0.15.1 /usr/local/zig \ + && rm zig-linux-x86_64-0.15.1.tar.xz + +# Add Zig to PATH +ENV PATH="/usr/local/zig:${PATH}" + +ENV CODECRAFTERS_DEPENDENCY_FILE_PATHS="build.zig,build.zig.zon" + +WORKDIR /app + +# .git & README.md are unique per-repository. We ignore them on first copy to prevent cache misses +COPY --exclude=.git --exclude=README.md . /app + +# This runs zig build +RUN .codecrafters/compile.sh + +# Cache build directory +RUN mkdir -p /app-cached +RUN mv /app/.zig-cache /app-cached/.zig-cache || true From ef0db2a74cdaf0d3808d14bcc27592dfe655db1f Mon Sep 17 00:00:00 2001 From: nas Date: Sun, 31 Aug 2025 12:03:08 +0200 Subject: [PATCH 2/2] make sure build script does not use deprecated .root_source_file property --- compiled_starters/zig/build.zig | 8 +++++--- compiled_starters/zig/build.zig.zon | 2 +- compiled_starters/zig/codecrafters.yml | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/compiled_starters/zig/build.zig b/compiled_starters/zig/build.zig index d211b57..2a28237 100644 --- a/compiled_starters/zig/build.zig +++ b/compiled_starters/zig/build.zig @@ -4,9 +4,11 @@ const std = @import("std"); pub fn build(b: *std.Build) void { const exe = b.addExecutable(.{ .name = "main", - .root_source_file = b.path("src/main.zig"), - .target = b.standardTargetOptions(.{}), - .optimize = b.standardOptimizeOption(.{}), + .root_module = b.createModule(.{ + .root_source_file = b.path("src/main.zig"), + .target = b.standardTargetOptions(.{}), + .optimize = b.standardOptimizeOption(.{}), + }), }); // This declares intent for the executable to be installed into the diff --git a/compiled_starters/zig/build.zig.zon b/compiled_starters/zig/build.zig.zon index d658292..d764dfe 100644 --- a/compiled_starters/zig/build.zig.zon +++ b/compiled_starters/zig/build.zig.zon @@ -9,7 +9,7 @@ // This field is optional. // This is currently advisory only; Zig does not yet do anything // with this value. - .minimum_zig_version = "0.14.0", + .minimum_zig_version = "0.15.1", // This field is optional. // Each dependency must either provide a `url` and `hash`, or a `path`. diff --git a/compiled_starters/zig/codecrafters.yml b/compiled_starters/zig/codecrafters.yml index 7bb803b..64ad21c 100644 --- a/compiled_starters/zig/codecrafters.yml +++ b/compiled_starters/zig/codecrafters.yml @@ -8,4 +8,4 @@ debug: false # on Codecrafters. # # Available versions: zig-0.14 -buildpack: zig-0.14 +buildpack: zig-0.15