Allow to override build_id with SOURCE_DATE_EPOCH

in order to make builds reproducible.
See https://reproducible-builds.org/ for why this is good
and https://reproducible-builds.org/specs/source-date-epoch/
for the definition of this variable.

This PR was done while working on reproducible builds for openSUSE.
This commit is contained in:
Bernhard M. Wiedemann 2022-05-02 13:18:53 +02:00
parent 7efc62b9ca
commit 9de1f38e92

View file

@ -1,5 +1,6 @@
use rand::distributions::Alphanumeric; use rand::distributions::Alphanumeric;
use rand::Rng; use rand::Rng;
use std::env;
use vergen::{generate_cargo_keys, ConstantsFlags}; use vergen::{generate_cargo_keys, ConstantsFlags};
fn main() { fn main() {
@ -7,11 +8,17 @@ fn main() {
flags.toggle(ConstantsFlags::REBUILD_ON_HEAD_CHANGE); flags.toggle(ConstantsFlags::REBUILD_ON_HEAD_CHANGE);
generate_cargo_keys(ConstantsFlags::all()).expect("Unable to generate the cargo keys!"); generate_cargo_keys(ConstantsFlags::all()).expect("Unable to generate the cargo keys!");
let build_id: String = rand::thread_rng() let build_id: String;
match env::var("SOURCE_DATE_EPOCH") {
Ok(val) => build_id = val,
Err(_) => {
build_id = rand::thread_rng()
.sample_iter(Alphanumeric) .sample_iter(Alphanumeric)
.take(8) .take(8)
.map(char::from) .map(char::from)
.collect(); .collect()
}
}
println!("cargo:rustc-env=LIBRESPOT_BUILD_ID={}", build_id); println!("cargo:rustc-env=LIBRESPOT_BUILD_ID={}", build_id);
} }