ARG RUST_VERSION=1.98.0 FROM rust:$RUST_VERSION AS builder RUN cargo install --locked cargo-zigbuild RUN cargo install --locked cargo-chef FROM rust:$RUST_VERSION ARG TARGETARCH ARG ZIG_VERSION=0.16.0 RUN set -eux; \ case "$TARGETARCH" in \ amd64) ZIG_ARCH=x86_64 ;; \ arm64) ZIG_ARCH=aarch64 ;; \ *) echo "Unsupported target architecture: $TARGETARCH" >&2; exit 1 ;; \ esac; \ TARBALL="zig-${ZIG_ARCH}-linux-${ZIG_VERSION}.tar.xz"; \ DIR="zig-${ZIG_ARCH}-linux-${ZIG_VERSION}"; \ curl -fsSL "https://ziglang.org/download/${ZIG_VERSION}/${TARBALL}" -o /tmp/zig.tar.xz; \ tar -xJf /tmp/zig.tar.xz -C /usr/local; \ ln -s "/usr/local/${DIR}/zig" /usr/local/bin/zig; \ rm /tmp/zig.tar.xz RUN apt-get update && apt-get install -y libclang-dev clang && rm -rf /var/lib/apt/lists/* RUN rustup target add \ x86_64-unknown-linux-gnu \ x86_64-unknown-linux-musl \ aarch64-unknown-linux-gnu \ aarch64-unknown-linux-musl \ arm-unknown-linux-gnueabihf \ arm-unknown-linux-musleabihf COPY --from=builder /usr/local/cargo/bin/cargo-zigbuild /usr/local/cargo/bin/ COPY --from=builder /usr/local/cargo/bin/cargo-chef /usr/local/cargo/bin/