lez-programs/scripts/build-guests.Dockerfile
2026-07-02 18:16:40 +02:00

45 lines
1.8 KiB
Docker

# syntax=docker/dockerfile:1.7
ARG RISC0_DOCKER_CONTAINER_TAG=r0.1.88.0
FROM risczero/risc0-guest-builder:${RISC0_DOCKER_CONTAINER_TAG} AS build
ARG RISC0_BUILD_CACHE_ID=lez-programs-risc0-guests
WORKDIR /src
COPY . .
ENV CARGO_TARGET_DIR=/src/target/risc0-guests
ENV RISC0_FEATURE_bigint2=""
ENV CC_riscv32im_risc0_zkvm_elf=/root/.risc0/cpp/bin/riscv32-unknown-elf-gcc
ENV CFLAGS_riscv32im_risc0_zkvm_elf="-march=rv32im -nostdlib"
RUN --mount=type=cache,id=${RISC0_BUILD_CACHE_ID}-cargo-git,sharing=locked,target=/root/.cargo/git \
--mount=type=cache,id=${RISC0_BUILD_CACHE_ID}-cargo-registry,sharing=locked,target=/root/.cargo/registry \
--mount=type=cache,id=${RISC0_BUILD_CACHE_ID}-target,sharing=locked,target=/src/target/risc0-guests <<'EOF'
set -eu
target_triple="riscv32im-risc0-zkvm-elf"
programs="amm ata stablecoin token twap_oracle"
unit_separator="$(printf '\037')"
guest_rustflags="-C${unit_separator}passes=lower-atomic${unit_separator}-C${unit_separator}link-arg=-Ttext=0x00200800${unit_separator}-C${unit_separator}link-arg=--fatal-warnings${unit_separator}-C${unit_separator}panic=abort${unit_separator}--cfg${unit_separator}getrandom_backend=\"custom\""
export CARGO_ENCODED_RUSTFLAGS="${guest_rustflags}"
for program in ${programs}; do
manifest="programs/${program}/methods/guest/Cargo.toml"
echo "==> Building ${program}"
cargo +risc0 build --release --locked --target "${target_triple}" --manifest-path "${manifest}"
done
mkdir -p /guest-output
unset CARGO_ENCODED_RUSTFLAGS
cargo +risc0 build --locked -p risc0-packager
packager="${CARGO_TARGET_DIR}/debug/risc0-packager"
for program in ${programs}; do
elf="${CARGO_TARGET_DIR}/${target_triple}/release/${program}"
"${packager}" "${elf}" "/guest-output/${program}.bin"
done
EOF
FROM scratch AS export
COPY --from=build /guest-output /