diff options
| author | bors <bors@rust-lang.org> | 2017-05-13 05:22:08 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2017-05-13 05:22:08 +0000 |
| commit | 4f3886abf1b52d0804564c043fd699da039a12fb (patch) | |
| tree | 2ed7e676dca983647f80990de2523c22c7514eff /src/bootstrap | |
| parent | d5f1cfd0fedc3eaa42ce0be3d5e36c13061d397d (diff) | |
| parent | ab54f4b226639558ff46ea1f3e3f504aacef562d (diff) | |
| download | rust-4f3886abf1b52d0804564c043fd699da039a12fb.tar.gz rust-4f3886abf1b52d0804564c043fd699da039a12fb.zip | |
Auto merge of #41847 - alexcrichton:less-unstable-annotations, r=eddyb
rustc: Add a new `-Z force-unstable-if-unmarked` flag This commit adds a new `-Z` flag to the compiler for use when bootstrapping the compiler itself. We want to be able to use crates.io crates, but we also want the usage of such crates to be as ergonomic as possible! To that end compiler crates are a little tricky in that the crates.io crates are not annotated as unstable, nor do they expect to pull in unstable dependencies. To cover all these situations it's intended that the compiler will forever now bootstrap with `-Z force-unstable-if-unmarked`. This flags serves a dual purpose of forcing crates.io crates to themselves be unstable while also allowing them to use other "unstable" crates.io crates. This should mean that adding a dependency to compiler no longer requires upstream modification with unstable/staged_api attributes for inclusion!
Diffstat (limited to 'src/bootstrap')
| -rw-r--r-- | src/bootstrap/bin/rustc.rs | 13 | ||||
| -rw-r--r-- | src/bootstrap/lib.rs | 7 |
2 files changed, 18 insertions, 2 deletions
diff --git a/src/bootstrap/bin/rustc.rs b/src/bootstrap/bin/rustc.rs index 62b7f6cb72e..906c468241a 100644 --- a/src/bootstrap/bin/rustc.rs +++ b/src/bootstrap/bin/rustc.rs @@ -194,6 +194,8 @@ fn main() { // do that we pass a weird flag to the compiler to get it to do // so. Note that this is definitely a hack, and we should likely // flesh out rpath support more fully in the future. + // + // FIXME: remove condition after next stage0 if stage != "0" { cmd.arg("-Z").arg("osx-rpath-install-name"); } @@ -218,6 +220,17 @@ fn main() { cmd.arg("-Z").arg("unstable-options"); cmd.arg("-C").arg("target-feature=+crt-static"); } + + // Force all crates compiled by this compiler to (a) be unstable and (b) + // allow the `rustc_private` feature to link to other unstable crates + // also in the sysroot. + // + // FIXME: remove condition after next stage0 + if env::var_os("RUSTC_FORCE_UNSTABLE").is_some() { + if stage != "0" { + cmd.arg("-Z").arg("force-unstable-if-unmarked"); + } + } } if verbose > 1 { diff --git a/src/bootstrap/lib.rs b/src/bootstrap/lib.rs index 017d4015134..ea0b521a2ce 100644 --- a/src/bootstrap/lib.rs +++ b/src/bootstrap/lib.rs @@ -479,7 +479,8 @@ impl Build { // compiled with debuginfo. if mode != Mode::Tool { cargo.env("RUSTC_DEBUGINFO", self.config.rust_debuginfo.to_string()) - .env("RUSTC_DEBUGINFO_LINES", self.config.rust_debuginfo_lines.to_string()); + .env("RUSTC_DEBUGINFO_LINES", self.config.rust_debuginfo_lines.to_string()) + .env("RUSTC_FORCE_UNSTABLE", "1"); } // Enable usage of unstable features @@ -524,7 +525,9 @@ impl Build { // the comipiler, libs, and tests are stable and we don't want to make // their deps unstable (since this would break the first invariant // above). - if mode != Mode::Tool { + // + // FIXME: remove this after next stage0 + if mode != Mode::Tool && stage == 0 { cargo.env("RUSTBUILD_UNSTABLE", "1"); } |
