ARG NODE_VERSION=24.15.0 FROM ubuntu:24.04 ARG NODE_VERSION ARG PNPM_VERSION=11.1.3 ARG ZIG_VERSION=0.16.0 ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update \ && apt-get install --yes --no-install-recommends \ ca-certificates curl gnupg \ && curl --fail --silent --show-error --location https://apt.llvm.org/llvm-snapshot.gpg.key \ | gpg --dearmor --output /usr/share/keyrings/llvm-snapshot.gpg \ && echo "deb [signed-by=/usr/share/keyrings/llvm-snapshot.gpg] https://apt.llvm.org/noble/ llvm-toolchain-noble-22 main" \ > /etc/apt/sources.list.d/llvm22.list \ && apt-get update \ && apt-get install --yes --no-install-recommends \ build-essential \ ca-certificates \ ccache \ clang-22 \ cmake \ curl \ git \ libclang-rt-22-dev \ libzstd-dev \ llvm-22-dev \ ninja-build \ xz-utils \ zlib1g-dev \ && ln -sf clang-22 /usr/bin/clang \ && ln -sf clang++-22 /usr/bin/clang++ \ && test "$(llvm-config-22 --version)" = 22.1.8 \ && rm -rf /var/lib/apt/lists/* RUN curl --fail --silent --show-error --location \ --output /tmp/node.tar.xz \ "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.xz" \ && curl --fail --silent --show-error --location \ --output /tmp/SHASUMS256.txt \ "https://nodejs.org/dist/v${NODE_VERSION}/SHASUMS256.txt" \ && grep " node-v${NODE_VERSION}-linux-x64.tar.xz$" /tmp/SHASUMS256.txt \ | sed 's#node-v[^ ]*-linux-x64.tar.xz#/tmp/node.tar.xz#' \ | sha256sum --check --strict - \ && tar -xJf /tmp/node.tar.xz --directory /usr/local --strip-components=1 \ && rm /tmp/node.tar.xz /tmp/SHASUMS256.txt COPY scripts/install-zig.sh /tmp/install-zig.sh RUN sh /tmp/install-zig.sh "$ZIG_VERSION" \ && rm /tmp/install-zig.sh RUN npm install --global "pnpm@${PNPM_VERSION}" WORKDIR /workspace COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ COPY packages/cli/package.json packages/cli/package.json COPY packages/compiler/package.json packages/compiler/package.json COPY packages/runtime/package.json packages/runtime/package.json RUN pnpm install --frozen-lockfile \ && chmod -R a+rwX /workspace