mirror of
https://github.com/logos-blockchain/lez-programs.git
synced 2026-08-25 06:01:11 +00:00
build: add shared guest program build
This commit is contained in:
committed by
r4bbit
parent
0a120bd42c
commit
a26debd592
@@ -0,0 +1,44 @@
|
||||
# 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 /
|
||||
Executable
+34
@@ -0,0 +1,34 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd -P)"
|
||||
risc0_tag="${RISC0_DOCKER_CONTAINER_TAG:-r0.1.88.0}"
|
||||
cache_id="${RISC0_BUILD_CACHE_ID:-lez-programs-risc0-guests}"
|
||||
network_mode="${RISC0_DOCKER_BUILD_NETWORK:-}"
|
||||
staging_dir="$(mktemp -d)"
|
||||
|
||||
cleanup() {
|
||||
rm -rf "${staging_dir}"
|
||||
}
|
||||
trap cleanup EXIT
|
||||
|
||||
network_args=()
|
||||
if [[ -n "${network_mode}" ]]; then
|
||||
network_args=(--network "${network_mode}")
|
||||
fi
|
||||
|
||||
DOCKER_BUILDKIT=1 docker build ${network_args[@]+"${network_args[@]}"} \
|
||||
--build-arg "RISC0_DOCKER_CONTAINER_TAG=${risc0_tag}" \
|
||||
--build-arg "RISC0_BUILD_CACHE_ID=${cache_id}" \
|
||||
--output="${staging_dir}" \
|
||||
-f "${repo_root}/scripts/build-guests.Dockerfile" \
|
||||
"${repo_root}"
|
||||
|
||||
out_dir="${repo_root}/target/guest"
|
||||
rm -rf "${out_dir}"
|
||||
mkdir -p "${out_dir}"
|
||||
|
||||
for program in amm ata stablecoin token twap_oracle; do
|
||||
rm -rf "${repo_root}/programs/${program}/methods/guest/target"
|
||||
install -m 0644 "${staging_dir}/${program}.bin" "${out_dir}/${program}.bin"
|
||||
done
|
||||
Reference in New Issue
Block a user