Files
ere/crates/dockerized/common/build.rs
2026-01-27 17:03:01 +08:00

83 lines
2.3 KiB
Rust

use ere_build_utils::{cargo_lock_path, detect_sdk_version, get_docker_image_tag, workspace};
use std::{env, fs, path::Path};
fn main() {
generate_docker_image_tag();
generate_zkvm_sdk_version_impl();
}
fn generate_docker_image_tag() {
let docker_image_tag = format!(
"/// Docker image tag.\npub const DOCKER_IMAGE_TAG: &str = \"{}\";",
get_docker_image_tag()
);
let out_dir = env::var("OUT_DIR").unwrap();
let dst = Path::new(&out_dir).join("docker_image_tag.rs");
fs::write(dst, docker_image_tag).unwrap();
if let Some(dot_git) =
workspace().and_then(|workspace| workspace.join(".git").canonicalize().ok())
{
for dir in ["HEAD", "refs", "packed-refs"] {
if dot_git.join(dir).exists() {
println!("cargo:rerun-if-changed={}", dot_git.join(dir).display());
}
}
}
}
fn generate_zkvm_sdk_version_impl() {
let [
airbender_version,
jolt_version,
miden_version,
nexus_version,
openvm_version,
pico_version,
risc0_version,
sp1_version,
ziren_version,
zisk_version,
] = [
"execution_utils",
"jolt-sdk",
"miden-core",
"nexus-sdk",
"openvm-sdk",
"pico-vm",
"risc0-zkvm",
"sp1-sdk",
"zkm-sdk",
"ziskos",
]
.map(detect_sdk_version);
let zkvm_sdk_version_impl = format!(
r#"impl crate::zkVMKind {{
pub fn sdk_version(&self) -> &'static str {{
match self {{
Self::Airbender => "{airbender_version}",
Self::Jolt => "{jolt_version}",
Self::Miden => "{miden_version}",
Self::Nexus => "{nexus_version}",
Self::OpenVM => "{openvm_version}",
Self::Pico => "{pico_version}",
Self::Risc0 => "{risc0_version}",
Self::SP1 => "{sp1_version}",
Self::Ziren => "{ziren_version}",
Self::Zisk => "{zisk_version}",
}}
}}
}}"#,
);
let out_dir = env::var("OUT_DIR").unwrap();
let dst = Path::new(&out_dir).join("zkvm_sdk_version_impl.rs");
fs::write(dst, zkvm_sdk_version_impl).unwrap();
if let Some(cargo_lock) = cargo_lock_path() {
println!("cargo:rerun-if-changed={}", cargo_lock.display());
}
}