Merge rust-bitcoin/rust-bitcoin#2146: Create uniform build script

fde6479c6a Create uniform build script (yancy)

Pull request description:

  Previously, each unique compiler cfg attribute that appeared in the codebase was hard coded and emitted to stdout at compile time.  This meant keeping the file up to date as different compiler cfg attributes changed.  It's inconsequential to emit a compiler version that's not used, so this change just emits all possibilities to reduce the maintenance burden of the build script.

  Note that there is a bit of diff noise in one of the `build.rs` since I simply did a copy of one to the other to make them uniform.

ACKs for top commit:
  Kixunil:
    ACK fde6479c6a
  tcharding:
    ACK fde6479c6a
  apoelstra:
    ACK fde6479c6a

Tree-SHA512: 401134c168a604a092b72c3980fae6d20adda761273ea47a887cf4c01838536241a45f310cbc2b5941311d533e1d10c848062198af70c0ed619a57973e842840
This commit is contained in:
Andrew Poelstra 2023-10-31 13:57:56 +00:00
commit 0b1fe094e4
No known key found for this signature in database
GPG Key ID: C588D63CE41B97C1
2 changed files with 14 additions and 14 deletions

View File

@ -1,10 +1,13 @@
const MSRV_MINOR: u64 = 48;
fn main() {
let rustc = std::env::var_os("RUSTC").unwrap_or_else(|| "rustc".into());
let rustc = std::env::var_os("RUSTC");
let rustc = rustc.as_ref().map(std::path::Path::new).unwrap_or_else(|| "rustc".as_ref());
let output = std::process::Command::new(rustc)
.arg("--version")
.output()
.expect("Failed to run rustc --version");
assert!(output.status.success(), "Failed to get rust version");
.unwrap_or_else(|error| panic!("Failed to run `{:?} --version`: {:?}", rustc, error));
assert!(output.status.success(), "{:?} -- version returned non-zero exit code", rustc);
let stdout = String::from_utf8(output.stdout).expect("rustc produced non-UTF-8 output");
let version_prefix = "rustc ";
if !stdout.starts_with(version_prefix) {
@ -16,16 +19,15 @@ fn main() {
let version = &version[..end];
let mut version_components = version.split('.');
let major = version_components.next().unwrap();
assert_eq!(major, "1", "Unexpected Rust version");
assert_eq!(major, "1", "Unexpected Rust major version");
let minor = version_components
.next()
.unwrap_or("0")
.parse::<u64>()
.expect("invalid Rust minor version");
for activate_version in &[53, 60] {
if minor >= *activate_version {
println!("cargo:rustc-cfg=rust_v_1_{}", activate_version);
}
// print cfg for all interesting versions less than or equal to minor
for version in MSRV_MINOR..=minor {
println!("cargo:rustc-cfg=rust_v_1_{}", version);
}
}

View File

@ -1,3 +1,5 @@
const MSRV_MINOR: u64 = 48;
fn main() {
let rustc = std::env::var_os("RUSTC");
let rustc = rustc.as_ref().map(std::path::Path::new).unwrap_or_else(|| "rustc".as_ref());
@ -25,11 +27,7 @@ fn main() {
.expect("invalid Rust minor version");
// print cfg for all interesting versions less than or equal to minor
// 46 adds `track_caller`
// 55 adds `kind()` to `ParseIntError`
for version in &[46, 55] {
if *version <= minor {
println!("cargo:rustc-cfg=rust_v_1_{}", version);
}
for version in MSRV_MINOR..=minor {
println!("cargo:rustc-cfg=rust_v_1_{}", version);
}
}