Skip to content

Commit

Permalink
Rollup merge of #89759 - jyn514:x-build-assemble, r=Mark-Simulacrum
Browse files Browse the repository at this point in the history
Assemble the compiler when running `x.py build`

Previously, there was no way to actually get binaries in
`build/$TARGET/stage1/bin` without building the standard library. This
makes it possible to build just the compiler. This can be useful when
the standard library isn't actually necessary for trying out your tests
(e.g. a bug that can be reproduced with only a `no_core` crate).

Closes #73519.
  • Loading branch information
matthiaskrgr authored Oct 13, 2021
2 parents 9f0ef18 + 31265c6 commit 204bd6e
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 3 deletions.
2 changes: 1 addition & 1 deletion src/bootstrap/builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -370,7 +370,7 @@ impl<'a> Builder<'a> {
match kind {
Kind::Build => describe!(
compile::Std,
compile::Rustc,
compile::Assemble,
compile::CodegenBackend,
compile::StartupObjects,
tool::BuildManifest,
Expand Down
11 changes: 9 additions & 2 deletions src/bootstrap/compile.rs
Original file line number Diff line number Diff line change
Expand Up @@ -528,7 +528,7 @@ impl Step for Rustc {
const DEFAULT: bool = false;

fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
run.path("compiler/rustc")
run.never()
}

fn make_run(run: RunConfig<'_>) {
Expand Down Expand Up @@ -1023,9 +1023,16 @@ pub struct Assemble {

impl Step for Assemble {
type Output = Compiler;
const ONLY_HOSTS: bool = true;

fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
run.never()
run.path("compiler/rustc")
}

fn make_run(run: RunConfig<'_>) {
run.builder.ensure(Assemble {
target_compiler: run.builder.compiler(run.builder.top_stage + 1, run.target),
});
}

/// Prepare a new compiler from the artifacts in `stage`
Expand Down

0 comments on commit 204bd6e

Please sign in to comment.