rust/src/etc
Alex Crichton 02538d463a mk: Bootstrap from stable instead of snapshots
This commit removes all infrastructure from the repository for our so-called
snapshots to instead bootstrap the compiler from stable releases. Bootstrapping
from a previously stable release is a long-desired feature of distros because
they're not fans of downloading binary stage0 blobs from us. Additionally, this
makes our own CI easier as we can decommission all of the snapshot builders and
start having a regular cadence to when we update the stage0 compiler.

A new `src/etc/get-stage0.py` script was added which shares some code with
`src/bootstrap/bootstrap.py` to read a new file, `src/stage0.txt`, which lists
the current stage0 compiler as well as cargo that we bootstrap from. This script
will download the relevant `rustc` package an unpack it into `$target/stage0` as
we do today.

One problem of bootstrapping from stable releases is that we're not able to
compile unstable code (e.g. all the `#![feature]` directives in libcore/libstd).
To overcome this we employ two strategies:

* The bootstrap key of the previous compiler is hardcoded into `src/stage0.txt`
  (enabled as a result of #32731) and exported by the build system. This enables
  nightly features in the compiler we download.
* The standard library and compiler are pinned to a specific stage0, which
  doesn't change, so we're guaranteed that we'll continue compiling as we start
  from a known fixed source.

The process for making a release will also need to be tweaked now to continue to
cadence of bootstrapping from the previous release. This process looks like:

1. Merge `beta` to `stable`
2. Produce a new stable compiler.
3. Change `master` to bootstrap from this new stable compiler.
4. Merge `master` to `beta`
5. Produce a new beta compiler
6. Change `master` to bootstrap from this new beta compiler.

Step 3 above should involve very few changes as `master` was previously
bootstrapping from `beta` which is the same as `stable` at that point in time.
Step 6, however, is where we benefit from removing lots of `#[cfg(stage0)]` and
get to use new features. This also shouldn't slow the release too much as steps
1-5 requires little work other than waiting and step 6 just needs to happen at
some point during a release cycle, it's not time sensitive.

Closes #29555
Closes #29557
2016-04-19 10:56:49 -07:00
..
platform-intrinsics rustc_platform_intrinsics: remove unused rustc dependency. 2016-03-29 19:36:01 +03:00
test-float-parse drive-by doc fixes 2016-02-04 16:28:08 +01:00
third-party
adb_run_wrapper.sh
apple-darwin.supp update valgrind suppressions 2015-12-25 15:46:36 -05:00
check-sanitycheck.py
check-summary.py
CONFIGS.md remove broken config 2016-03-24 17:27:15 -04:00
ctags.rust Update the ctags rules and targets. 2015-07-30 06:35:42 +10:00
debugger_pretty_printers_common.py fix pretty printers to handle new Vec 2015-07-17 10:43:58 -07:00
dec2flt_table.py Speed up dec2flt fast path with additional tables. 2016-01-12 22:25:16 +01:00
gdb_load_rust_pretty_printers.py
gdb_rust_pretty_printing.py
generate-deriving-span-tests.py Remove #[derive(Show)] 2015-10-18 19:12:09 +03:00
generate-keyword-tests.py
get-stage0.py mk: Bootstrap from stable instead of snapshots 2016-04-19 10:56:49 -07:00
htmldocck.py Improve htmldocck.py error messages 2015-12-10 17:34:54 +01:00
indenter
lldb_batchmode.py
lldb_rust_formatters.py
local_stage0.sh Add Illumos support 2016-01-31 18:57:26 +03:00
make-win-dist.py Make sure rsbegin.o and rsend.o get packaged with target lib artifacts. 2015-11-07 17:56:55 -08:00
maketest.py pass CXX to run-make 2016-02-16 06:30:30 +01:00
mklldeps.py Better support for --llvm-root. 2015-12-13 15:05:43 -06:00
rust-gdb
rust-lldb
sugarise-doc-comments.py
unicode.py libsyntax: accept only whitespace with the PATTERN_WHITE_SPACE property 2016-01-16 00:57:12 +00:00
x86.supp update valgrind suppressions 2015-12-25 15:46:36 -05:00
ziggurat_tables.py