FROM node:trixie AS builder WORKDIR /workerd # Replacing build-essential with dpkg-dev here, no need to install gcc. RUN apt-get update RUN apt-get install -y --no-install-recommends curl dpkg-dev git lsb-release wget software-properties-common gnupg tcl RUN wget https://apt.llvm.org/llvm.sh # Drop the install step here so we can install just the packages we need. RUN sed -i '/apt-get install/d' llvm.sh RUN chmod +x llvm.sh RUN ./llvm.sh 19 RUN apt-get install -y --no-install-recommends clang-19 lld-19 libunwind-19 libc++abi1-19 libc++1-19 libc++-19-dev libclang-rt-19-dev COPY . . RUN echo "build:linux --repo_env=CC=/usr/lib/llvm-19/bin/clang" >> .bazelrc COPY .bazel-cache /bazel-disk-cache # pnpm version will be different depending on the value of `packageManager` field in package.json RUN npm install -g pnpm@latest RUN pnpm install RUN pnpm exec bazel build --disk_cache=/bazel-disk-cache --config=release_linux //src/workerd/server:workerd FROM scratch as artifact COPY --from=builder /workerd/bazel-bin/src/workerd/server/workerd /workerd-linux-arm64 COPY --from=builder /bazel-disk-cache /.bazel-cache