From 2a4e776d92f327ad2e0a172e762b4622c7218931 Mon Sep 17 00:00:00 2001 From: Fabian Boehm Date: Fri, 1 Mar 2024 21:49:49 +0100 Subject: [PATCH] Reimplement git version generation ourselves This allows us to remove two dependency crates --- Cargo.lock | 31 +++++-------------------------- Cargo.toml | 1 - build.rs | 26 ++++++++++++++++++++++++++ src/lib.rs | 5 +---- 4 files changed, 32 insertions(+), 31 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 27a4acc6e188..8e71f4b0e8a1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -102,7 +102,6 @@ dependencies = [ "cc", "errno", "fast-float", - "git-version", "hexponent", "lazy_static", "libc", @@ -137,26 +136,6 @@ dependencies = [ "wasi", ] -[[package]] -name = "git-version" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad568aa3db0fcbc81f2f116137f263d7304f512a1209b35b85150d3ef88ad19" -dependencies = [ - "git-version-macro", -] - -[[package]] -name = "git-version-macro" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53010ccb100b96a67bc32c0175f0ed1426b31b655d562898e57325f81c023ac0" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.50", -] - [[package]] name = "hashbrown" version = "0.13.2" @@ -203,9 +182,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.20" +version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "lru" @@ -496,9 +475,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.50" +version = "2.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74f1bdc9872430ce9b75da68329d1c1746faf50ffac5f19e02b71e37ff881ffb" +checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07" dependencies = [ "proc-macro2", "quote", @@ -589,5 +568,5 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.52", ] diff --git a/Cargo.toml b/Cargo.toml index 44d246ff1922..0aedc917b73e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -34,7 +34,6 @@ num-traits = "0.2.15" once_cell = "1.17.0" rand = { version = "0.8.5", features = ["small_rng"] } widestring = "1.0.2" -git-version = "0.3" terminfo = { git = "https://github.com/meh/rust-terminfo", rev = "870327dd79beaecf50db09a15931d5ee1de2a24d" } [dev-dependencies] diff --git a/build.rs b/build.rs index cb55a0d8e4cf..ebe3f3b2c04b 100644 --- a/build.rs +++ b/build.rs @@ -24,6 +24,8 @@ fn main() { .unwrap(), ); + rsconf::set_env_value("FISH_BUILD_VERSION", &get_version(build_dir)); + rsconf::rebuild_if_path_changed("src/libc.c"); cc::Build::new() .file("src/libc.c") @@ -193,3 +195,27 @@ fn setup_paths() { rsconf::set_env_value("DOCDIR", docdir.to_str().unwrap()); rsconf::rebuild_if_env_changed("DOCDIR"); } + +fn get_version(build_dir: &str) -> String { + use std::fs::read_to_string; + use std::process::Command; + + if let Ok(var) = std::env::var("FISH_BUILD_VERSION") { + return var; + } + + let path = PathBuf::from(build_dir).join("version"); + if let Ok(strver) = read_to_string(path) { + return strver.to_string(); + } + + let args = &["describe", "--always", "--dirty=-dirty"]; + if let Ok(output) = Command::new("git").args(args).output() { + let rev = String::from_utf8_lossy(&output.stdout).trim().to_string(); + if !rev.is_empty() { + return rev; + } + } + + "unknown".to_string() +} diff --git a/src/lib.rs b/src/lib.rs index 03d09ab0c99a..d7393cec398b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -22,10 +22,7 @@ #![allow(clippy::too_many_arguments)] #![allow(clippy::uninlined_format_args)] -pub const BUILD_VERSION: &str = match option_env!("FISH_BUILD_VERSION") { - Some(v) => v, - None => git_version::git_version!(args = ["--always", "--dirty=-dirty"], fallback = "unknown"), -}; +pub const BUILD_VERSION: &str = env!("FISH_BUILD_VERSION"); #[macro_use] pub mod common;