#[cfg(feature = "experimental")]
mod runtime {
use std::{env, fs, io, path::Path};
use risc0_build::build_rust_runtime_with_features;
use zip::{write::SimpleFileOptions, CompressionMethod, ZipWriter};
pub(crate) fn build_and_zip_test_runtime() {
let out_dir_env = env::var_os("OUT_DIR").unwrap();
let out_dir = Path::new(&out_dir_env);
let rust_runtime =
build_rust_runtime_with_features(&["getrandom", "sys-getenv", "sys-args", "unstable"]);
let f = fs::File::create(out_dir.join("cargo-risczero.zip")).unwrap();
let mut zip = ZipWriter::new(f);
let options = SimpleFileOptions::default().compression_method(CompressionMethod::Stored);
zip.start_file("risc0-zkvm-platform.a", options).unwrap();
let mut runtime_in = fs::File::open(rust_runtime).unwrap();
io::copy(&mut runtime_in, &mut zip).unwrap();
zip.finish().unwrap();
}
}
fn capture_crate_dependencies() {
let cmd = cargo_metadata::MetadataCommand::new();
let metadata = cmd.exec().unwrap();
let out_dir = std::env::var_os("OUT_DIR").unwrap();
std::fs::write(
std::path::Path::new(&out_dir).join("cargo_metadata_output.json"),
serde_json::to_string(&metadata).unwrap(),
)
.unwrap();
}
fn main() {
#[cfg(feature = "experimental")]
{
tracing_subscriber::fmt()
.with_env_filter(tracing_subscriber::filter::EnvFilter::from_default_env())
.init();
runtime::build_and_zip_test_runtime();
}
capture_crate_dependencies()
}