]> git.lizzy.rs Git - rust.git/commit
rustbuild: Tweak how stage1 compilers are selected
authorAlex Crichton <alex@alexcrichton.com>
Tue, 28 May 2019 17:00:53 +0000 (10:00 -0700)
committerAlex Crichton <alex@alexcrichton.com>
Tue, 28 May 2019 18:23:53 +0000 (11:23 -0700)
commitf7cc467b59474dcbe9dcaf3c22dab3e663937de5
tree80fb877d7801f6820713faa530b7c823349affb8
parentad52c77a46593f2ebd4ae5a291f1a698527bb123
rustbuild: Tweak how stage1 compilers are selected

This commit furthers the previous one to ensure that we don't build an
extra stage of the compiler in CI. A test has been added to rustbuild to
ensure that this doesn't regress, and then in debugging this test it was
hunted down that the `dist::Std` target was the one erroneously pulling
in the wrong compiler.

The `dist::Std` step was updated to instead account for the "full
bootstrap" or not flag, ensuring that the correct compiler for compiling
the final standard library was used. This was another use of the
`force_use_stage1` function which was in theory supposed to be pretty
central, so existing users were all evaluated and a new function,
`Builder::compiler_for`, was introduced. All existing users of
`force_use_stage1` have been updated to use `compiler_for`, where the
semantics of `compiler_for` are similar to that of `compiler` except
that it doesn't guarantee the presence of a sysroot for the arguments
passed (as they may be modified).

Perhaps one day we can unify `compiler` and `compiler_for`, but the
usage of `Builder::compiler` is so ubiquitous it would take quite some
time to evaluate whether each one needs the sysroot or not, so it's
hoped that can be done in parallel.
src/bootstrap/builder.rs
src/bootstrap/compile.rs
src/bootstrap/dist.rs
src/bootstrap/doc.rs
src/bootstrap/test.rs