From 4b1ca18d0ca0f951d926a5c048f0365d740420f1 Mon Sep 17 00:00:00 2001 From: Michael Raitza Date: Thu, 8 Feb 2024 11:37:49 +0100 Subject: [PATCH] nix: Compile commit hash into program version Changes build.rs to take the GIT_HEAD environment variable into account if `git rev-parse` is unable to determine the current commit hash. --- build.rs | 3 ++- flake.nix | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/build.rs b/build.rs index ddda179f..63391336 100644 --- a/build.rs +++ b/build.rs @@ -1,4 +1,5 @@ use std::process::Command; +use std::env; fn main() { // Set a build-time `GIT_HEAD` env var which includes the commit id; @@ -16,7 +17,7 @@ fn main() { None } }) - .unwrap_or_else(|| String::from("unknown")); + .unwrap_or(env::var("GIT_HEAD").unwrap_or("unknown".into())); println!("cargo:rustc-env=GIT_HEAD={hash}"); println!("cargo:rustc-rerun-if-changed=.git/HEAD"); diff --git a/flake.nix b/flake.nix index 2cfbc66d..c15d8aa5 100644 --- a/flake.nix +++ b/flake.nix @@ -89,6 +89,9 @@ # Additional darwin specific inputs can be set here pkgs.libiconv ]; + preBuild = lib.optionalString (self.shortRev or null != null) '' + export GIT_HEAD=${self.shortRev} + ''; }; # Build *just* the cargo dependencies, so we can reuse