2022-10-19 07:34:41 -07:00
|
|
|
use {
|
|
|
|
cargo_lock::Lockfile,
|
|
|
|
std::collections::HashSet,
|
|
|
|
vergen::{vergen, Config},
|
|
|
|
};
|
|
|
|
|
|
|
|
fn main() -> anyhow::Result<()> {
|
2022-10-26 12:54:06 -07:00
|
|
|
compile_protos()?;
|
2022-10-19 07:34:41 -07:00
|
|
|
generate_env()?;
|
|
|
|
Ok(())
|
|
|
|
}
|
|
|
|
|
2022-10-26 12:54:06 -07:00
|
|
|
fn compile_protos() -> anyhow::Result<()> {
|
|
|
|
std::env::set_var("PROTOC", protobuf_src::protoc());
|
|
|
|
tonic_build::compile_protos("proto/geyser.proto")?;
|
|
|
|
Ok(())
|
|
|
|
}
|
|
|
|
|
2022-10-19 07:34:41 -07:00
|
|
|
fn generate_env() -> anyhow::Result<()> {
|
|
|
|
vergen(Config::default())?;
|
|
|
|
|
|
|
|
// vergen git version does not looks cool
|
|
|
|
println!(
|
|
|
|
"cargo:rustc-env=GIT_VERSION={}",
|
|
|
|
git_version::git_version!()
|
|
|
|
);
|
|
|
|
|
|
|
|
// Extract Solana version
|
|
|
|
let lockfile = Lockfile::load("Cargo.lock")?;
|
|
|
|
println!(
|
|
|
|
"cargo:rustc-env=SOLANA_SDK_VERSION={}",
|
|
|
|
lockfile
|
|
|
|
.packages
|
|
|
|
.iter()
|
|
|
|
.filter(|pkg| pkg.name.as_str() == "solana-sdk")
|
|
|
|
.map(|pkg| pkg.version.to_string())
|
|
|
|
.collect::<HashSet<_>>()
|
|
|
|
.into_iter()
|
|
|
|
.collect::<Vec<_>>()
|
|
|
|
.join(",")
|
|
|
|
);
|
|
|
|
|
|
|
|
Ok(())
|
|
|
|
}
|