48 lines
1.3 KiB
Rust
48 lines
1.3 KiB
Rust
use std::process::Command;
|
|
use vergen::EmitBuilder;
|
|
|
|
fn try_cmd(cmd: &mut Command) -> Option<String> {
|
|
let out = cmd.output().ok()?;
|
|
if !out.status.success() {
|
|
return None;
|
|
}
|
|
Some(String::from_utf8_lossy(&out.stdout).trim().to_string())
|
|
}
|
|
|
|
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|
// Emit vergen default build info (BUILD_DATE / BUILD_TIME)
|
|
EmitBuilder::builder().build()?;
|
|
|
|
// Git describe + commit date (exact match to your Python)
|
|
let commit_info = (|| {
|
|
let hash = try_cmd(
|
|
Command::new("git")
|
|
.arg("describe")
|
|
.arg("--always")
|
|
.arg("--dirty")
|
|
.arg("--abbrev=7"),
|
|
)?;
|
|
|
|
let date = try_cmd(
|
|
Command::new("git")
|
|
.arg("show")
|
|
.arg("-s")
|
|
.arg("--format=%ci"),
|
|
)?;
|
|
|
|
Some(format!("{} {}", hash, date))
|
|
})()
|
|
.unwrap_or_else(|| "unknown".into());
|
|
|
|
println!("cargo:rustc-env=GIT_COMMIT_HASH={}", commit_info);
|
|
|
|
// Compiler name and rustc version
|
|
println!("cargo:rustc-env=COMPILER_NAME=rustc");
|
|
|
|
let rustc_ver = try_cmd(Command::new("rustc").arg("--version"))
|
|
.unwrap_or_else(|| "unknown".into());
|
|
println!("cargo:rustc-env=COMPILER_VER={}", rustc_ver);
|
|
|
|
Ok(())
|
|
}
|