diff --git a/crates/ere-hosts/src/main.rs b/crates/ere-hosts/src/main.rs index 2e63704d..ad1038be 100644 --- a/crates/ere-hosts/src/main.rs +++ b/crates/ere-hosts/src/main.rs @@ -1,6 +1,6 @@ //! Binary for benchmarking different Ere compatible zkVMs -use std::path::PathBuf; +use std::{path::PathBuf, process::Command}; // use ere_pico::{ErePico, PICO_TARGET}; @@ -13,16 +13,19 @@ use zkvm_interface::{Compiler, ProverResourceType}; /// Main entry point for the host benchmarker fn main() -> Result<(), Box> { + run_cargo_patch_command("sp1")?; let resource = ProverResourceType::Cpu; let sp1_zkvm = new_sp1_zkvm(resource)?; let action = Action::Execute; run_benchmark_ere("sp1", sp1_zkvm, action)?; + run_cargo_patch_command("risc0")?; let resource = ProverResourceType::Cpu; let risc0_zkvm = new_risczero_zkvm(resource)?; let action = Action::Execute; run_benchmark_ere("risc0", risc0_zkvm, action)?; + // run_cargo_patch_command("openvm")?; let resource = ProverResourceType::Cpu; let openvm_zkvm = new_openvm_zkvm(resource)?; let action = Action::Execute; @@ -63,3 +66,28 @@ fn new_openvm_zkvm( // let program = PICO_TARGET::compile(&PathBuf::from(guest_dir))?; // Ok(ErePico::new(program, prover_resource)) // } + +/// Patches the precompiles for a specific zkvm +fn run_cargo_patch_command(zkvm_name: &str) -> Result<(), Box> { + println!("Running cargo {}...", zkvm_name); + + let output = Command::new("cargo").arg(zkvm_name).output()?; + + if !output.status.success() { + let stderr = String::from_utf8_lossy(&output.stderr); + let stdout = String::from_utf8_lossy(&output.stdout); + + eprintln!( + "cargo {} failed with exit code: {:?}", + zkvm_name, + output.status.code() + ); + eprintln!("stdout: {}", stdout); + eprintln!("stderr: {}", stderr); + + return Err(format!("cargo {} command failed", zkvm_name).into()); + } + + println!("cargo {} completed successfully", zkvm_name); + Ok(()) +}