diff options
| author | Yuki Okushi <huyuumi.dev@gmail.com> | 2021-03-01 15:07:31 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-03-01 15:07:31 +0900 |
| commit | 3de9b418508fa7276d080ea1fc8062ce4462d017 (patch) | |
| tree | b0167b87697a1ad231669487993e336e052aad9d | |
| parent | 3b150b7a8f77874f26c617666f5608fe4a3e58df (diff) | |
| parent | 0238986de7fc584d532f22c981625d666e8ea22b (diff) | |
| download | rust-3de9b418508fa7276d080ea1fc8062ce4462d017.tar.gz rust-3de9b418508fa7276d080ea1fc8062ce4462d017.zip | |
Rollup merge of #82309 - jyn514:rustdocflags, r=Mark-Simulacrum
Propagate RUSTDOCFLAGS in the environment when documenting Previously, RUSTDOCFLAGS would get overriden when bootstrap set `RUSTDOCFLAGS` itself. Propagate the flag manually, using the same logic as `RUSTFLAGS`. Fixes https://github.com/rust-lang/rust/issues/75256.
| -rw-r--r-- | src/bootstrap/builder.rs | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs index 61554a316d0..39c062769c8 100644 --- a/src/bootstrap/builder.rs +++ b/src/bootstrap/builder.rs @@ -939,6 +939,12 @@ impl<'a> Builder<'a> { // but this breaks CI. At the very least, stage0 `rustdoc` needs `--cfg bootstrap`. See // #71458. let mut rustdocflags = rustflags.clone(); + rustdocflags.propagate_cargo_env("RUSTDOCFLAGS"); + if stage == 0 { + rustdocflags.env("RUSTDOCFLAGS_BOOTSTRAP"); + } else { + rustdocflags.env("RUSTDOCFLAGS_NOT_BOOTSTRAP"); + } if let Ok(s) = env::var("CARGOFLAGS") { cargo.args(s.split_whitespace()); @@ -1544,21 +1550,27 @@ impl<'a> Builder<'a> { mod tests; #[derive(Debug, Clone)] -struct Rustflags(String); +struct Rustflags(String, TargetSelection); impl Rustflags { fn new(target: TargetSelection) -> Rustflags { - let mut ret = Rustflags(String::new()); + let mut ret = Rustflags(String::new(), target); + ret.propagate_cargo_env("RUSTFLAGS"); + ret + } + /// By default, cargo will pick up on various variables in the environment. However, bootstrap + /// reuses those variables to pass additional flags to rustdoc, so by default they get overriden. + /// Explicitly add back any previous value in the environment. + /// + /// `prefix` is usually `RUSTFLAGS` or `RUSTDOCFLAGS`. + fn propagate_cargo_env(&mut self, prefix: &str) { // Inherit `RUSTFLAGS` by default ... - ret.env("RUSTFLAGS"); - - // ... and also handle target-specific env RUSTFLAGS if they're - // configured. - let target_specific = format!("CARGO_TARGET_{}_RUSTFLAGS", crate::envify(&target.triple)); - ret.env(&target_specific); + self.env(prefix); - ret + // ... and also handle target-specific env RUSTFLAGS if they're configured. + let target_specific = format!("CARGO_TARGET_{}_{}", crate::envify(&self.1.triple), prefix); + self.env(&target_specific); } fn env(&mut self, env: &str) { |
