about summary refs log tree commit diff
path: root/mk/snap.mk
AgeCommit message (Collapse)AuthorLines
2016-04-19mk: Bootstrap from stable instead of snapshotsAlex Crichton-28/+0
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
2015-11-13Remove extra eval call in snap.mkWilliam Throwe-2/+2
2014-07-23mk: Remove extra whitespace before line continuation backslashesBirunthan Mohanathas-2/+2
2013-10-29support for GNU configure syntaxHeather-4/+4
2013-07-19mk: Remove CFG_INSTALL_SNAP logic. #2664Brian Anderson-5/+0
2013-02-21mk: Split target triples into bulid triple + host triples + target triplesBrian Anderson-4/+4
For cross compiling to targets that don't want to build a compiler
2013-01-03add missing $(CFG_PYTHON) prefixesDaniel Micay-3/+3
2012-12-10Reliciense makefiles and testsuite. Yup.Graydon Hoare-0/+10
2011-12-02build: added CFG_INSTALL_SNAP for automatically activating test snapshotsStefan Plantikow-0/+5
This is only guaranteed to work when building in the top-level dir
2011-11-29fix snapNiko Matsakis-6/+15
2011-11-29fix dependencies for snap-stage[23]Niko Matsakis-2/+2
2011-11-29update snapshot scriptsNiko Matsakis-3/+3
2011-11-29basic builds functionNiko Matsakis-6/+6
2011-10-02Lots of build system cleanup and documentationBrian Anderson-6/+3
This splits mk/stageN.mk into host.mk and target.mk and makes the build rules somewhat simpler - there's no more building from stageN into stageN+1; instead we always build from stageN(host) to stageN(target) then promote from stageN(target) to stageN+1(host). Add a big honkin explaination right at the top of Makefile.in
2011-09-30Refix the snapshot rulesBrian Anderson-4/+4
2011-09-30Abstract the build directories further in the makefilesBrian Anderson-9/+8
This defines variables for host bin and lib directories as well as all target bin and lib directories then uses them everywhere.
2011-09-29Update snapshot scripts for the new regimeBrian Anderson-8/+6
2011-09-28Eliminate glue.o. Closes #990Brian Anderson-3/+3
2011-08-14Add lib/main.o to snapshotBrian Anderson-3/+3
Snapshotting main.o is going to make it easier (I think) to convert main to use ivecs
2011-07-27Hack to make snap-stage1 actually build incompatible changesMarijn Haverbeke-2/+1
You can't build libstd both with stage0 and stage1 if the two are incompatible This is probably temporary
2011-07-11Move llvm out of stageN/lib so that the host building stage 1+ canRafael Ávila de Espíndola-3/+3
have a newer and incompatible llvm with the bots.
2011-07-07Complete the transition of glue.o to the lib directoryBrian Anderson-3/+3
2011-07-07Add rt and rustllvm to the snapshotBrian Anderson-3/+6
2011-07-07Makefile support for building std static.Rafael Ávila de Espíndola-3/+6
2011-06-29Tidy up snap makefile.Graydon Hoare-3/+3
2011-06-17Put std in stageN/lib. This avoids windows trying to load stageN/std.ll whenRafael Ávila de Espíndola-3/+3
stageN/runstc.exe is run.
2011-05-16Fix snap rules to depend more correctly on rustc$(X) not rustc.Graydon Hoare-3/+3
2011-05-12Add snap-stageN targets.Graydon Hoare-2/+9
2011-05-02Add forgotten 'snap.mk'Graydon Hoare-0/+3