From db3d078935ef80fe9575b614361f3fbf2be3fa05 Mon Sep 17 00:00:00 2001 From: Chance Date: Mon, 7 Apr 2025 22:21:50 -0400 Subject: [PATCH] fix: build script generates dead code warnings if versioning data is not used --- engine/build.rs | 69 ++++++++++++++++++++++++++++++++----------------- 1 file changed, 45 insertions(+), 24 deletions(-) diff --git a/engine/build.rs b/engine/build.rs index fefe08f..67187ba 100644 --- a/engine/build.rs +++ b/engine/build.rs @@ -1,18 +1,28 @@ -use std::process::Command; -use std::env; -use std::path::Path; -use std::fs::OpenOptions; -use std::io::Write; use build_print::*; use cargo_lock::Lockfile; +use std::env; +use std::fs::OpenOptions; +use std::io::Write; +use std::path::Path; +use std::process::Command; fn get_git_info() -> String { - match Command::new("git").arg("describe").arg("--always").arg("--dirty").output() { + match Command::new("git") + .arg("describe") + .arg("--always") + .arg("--dirty") + .output() + { Ok(output) if output.status.success() => { String::from_utf8_lossy(&output.stdout).trim().to_string() } _ => { - match Command::new("git").arg("rev-parse").arg("--abbrev-ref").arg("HEAD").output() { + match Command::new("git") + .arg("rev-parse") + .arg("--abbrev-ref") + .arg("HEAD") + .output() + { Ok(output) if output.status.success() => { let head = String::from_utf8_lossy(&output.stdout); let head = head.trim(); @@ -28,7 +38,7 @@ fn get_git_info() -> String { } } } - +static ALLOW_DEAD_CODE: &str = "#[allow(dead_code)]\n"; fn main() { if let Err(e) = built::write_built_file() { panic!("{e}"); @@ -36,13 +46,15 @@ fn main() { let out_dir = env::var("OUT_DIR").unwrap(); let dest_path = Path::new(&out_dir).join("built.rs"); let proj_root = env!("CARGO_MANIFEST_DIR").to_string(); - let tmp = format!("{}/../Cargo.lock",proj_root); + let tmp = format!("{}/../Cargo.lock", proj_root); let lockfile_path = Path::new(&tmp).canonicalize().expect("INvalid"); - let cargo_version = match Command::new("cargo").arg("--version").output() { Ok(output) if output.status.success() => { - String::from_utf8_lossy(&output.stdout).trim().to_string() + let mut version = String::new(); + version.push_str(ALLOW_DEAD_CODE); + version.push_str(&String::from_utf8_lossy(&output.stdout).trim().to_string()); + version } _ => "unknown".to_string(), }; @@ -50,7 +62,10 @@ fn main() { let rustc_version = match Command::new("rustc").arg("--version").output() { Ok(output) if output.status.success() => { - String::from_utf8_lossy(&output.stdout).trim().to_string() + let mut version = String::new(); + version.push_str(ALLOW_DEAD_CODE); + version.push_str(&String::from_utf8_lossy(&output.stdout).trim().to_string()); + version } _ => "unknown".to_string(), }; @@ -67,7 +82,13 @@ fn main() { } }; - writeln!(built_rs, "pub const GIT_COMMIT_HASH: &str = \"{}\";", git_info).unwrap(); + writeln!( + built_rs, + "{}pub static GIT_COMMIT_HASH: &str = \"{}\";", + ALLOW_DEAD_CODE, + git_info + ) + .unwrap(); match Lockfile::load(lockfile_path) { Ok(lockfile) => { @@ -75,16 +96,17 @@ fn main() { for package in lockfile.packages { let name = package.name.as_str(); - if dependencies_to_track.contains(&name) { - let version = package.version.to_string(); - writeln!( - built_rs, - "pub const {}_VERSION: &str = \"{}\";", - name.to_uppercase().replace('-', "_"), - version - ) - .unwrap(); - } + if dependencies_to_track.contains(&name) { + let version = package.version.to_string(); + writeln!( + built_rs, + "{}pub static {}_VERSION: &str = \"{}\";", + ALLOW_DEAD_CODE, + name.to_uppercase().replace('-', "_"), + version + ) + .unwrap(); + } } } Err(e) => { @@ -92,7 +114,6 @@ fn main() { } } - std::println!("cargo:rerun-if-changed=Cargo.lock"); std::println!("cargo:rerun-if-changed=.git/HEAD"); std::println!("cargo:rerun-if-changed=.git/index");