-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathheader_chain_build.dockerfile
34 lines (28 loc) · 1.42 KB
/
header_chain_build.dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
FROM risczero/risc0-guest-builder:r0.1.81.0 AS build
WORKDIR /src
# Copy the entire project structure
COPY header-chain header-chain
COPY core core
# Set compile-time environment variables
ENV CARGO_MANIFEST_PATH="header-chain/guest/Cargo.toml"
ENV RUSTFLAGS="-C passes=loweratomic -C link-arg=-Ttext=0x00200800 -C link-arg=--fatal-warnings"
ENV CARGO_TARGET_DIR="header-chain/guest/target"
ENV CC_riscv32im_risc0_zkvm_elf="/root/.local/share/cargo-risczero/cpp/bin/riscv32-unknown-elf-gcc"
ENV CFLAGS_riscv32im_risc0_zkvm_elf="-march=rv32im -nostdlib"
# Set network environment variable
ARG BITCOIN_NETWORK=mainnet
ENV BITCOIN_NETWORK=${BITCOIN_NETWORK}
# Only run the build once with the environment variable set
RUN echo "Building for network: ${BITCOIN_NETWORK}" && \
cd header-chain && \
cargo +risc0 update && \
cd .. && \
cd core && \
cargo +risc0 update && \
cd .. && \
cargo +risc0 fetch --target riscv32im-risc0-zkvm-elf --manifest-path ${CARGO_MANIFEST_PATH} && \
cargo +risc0 build --release --target riscv32im-risc0-zkvm-elf --manifest-path ${CARGO_MANIFEST_PATH}
FROM scratch AS export
ARG BITCOIN_NETWORK
COPY --from=build /src/header-chain/guest/target/riscv32im-risc0-zkvm-elf/release ../target/riscv-guest/riscv32im-risc0-zkvm-elf/docker/header_chain_guest
COPY --from=build /src/header-chain/guest/target/riscv32im-risc0-zkvm-elf/release/header-chain-guest ../elfs/${BITCOIN_NETWORK}-header-chain-guest