From f050de6b7a6e2fc8b95bad571c536ea6e3165893 Mon Sep 17 00:00:00 2001 From: William Casarin Date: Fri, 10 Jan 2025 06:04:20 -0800 Subject: [PATCH] build: fix missing GIT_COMMIT_HASH in some cases Some people try to build without git, this adds a fallback so that compilation still works in those cases. Changelog-Fixed: Fix GIT_COMMIT_HASH compilation issue Fixes: https://github.com/damus-io/notedeck/issues/634 Fixes: https://github.com/damus-io/notedeck/issues/633 --- crates/notedeck_columns/build.rs | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/crates/notedeck_columns/build.rs b/crates/notedeck_columns/build.rs index 89782dd0..c1946d50 100644 --- a/crates/notedeck_columns/build.rs +++ b/crates/notedeck_columns/build.rs @@ -1,10 +1,29 @@ use std::process::Command; -fn main() { - if let Ok(output) = Command::new("git").args(["rev-parse", "HEAD"]).output() { - if output.status.success() { - let hash = String::from_utf8_lossy(&output.stdout); - println!("cargo:rustc-env=GIT_COMMIT_HASH={}", hash.trim()); - } +fn fallback() { + if let Some(dirname) = std::env::current_dir() + .as_ref() + .ok() + .and_then(|cwd| cwd.file_name().and_then(|fname| fname.to_str())) + { + println!("cargo:rustc-env=GIT_COMMIT_HASH={}", dirname); + } else { + println!("cargo:rustc-env=GIT_COMMIT_HASH=unknown"); + } +} + +fn main() { + let output = if let Ok(output) = Command::new("git").args(["rev-parse", "HEAD"]).output() { + output + } else { + fallback(); + return; + }; + + if output.status.success() { + let hash = String::from_utf8_lossy(&output.stdout); + println!("cargo:rustc-env=GIT_COMMIT_HASH={}", hash.trim()); + } else { + fallback(); } }