Reimplement git version generation ourselves

This allows us to remove two dependency crates
This commit is contained in:
Fabian Boehm 2024-03-01 21:49:49 +01:00
parent a1e46a94f6
commit 2a4e776d92
4 changed files with 32 additions and 31 deletions

31
Cargo.lock generated
View file

@ -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",
]

View file

@ -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]

View file

@ -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()
}

View file

@ -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;