Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

build: Remove unnecessary cargo:rerun-if-env-changed annotations #74643

Merged
merged 4 commits into from
Jul 23, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 12 additions & 4 deletions src/build_helper/lib.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
use std::ffi::{OsStr, OsString};
use std::fmt::Display;
use std::path::{Path, PathBuf};
use std::process::{Command, Stdio};
use std::time::{SystemTime, UNIX_EPOCH};
Expand Down Expand Up @@ -28,6 +30,14 @@ macro_rules! t {
};
}

/// Reads an environment variable and adds it to dependencies.
/// Supposed to be used for all variables except those set for build scripts by cargo
/// https://doc.rust-lang.org/cargo/reference/environment-variables.html#environment-variables-cargo-sets-for-build-scripts
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

https://doc.rust-lang.org/cargo/reference/build-scripts.html#rerun-if-env-changed says this.
Apparently, if any of the "build script input" env vars changes, then cargo will rerun the script automatically regardless of any other rerun-if directives?

pub fn tracked_env_var_os<K: AsRef<OsStr> + Display>(key: K) -> Option<OsString> {
println!("cargo:rerun-if-env-changed={}", key);
env::var_os(key)
}

// Because Cargo adds the compiler's dylib path to our library search path, llvm-config may
// break: the dylib path for the compiler, as of this writing, contains a copy of the LLVM
// shared library, which means that when our freshly built llvm-config goes to load it's
Expand All @@ -37,10 +47,8 @@ macro_rules! t {
// perfect -- we might actually want to see something from Cargo's added library paths -- but
// for now it works.
pub fn restore_library_path() {
println!("cargo:rerun-if-env-changed=REAL_LIBRARY_PATH_VAR");
println!("cargo:rerun-if-env-changed=REAL_LIBRARY_PATH");
let key = env::var_os("REAL_LIBRARY_PATH_VAR").expect("REAL_LIBRARY_PATH_VAR");
if let Some(env) = env::var_os("REAL_LIBRARY_PATH") {
let key = tracked_env_var_os("REAL_LIBRARY_PATH_VAR").expect("REAL_LIBRARY_PATH_VAR");
if let Some(env) = tracked_env_var_os("REAL_LIBRARY_PATH") {
env::set_var(&key, &env);
} else {
env::remove_var(&key);
Expand Down
1 change: 0 additions & 1 deletion src/libprofiler_builtins/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
[package]
authors = ["The Rust Project Developers"]
build = "build.rs"
name = "profiler_builtins"
version = "0.0.0"
edition = "2018"
Expand Down
2 changes: 2 additions & 0 deletions src/libprofiler_builtins/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ fn main() {
let target = env::var("TARGET").expect("TARGET was not set");
let cfg = &mut cc::Build::new();

// FIXME: `rerun-if-changed` directives are not currently emitted and the build script
// will not rerun on changes in these source files or headers included into them.
let mut profile_sources = vec![
"GCDAProfiling.c",
"InstrProfiling.c",
Expand Down
5 changes: 0 additions & 5 deletions src/librustc_ast/build.rs

This file was deleted.

1 change: 0 additions & 1 deletion src/librustc_attr/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ authors = ["The Rust Project Developers"]
name = "rustc_attr"
version = "0.0.0"
edition = "2018"
build = "build.rs"

[lib]
name = "rustc_attr"
Expand Down
5 changes: 0 additions & 5 deletions src/librustc_attr/build.rs

This file was deleted.

6 changes: 0 additions & 6 deletions src/librustc_codegen_llvm/build.rs

This file was deleted.

4 changes: 0 additions & 4 deletions src/librustc_codegen_ssa/build.rs

This file was deleted.

7 changes: 0 additions & 7 deletions src/librustc_driver/build.rs

This file was deleted.

4 changes: 0 additions & 4 deletions src/librustc_incremental/build.rs

This file was deleted.

4 changes: 0 additions & 4 deletions src/librustc_interface/build.rs

This file was deleted.

1 change: 0 additions & 1 deletion src/librustc_llvm/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
authors = ["The Rust Project Developers"]
name = "rustc_llvm"
version = "0.0.0"
build = "build.rs"
edition = "2018"

[lib]
Expand Down
24 changes: 10 additions & 14 deletions src/librustc_llvm/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,20 @@ use std::env;
use std::path::{Path, PathBuf};
use std::process::Command;

use build_helper::output;
use build_helper::{output, tracked_env_var_os};

fn detect_llvm_link() -> (&'static str, &'static str) {
// Force the link mode we want, preferring static by default, but
// possibly overridden by `configure --enable-llvm-link-shared`.
if env::var_os("LLVM_LINK_SHARED").is_some() {
if tracked_env_var_os("LLVM_LINK_SHARED").is_some() {
("dylib", "--link-shared")
} else {
("static", "--link-static")
}
}

fn main() {
println!("cargo:rerun-if-env-changed=RUST_CHECK");
if env::var_os("RUST_CHECK").is_some() {
if tracked_env_var_os("RUST_CHECK").is_some() {
// If we're just running `check`, there's no need for LLVM to be built.
return;
}
Expand All @@ -25,8 +24,8 @@ fn main() {

let target = env::var("TARGET").expect("TARGET was not set");
let llvm_config =
env::var_os("LLVM_CONFIG").map(|x| Some(PathBuf::from(x))).unwrap_or_else(|| {
if let Some(dir) = env::var_os("CARGO_TARGET_DIR").map(PathBuf::from) {
tracked_env_var_os("LLVM_CONFIG").map(|x| Some(PathBuf::from(x))).unwrap_or_else(|| {
if let Some(dir) = tracked_env_var_os("CARGO_TARGET_DIR").map(PathBuf::from) {
let to_test = dir
.parent()
.unwrap()
Expand All @@ -46,8 +45,6 @@ fn main() {
}
let llvm_config = llvm_config.unwrap_or_else(|| PathBuf::from("llvm-config"));

println!("cargo:rerun-if-env-changed=LLVM_CONFIG");

// Test whether we're cross-compiling LLVM. This is a pretty rare case
// currently where we're producing an LLVM for a different platform than
// what this build script is currently running on.
Expand Down Expand Up @@ -163,12 +160,11 @@ fn main() {
cfg.define(&flag, None);
}

println!("cargo:rerun-if-changed-env=LLVM_RUSTLLVM");
if env::var_os("LLVM_RUSTLLVM").is_some() {
if tracked_env_var_os("LLVM_RUSTLLVM").is_some() {
cfg.define("LLVM_RUSTLLVM", None);
}

if env::var_os("LLVM_NDEBUG").is_some() {
if tracked_env_var_os("LLVM_NDEBUG").is_some() {
cfg.define("NDEBUG", None);
cfg.debug(false);
}
Expand Down Expand Up @@ -255,7 +251,7 @@ fn main() {
// librustc_llvm, for example when using static libc++, we may need to
// manually specify the library search path and -ldl -lpthread as link
// dependencies.
let llvm_linker_flags = env::var_os("LLVM_LINKER_FLAGS");
let llvm_linker_flags = tracked_env_var_os("LLVM_LINKER_FLAGS");
if let Some(s) = llvm_linker_flags {
for lib in s.into_string().unwrap().split_whitespace() {
if lib.starts_with("-l") {
Expand All @@ -266,8 +262,8 @@ fn main() {
}
}

let llvm_static_stdcpp = env::var_os("LLVM_STATIC_STDCPP");
let llvm_use_libcxx = env::var_os("LLVM_USE_LIBCXX");
let llvm_static_stdcpp = tracked_env_var_os("LLVM_STATIC_STDCPP");
let llvm_use_libcxx = tracked_env_var_os("LLVM_USE_LIBCXX");

let stdcppname = if target.contains("openbsd") {
if target.contains("sparc64") { "estdc++" } else { "c++" }
Expand Down
5 changes: 0 additions & 5 deletions src/librustc_metadata/build.rs

This file was deleted.

12 changes: 0 additions & 12 deletions src/librustc_middle/build.rs

This file was deleted.

2 changes: 1 addition & 1 deletion src/librustc_session/session.rs
Original file line number Diff line number Diff line change
Expand Up @@ -548,7 +548,7 @@ impl Session {
self.opts.debugging_opts.asm_comments
}
pub fn verify_llvm_ir(&self) -> bool {
self.opts.debugging_opts.verify_llvm_ir || cfg!(always_verify_llvm_ir)
self.opts.debugging_opts.verify_llvm_ir || option_env!("RUSTC_VERIFY_LLVM_IR").is_some()
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The cfg was set in librustc_middle/build.rs.
Looks like nobody noticed that it stopped working.

}
pub fn borrowck_stats(&self) -> bool {
self.opts.debugging_opts.borrowck_stats
Expand Down
4 changes: 0 additions & 4 deletions src/librustc_target/build.rs

This file was deleted.

1 change: 0 additions & 1 deletion src/libstd/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
authors = ["The Rust Project Developers"]
name = "std"
version = "0.0.0"
build = "build.rs"
license = "MIT OR Apache-2.0"
repository = "https://github.com/rust-lang/rust.git"
description = "The Rust Standard Library"
Expand Down
1 change: 1 addition & 0 deletions src/libstd/build.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use std::env;

fn main() {
println!("cargo:rerun-if-changed=build.rs");
let target = env::var("TARGET").expect("TARGET was not set");
if target.contains("linux") {
if target.contains("android") {
Expand Down
1 change: 0 additions & 1 deletion src/libunwind/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
authors = ["The Rust Project Developers"]
name = "unwind"
version = "0.0.0"
build = "build.rs"
edition = "2018"
include = [
'/libunwind/*',
Expand Down
1 change: 0 additions & 1 deletion src/tools/error_index_generator/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ authors = ["The Rust Project Developers"]
name = "error_index_generator"
version = "0.0.0"
edition = "2018"
build = "build.rs"

[dependencies]
rustdoc = { path = "../../librustdoc" }
Expand Down