From f6d02a909f02757bd367c98122b06fb529210853 Mon Sep 17 00:00:00 2001 From: srdtrk <59252793+srdtrk@users.noreply.github.com> Date: Tue, 13 Aug 2024 18:49:50 +0200 Subject: [PATCH] imp: build programs automatically when operator is building (#95) * just: improve justfile * build: added build script for programs * just: simplified ci and justfile * ci: turned program ci into matrix ci * ci: renamed job * ci: fix build ci --- .github/workflows/programs.yml | 68 ++++++---------------------------- .github/workflows/rust.yml | 14 +------ Cargo.lock | 24 ++++++++++++ Cargo.toml | 2 +- justfile | 11 ++---- operator/Cargo.toml | 3 ++ operator/build.rs | 32 ++++++++++++++++ 7 files changed, 76 insertions(+), 78 deletions(-) create mode 100644 operator/build.rs diff --git a/.github/workflows/programs.yml b/.github/workflows/programs.yml index 96aa992..d7ea617 100644 --- a/.github/workflows/programs.yml +++ b/.github/workflows/programs.yml @@ -7,11 +7,17 @@ on: pull_request: jobs: - update-client: + build-programs: strategy: - fail-fast: true - name: build-update-client - runs-on: ubuntu-20.04 + fail-fast: false + matrix: + programs: + # List your program directories here + - programs/update-client + - programs/membership + - programs/uc-and-membership + name: 'build: ${{ matrix.programs }}' + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -30,57 +36,5 @@ jobs: - name: Build SP1 program run: | - cd programs/update-client - ~/.sp1/bin/cargo-prove prove build - - membership: - strategy: - fail-fast: true - name: build-membership - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v4 - - - name: Install rust toolchain - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: stable - override: true - - - name: Install SP1 toolchain - run: | - curl -L https://sp1.succinct.xyz | bash - ~/.sp1/bin/sp1up - ~/.sp1/bin/cargo-prove prove --version - - - name: Build SP1 program - run: | - cd programs/membership - ~/.sp1/bin/cargo-prove prove build - - uc-and-membership: - strategy: - fail-fast: true - name: build-uc-and-membership - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v4 - - - name: Install rust toolchain - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: stable - override: true - - - name: Install SP1 toolchain - run: | - curl -L https://sp1.succinct.xyz | bash - ~/.sp1/bin/sp1up - ~/.sp1/bin/cargo-prove prove --version - - - name: Build SP1 program - run: | - cd programs/uc-and-membership + cd ${{ matrix.programs }} ~/.sp1/bin/cargo-prove prove build diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 96a3714..8a6129f 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -59,14 +59,8 @@ jobs: ~/.sp1/bin/cargo-prove prove --version - name: Install just uses: extractions/setup-just@v2 - - name: Build SP1 Programs - run: just build-programs - - name: Run unit tests - uses: actions-rs/cargo@v1 - with: - command: test - args: --workspace --exclude sp1-ics07-tendermint-update-client --exclude sp1-ics07-tendermint-membership --exclude sp1-ics07-tendermint-uc-and-membership --locked + run: just test-cargo env: RUST_BACKTRACE: 1 @@ -88,13 +82,9 @@ jobs: curl -L https://sp1.succinct.xyz | bash ~/.sp1/bin/sp1up ~/.sp1/bin/cargo-prove prove --version - - name: Install just - uses: extractions/setup-just@v2 - - name: Build SP1 Programs - run: just build-programs - name: Build uses: actions-rs/cargo@v1 with: command: build - args: --workspace --exclude sp1-ics07-tendermint-update-client --exclude sp1-ics07-tendermint-membership--locked --exclude sp1-ics07-tendermint-uc-and-membership --all-features + args: --workspace --exclude sp1-ics07-tendermint-update-client --exclude sp1-ics07-tendermint-membership --exclude sp1-ics07-tendermint-uc-and-membership --all-features --locked diff --git a/Cargo.lock b/Cargo.lock index 7f3957d..5e618fa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5643,6 +5643,18 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "sp1-build" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65c9c5c2628b485693b6c2e5ba89f1af7ce5cfede39a6a4b041afd2e5b838480" +dependencies = [ + "anyhow", + "cargo_metadata", + "clap", + "dirs", +] + [[package]] name = "sp1-core" version = "1.1.1" @@ -5717,6 +5729,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "sp1-helper" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec6177089127a447ea26b258f722050c0c4f874eba5df7934b246b59088c8f72" +dependencies = [ + "cargo_metadata", + "chrono", + "sp1-build", +] + [[package]] name = "sp1-ics07-tendermint-membership" version = "0.1.0" @@ -5755,6 +5778,7 @@ dependencies = [ "serde_json", "serde_with", "sha2 0.10.8", + "sp1-helper", "sp1-ics07-tendermint-solidity", "sp1-ics07-tendermint-update-client", "sp1-ics07-tendermint-utils", diff --git a/Cargo.toml b/Cargo.toml index 741b17c..ba8a794 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,7 +17,6 @@ authors = ["srdtrk "] [workspace.dependencies] # Used by the programs sp1-zkvm = "1.1" -sp1-helper = "1.1" sp1-ics07-tendermint-solidity = { path = "./packages/solidity/" } sp1-ics07-tendermint-update-client = { path = "./programs/update-client/" } @@ -47,6 +46,7 @@ serde_json = { version = "1.0", default-features = false, features = ["alloc"] } # Used by the operator sp1-sdk = "1.1" +sp1-helper = "1.1" sp1-ics07-tendermint-utils = { path = "./packages/utils/" } diff --git a/justfile b/justfile index a344351..5f31688 100644 --- a/justfile +++ b/justfile @@ -2,20 +2,15 @@ set dotenv-load # Build riscv elf file using `~/.sp1/bin/cargo-prove` build-programs: - cd programs/update-client && ~/.sp1/bin/cargo-prove prove build - mv elf/riscv32im-succinct-zkvm-elf elf/update-client-riscv32im-succinct-zkvm-elf + cd programs/update-client && ~/.sp1/bin/cargo-prove prove build --elf-name update-client-riscv32im-succinct-zkvm-elf @echo "ELF created at 'elf/update-client-riscv32im-succinct-zkvm-elf'" - cd programs/membership && ~/.sp1/bin/cargo-prove prove build - mv elf/riscv32im-succinct-zkvm-elf elf/membership-riscv32im-succinct-zkvm-elf + cd programs/membership && ~/.sp1/bin/cargo-prove prove build --elf-name membership-riscv32im-succinct-zkvm-elf @echo "ELF created at 'elf/membership-riscv32im-succinct-zkvm-elf'" - cd programs/uc-and-membership && ~/.sp1/bin/cargo-prove prove build - mv elf/riscv32im-succinct-zkvm-elf elf/uc-and-membership-riscv32im-succinct-zkvm-elf + cd programs/uc-and-membership && ~/.sp1/bin/cargo-prove prove build --elf-name uc-and-membership-riscv32im-succinct-zkvm-elf @echo "ELF created at 'elf/uc-and-membership-riscv32im-succinct-zkvm-elf'" # Build the operator executable using `cargo build` command build-operator: - @echo "Building the programs for the operator..." - just build-programs @echo "Building the operator executable..." cargo build --bin operator --locked --release @echo "Built the operator executable" diff --git a/operator/Cargo.toml b/operator/Cargo.toml index 79516d0..04c8fd3 100644 --- a/operator/Cargo.toml +++ b/operator/Cargo.toml @@ -43,3 +43,6 @@ clap = { workspace = true } log = { workspace = true } async-trait = { workspace = true } hex = { workspace = true } + +[build-dependencies] +sp1-helper = { workspace = true } diff --git a/operator/build.rs b/operator/build.rs new file mode 100644 index 0000000..40e6607 --- /dev/null +++ b/operator/build.rs @@ -0,0 +1,32 @@ +use sp1_helper::{build_program_with_args, BuildArgs}; + +// Build script to build the programs if they change. +// Requires SP1 toolchain to be installed. +fn main() { + // Build the update-client program. + build_program_with_args( + "../programs/update-client", + BuildArgs { + elf_name: "update-client-riscv32im-succinct-zkvm-elf".to_string(), + ..Default::default() + }, + ); + + // Build the membership program. + build_program_with_args( + "../programs/membership", + BuildArgs { + elf_name: "membership-riscv32im-succinct-zkvm-elf".to_string(), + ..Default::default() + }, + ); + + // Build the uc-and-membership program. + build_program_with_args( + "../programs/uc-and-membership", + BuildArgs { + elf_name: "uc-and-membership-riscv32im-succinct-zkvm-elf".to_string(), + ..Default::default() + }, + ); +}