//! Stamp the commit this binary was built from. //! //! Deliberately records ONLY the commit — no dirty-tree flag. Cargo will not //! re-run a build script because another crate's source changed, so a //! compiled-in "clean" claim can be stale and is therefore not a safeguard. //! (Verified on the Blaze host: editing the adapter and rebuilding left its //! flag reading clean.) //! //! The authoritative checks run at launch, in `scripts/verify-build-identity.sh`, //! which compares this stamp against the checkout's real HEAD and inspects the //! working tree as it is at that moment. use std::process::Command; fn git(args: &[&str]) -> Option { let out = Command::new("git").args(args).output().ok()?; out.status .success() .then(|| String::from_utf8_lossy(&out.stdout).trim().to_string()) } fn main() { let commit = git(&["rev-parse", "--short=7", "HEAD"]).unwrap_or_else(|| "unknown".into()); println!("cargo:rustc-env=OPENFUT_BUILD_COMMIT={commit}"); // Committing updates refs/heads/, not the HEAD file, so watching // HEAD alone leaves the stamp a commit behind. for p in ["../.git/HEAD", "../.git/index"] { if std::path::Path::new(p).exists() { println!("cargo:rerun-if-changed={p}"); } } if let Some(rf) = git(&["symbolic-ref", "-q", "HEAD"]) { let path = format!("../.git/{rf}"); if std::path::Path::new(&path).exists() { println!("cargo:rerun-if-changed={path}"); } } }