Enable cargo env vars when there is no .git

But still disable git env vars.

This change requires vergen 5.1.4 or later.
This commit is contained in:
teor 2021-04-26 12:17:16 +10:00
parent 55e398c10a
commit 62f053de9e
4 changed files with 46 additions and 15 deletions

12
Cargo.lock generated
View File

@ -1397,9 +1397,9 @@ checksum = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce"
[[package]]
name = "git2"
version = "0.13.17"
version = "0.13.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1d250f5f82326884bd39c2853577e70a121775db76818ffa452ed1e80de12986"
checksum = "b483c6c2145421099df1b4efd50e0f6205479a072199460eff852fa15e5603c7"
dependencies = [
"bitflags",
"libc",
@ -1873,9 +1873,9 @@ checksum = "9385f66bf6105b241aa65a61cb923ef20efc665cb9f9bb50ac2f0c4b7f378d41"
[[package]]
name = "libgit2-sys"
version = "0.12.18+1.1.0"
version = "0.12.19+1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3da6a42da88fc37ee1ecda212ffa254c25713532980005d5f7c0b0fbe7e6e885"
checksum = "f322155d574c8b9ebe991a04f6908bb49e68a79463338d24a43d6274cb6443e6"
dependencies = [
"cc",
"libc",
@ -4052,9 +4052,9 @@ checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
[[package]]
name = "vergen"
version = "5.1.2"
version = "5.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0277ffac28b64e449a7a8c369ddd8591647c5a2d1fd513eebd6a153ff4c40ea4"
checksum = "575b693376dacf6a9825ab3e61a033cf0e94040e620fca8447b055ef8ce82d2b"
dependencies = [
"anyhow",
"cfg-if 1.0.0",

View File

@ -48,7 +48,7 @@ sentry = { version = "0.21.0", default-features = false, features = ["backtrace"
sentry-tracing = { git = "https://github.com/kellpossible/sentry-tracing.git", rev = "f1a4a4a16b5ff1022ae60be779eb3fb928ce9b0f" }
[build-dependencies]
vergen = { version = "5.1.2", default-features = false, features = ["cargo", "git"] }
vergen = { version = "5.1.4", default-features = false, features = ["cargo", "git"] }
[dev-dependencies]
abscissa_core = { version = "0.5", features = ["testing"] }

View File

@ -1,18 +1,47 @@
use vergen::{vergen, Config, ShaKind};
use vergen::{vergen, Config, SemverKind, ShaKind};
/// Disable vergen env vars that could cause spurious reproducible build
/// failures
fn disable_non_reproducible(_config: &mut Config) {
/*
Currently, these features are disabled in `Cargo.toml`
// We don't use build or host-specific env vars, because they can break
// reproducible builds.
*config.build_mut().enabled_mut() = false;
*config.rustc mut().host_triple_mut() = false;
// It's ok for reproducible builds to depend on the build OS. But most other
// sysinfo should not change reproducible builds, so we disable it.
*config.sysinfo mut().user_mut() = false;
*config.sysinfo mut().memory_mut() = false;
*config.sysinfo mut().cpu_vendor_mut() = false;
*config.sysinfo mut().cpu_core_count_mut() = false;
*config.sysinfo mut().cpu_name_mut() = false;
*config.sysinfo mut().cpu_brand_mut() = false;
*config.sysinfo mut().cpu_frequency_mut() = false;
*/
}
fn main() {
let mut config = Config::default();
*config.cargo_mut().features_mut() = false;
*config.cargo_mut().profile_mut() = false;
disable_non_reproducible(&mut config);
*config.git_mut().sha_kind_mut() = ShaKind::Short;
// Disable env vars we aren't using right now
*config.cargo_mut().features_mut() = false;
// Disable git if we're building with an invalid `zebra/.git`
match vergen(config) {
Ok(_) => {}
Err(e) => eprintln!(
"skipping detailed git and target info due to vergen error: {:?}",
e
),
Err(e) => {
eprintln!(
"git error in vergen build script: skipping git env vars: {:?}",
e
);
*config.git_mut().enabled_mut() = false;
vergen(config).expect("non-git vergen should succeed");
}
}
}

View File

@ -220,6 +220,8 @@ impl Application for ZebradApp {
// cargo or git tag + short commit
("version", Some(app_version().to_string())),
// git
// git env vars can be skipped if there is no `.git` during the
// build, so they must all be optional
("branch", option_env!("VERGEN_GIT_BRANCH").map(Into::into)),
("git commit", Self::git_commit().map(Into::into)),
(