diff --git a/compiled_starters/zig/build.zig b/compiled_starters/zig/build.zig index c6727a85..3ae035c4 100644 --- a/compiled_starters/zig/build.zig +++ b/compiled_starters/zig/build.zig @@ -3,10 +3,11 @@ const std = @import("std"); // Learn more about this file here: https://ziglang.org/learn/build-system pub fn build(b: *std.Build) void { const exe = b.addExecutable(.{ - .name = "zig", + .name = "redis_challenge", .root_source_file = b.path("src/main.zig"), .target = b.standardTargetOptions(.{}), .optimize = b.standardOptimizeOption(.{}), + .link_libc = true, }); // This declares intent for the executable to be installed into the diff --git a/compiled_starters/zig/spawn_redis_server.sh b/compiled_starters/zig/spawn_redis_server.sh index 04c397c6..6975a8a6 100755 --- a/compiled_starters/zig/spawn_redis_server.sh +++ b/compiled_starters/zig/spawn_redis_server.sh @@ -7,4 +7,4 @@ # DON'T EDIT THIS! set -e -exec zig build run -- $@ +exec zig build run -Doptimize=ReleaseFast -- $@ diff --git a/dockerfiles/zig-0.12.Dockerfile b/dockerfiles/zig-0.12.Dockerfile index 1d66ea2d..01c46fb8 100644 --- a/dockerfiles/zig-0.12.Dockerfile +++ b/dockerfiles/zig-0.12.Dockerfile @@ -1,7 +1,25 @@ -FROM alpine:3.19 +FROM debian:stable-slim -# Add the testing repository -RUN echo "@community http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories +# Update package list and install required packages +RUN apt-get update && \ + apt-get install -y curl xz-utils build-essential libc-dev && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +# Set Zig version +ENV ZIG_VERSION=0.12.0 + +WORKDIR /app + +# Download and install Zig to /usr/local/bin +RUN curl -LO https://ziglang.org/download/${ZIG_VERSION}/zig-linux-$(uname -m)-${ZIG_VERSION}.tar.xz && \ + tar -xf zig-linux-$(uname -m)-${ZIG_VERSION}.tar.xz && \ + mkdir -p /usr/local/zig && \ + mv zig-linux-$(uname -m)-${ZIG_VERSION}/* /usr/local/zig/ && \ + rmdir zig-linux-$(uname -m)-${ZIG_VERSION} && \ + rm zig-linux-$(uname -m)-${ZIG_VERSION}.tar.xz + +ENV PATH="/usr/local/zig:${PATH}" # We should use build.zig & build.zig.zon to cache downloading deps, but we don't have this wired up yet. # @@ -14,8 +32,8 @@ RUN echo "@community http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /et # # ENV CODECRAFTERS_DEPENDENCY_FILE_PATHS="build.zig,build.zig.zon" -# Update the package list and install Zig -RUN apk add --no-cache zig@community=0.12.0-r0 +# Create precompile script +RUN printf "set -e \ncd \${CODECRAFTERS_SUBMISSION_DIR} \necho 'Running zig build' \nzig build -Doptimize=ReleaseFast \necho 'zig build completed.' \n" > /codecrafters-precompile.sh -RUN printf "set -e \ncd \${CODECRAFTERS_SUBMISSION_DIR} \necho 'Running zig build' \nzig build \necho 'zig build completed.' \n" > /codecrafters-precompile.sh +# Make precompile script executable RUN chmod +x /codecrafters-precompile.sh diff --git a/solutions/zig/01-jm1/code/build.zig b/solutions/zig/01-jm1/code/build.zig index c6727a85..3ae035c4 100644 --- a/solutions/zig/01-jm1/code/build.zig +++ b/solutions/zig/01-jm1/code/build.zig @@ -3,10 +3,11 @@ const std = @import("std"); // Learn more about this file here: https://ziglang.org/learn/build-system pub fn build(b: *std.Build) void { const exe = b.addExecutable(.{ - .name = "zig", + .name = "redis_challenge", .root_source_file = b.path("src/main.zig"), .target = b.standardTargetOptions(.{}), .optimize = b.standardOptimizeOption(.{}), + .link_libc = true, }); // This declares intent for the executable to be installed into the diff --git a/solutions/zig/01-jm1/code/spawn_redis_server.sh b/solutions/zig/01-jm1/code/spawn_redis_server.sh index 04c397c6..6975a8a6 100755 --- a/solutions/zig/01-jm1/code/spawn_redis_server.sh +++ b/solutions/zig/01-jm1/code/spawn_redis_server.sh @@ -7,4 +7,4 @@ # DON'T EDIT THIS! set -e -exec zig build run -- $@ +exec zig build run -Doptimize=ReleaseFast -- $@ diff --git a/starter_templates/zig/build.zig b/starter_templates/zig/build.zig index c6727a85..3ae035c4 100644 --- a/starter_templates/zig/build.zig +++ b/starter_templates/zig/build.zig @@ -3,10 +3,11 @@ const std = @import("std"); // Learn more about this file here: https://ziglang.org/learn/build-system pub fn build(b: *std.Build) void { const exe = b.addExecutable(.{ - .name = "zig", + .name = "redis_challenge", .root_source_file = b.path("src/main.zig"), .target = b.standardTargetOptions(.{}), .optimize = b.standardOptimizeOption(.{}), + .link_libc = true, }); // This declares intent for the executable to be installed into the diff --git a/starter_templates/zig/spawn_redis_server.sh b/starter_templates/zig/spawn_redis_server.sh index 04c397c6..6975a8a6 100755 --- a/starter_templates/zig/spawn_redis_server.sh +++ b/starter_templates/zig/spawn_redis_server.sh @@ -7,4 +7,4 @@ # DON'T EDIT THIS! set -e -exec zig build run -- $@ +exec zig build run -Doptimize=ReleaseFast -- $@