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