Skip to content

Conversation

@jyn514
Copy link
Member

@jyn514 jyn514 commented Feb 6, 2026

NOTE: this PR is mostly intended to generate discussion. I do not expect these changes to land as-is.

This is built on top of #151930 for convenience. The new commits start with 640e87c.

The first commit adds the new abstraction; the second converts many existing Steps to use it, to give an idea of what it looks like.

See #t-infra/bootstrap > Path filters in bootstrap @ 💬 for previous discussion.


What problems does this solve?

Right now there’s a bunch of adhoc logic to decide whether a Step should be skipped/warn/exit/treated as a default. Usually that logic is related to if some bootstrap tool is missing or whether some config is enabled. It tends to be inconsistent between Steps: some remember to put it in is_default, some don't. Some unconditionally run the Step and exit with an error if the prerequisite is missing; others silently skip the step.

What is the new API?

// mod builder

trait Step {
    // new
    fn is_supported(_config: SupportedConfig<'_, Self>) -> Result<(), Unsupported<Self::Output>> {
        Ok(())
    }
}

struct StepDescription {
    // new
    is_supported: fn(SupportedConfig<'_, Infallible>) -> Result<(), Unsupported<()>>,
}

pub struct SupportedConfig<'a, S> {
    pub builder: &'a Builder<'a>,
    pub extra: MakeOrEnsure<'a, S>,
}

pub enum MakeOrEnsure<'a, S> {
    /// Passed to `is_supported` in `ensure()`, when we have the full Step available.
    Step(&'a S),
    /// Passed to `is_supported` in `make_run`, when we only have a `RunConfig` available.
    Run(&'a RunConfig<'a>),
}

// mod selectors

pub enum Unsupported<Output = ()> {
    Skip(String, Output),
    Warn(String),
    Fatal(String),
}

impl<O: Default> Unsupported<O> {
    pub fn skip(msg: impl Into<String>) -> Result<(), Self>;
}
impl<O> Unsupported<O> {
    pub fn warn(msg: impl Into<String>) -> Result<(), Self>;
    pub fn fatal(msg: impl Into<String>) -> Result<(), Self>;
    fn discard_output(self) -> Unsupported<()>;
}

pub fn check_step_supported<S, O>(
    config: SupportedConfig<'_, S>,
    explicit: bool,
    name: &str,
    is_supported: fn(SupportedConfig<'_, S>) -> Result<(), Unsupported<O>>,
) -> ControlFlow<Option<O>>;

impl<'a> SupportedConfig<'a, Infallible> {
    fn expect_run<S>(self) -> SupportedConfig<'a, S>;
}

What is the new behavior?

After this change, all steps choose from one of the following four options. For all options, Err(_) implies that the step is skipped from make_run; the error variants only matter for ensure.

  1. Ok(()): The step is supported. There is no additional default condition.
  2. Err(Unsupported::Skip): Return the dummy output passed back in the enum.
  3. Err(Unsupported::Warn): Warn, but execute the step anyway.
  4. Err(Unsupported::Fatal): Immediately exit.

Example output

skip:

$ x c std --skip-std-check-if-no-download-rustc
WARNING: check::Std is not necessary in this build configuration and will be ignored: `--skip-std-check-if-no-download-rustc` flag was passed and `rust.download-rustc` is not available

warn:

$ x t lint-docs --stage 1
WARNING: test::LintDocs is not supported in this build configuration: lint-docs tests might not work below stage 2

fatal:

$ x clippy ci --stage 0
ERROR: clippy::CI cannot be run in this build configuration: `x clippy ci` should always be executed with --stage 2

@rustbot rustbot added A-testsuite Area: The testsuite used to check the correctness of rustc S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) labels Feb 6, 2026
@rust-log-analyzer

This comment has been minimized.

@jyn514
Copy link
Member Author

jyn514 commented Feb 6, 2026

i think to fix this failure properly i'd have to add a config.tidy (similar to config.python currently). i'd like to do that properly and add it to config.toml, but i'm going to wait until this gets initial review first.

@tshepang
Copy link
Member

tshepang commented Feb 6, 2026

This is built on top of #151930 for convenience

you could set that as base branch using github ui (and it will automatically shift to main branch if that pr gets merged)

@jyn514 jyn514 force-pushed the bootstrap-is-supported branch from 0f3bced to 78dc5be Compare February 6, 2026 09:56
@rust-log-analyzer
Copy link
Collaborator

The job aarch64-gnu-llvm-20-2 failed! Check out the build log: (web) (plain enhanced) (plain)

Click to see the possible cause of the failure (guessed by this bot)
##[group]Runner Image Provisioner
Hosted Compute Agent
Version: 20260123.484
Commit: 6bd6555ca37d84114959e1c76d2c01448ff61c5d
Build Date: 2026-01-23T19:41:17Z
Worker ID: {ea17799f-e158-4c97-8110-71374fe4e67f}
Azure Region: southcentralus
##[endgroup]
##[group]VM Image
- OS: Linux (arm64)
- Source: Partner
- Name: Ubuntu 24.04 by Arm Limited
---
##[group]Building stage1 wasm-component-ld (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Building stage1 llvm-bitcode-linker (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
WARNING: compile::StartupObjects is not necessary in this build configuration and will be ignored: outside windows-gnu platforms, startup objects are handled by the platform C compiler
##[group]Building stage1 library artifacts (stage1 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Building stage2 compiler artifacts (stage1 -> stage2, aarch64-unknown-linux-gnu)
##[endgroup]
Creating a sysroot for stage2 compiler (use `rustup toolchain link 'name' build/host/stage2`)
##[group]Building stage2 codegen backend cranelift (stage1 -> stage2, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Building stage2 wasm-component-ld (stage1 -> stage2, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Building stage2 llvm-bitcode-linker (stage1 -> stage2, aarch64-unknown-linux-gnu)
##[endgroup]
WARNING: compile::StartupObjects is not necessary in this build configuration and will be ignored: outside windows-gnu platforms, startup objects are handled by the platform C compiler
Uplifting library (stage1 -> stage2)
##[group]Building stage2 cargo (stage1 -> stage2, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Building stage2 rust-analyzer (stage1 -> stage2, aarch64-unknown-linux-gnu)
##[endgroup]
---
  202   196 │ [Test] test::TestFloatParse
────────────┴───────────────────────────────────────────────────────────────────
Stopped on the first failure. Run `cargo insta test` to run all snapshots.

thread 'core::builder::selectors::tests::x_test' (7671) panicked at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:679:13:
snapshot assertion for 'x_test' failed in line 118
stack backtrace:
   0: __rustc::rust_begin_unwind
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/std/src/panicking.rs:689:5
   1: core::panicking::panic_fmt
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/core/src/panicking.rs:80:14
   2: <insta::runtime::SnapshotAssertionContext>::finalize
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:679:13
   3: insta::runtime::assert_snapshot
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:848:13
   4: bootstrap::core::builder::selectors::tests::snapshot_test_inner::{closure#0}
             at ./src/core/builder/selectors/tests.rs:118:9
   5: <insta::settings::Settings>::bind::<bootstrap::core::builder::selectors::tests::snapshot_test_inner::{closure#0}, ()>
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/settings.rs:509:9
   6: bootstrap::core::builder::selectors::tests::snapshot_test_inner
             at ./src/core/builder/selectors/tests.rs:117:14
   7: bootstrap::core::builder::selectors::tests::x_test
             at ./src/core/builder/selectors/tests.rs:160:17
   8: bootstrap::core::builder::selectors::tests::x_test::{closure#0}
---
cargo:warning=Compiler family detection failed due to error: ToolNotFound: failed to find tool "x86_64-linux-gnu-g++": No such file or directory (os error 2)
cargo:warning=Compiler family detection failed due to error: ToolNotFound: failed to find tool "x86_64-linux-gnu-g++": No such file or directory (os error 2)
Skipping TestSuite(test::tests/coverage) because it is excluded
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Snapshot Summary ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Snapshot file: src/bootstrap/src/core/builder/selectors/snapshots/x_test_skip_coverage.snap
Snapshot: x_test_skip_coverage
Source: src/bootstrap/src/core/builder/selectors/tests.rs:118
────────────────────────────────────────────────────────────────────────────────
Expression: test --skip=coverage
────────────────────────────────────────────────────────────────────────────────
-old snapshot
---
  201   195 │ [Test] test::TestFloatParse
────────────┴───────────────────────────────────────────────────────────────────
Stopped on the first failure. Run `cargo insta test` to run all snapshots.

thread 'core::builder::selectors::tests::x_test_skip_coverage' (8374) panicked at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:679:13:
snapshot assertion for 'x_test_skip_coverage' failed in line 118
stack backtrace:
   0: __rustc::rust_begin_unwind
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/std/src/panicking.rs:689:5
   1: core::panicking::panic_fmt
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/core/src/panicking.rs:80:14
   2: <insta::runtime::SnapshotAssertionContext>::finalize
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:679:13
   3: insta::runtime::assert_snapshot
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:848:13
   4: bootstrap::core::builder::selectors::tests::snapshot_test_inner::{closure#0}
             at ./src/core/builder/selectors/tests.rs:118:9
   5: <insta::settings::Settings>::bind::<bootstrap::core::builder::selectors::tests::snapshot_test_inner::{closure#0}, ()>
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/settings.rs:509:9
   6: bootstrap::core::builder::selectors::tests::snapshot_test_inner
             at ./src/core/builder/selectors/tests.rs:117:14
   7: bootstrap::core::builder::selectors::tests::x_test_skip_coverage
             at ./src/core/builder/selectors/tests.rs:160:17
   8: bootstrap::core::builder::selectors::tests::x_test_skip_coverage::{closure#0}
---
Skipping TestSuite(test::tests/rustdoc-json) because it is excluded
Skipping TestSuite(test::tests/run-make) because it is excluded
Skipping TestSuite(test::tests/run-make-cargo) because it is excluded
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Snapshot Summary ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Snapshot file: src/bootstrap/src/core/builder/selectors/snapshots/x_test_skip_tests_etc.snap
Snapshot: x_test_skip_tests_etc
Source: src/bootstrap/src/core/builder/selectors/tests.rs:118
────────────────────────────────────────────────────────────────────────────────
Expression: test --skip=tests --skip=coverage-map --skip=coverage-run --skip=library --skip=tidyselftest
────────────────────────────────────────────────────────────────────────────────
-old snapshot
---
  132   129 │ [Test] test::TestFloatParse
────────────┴───────────────────────────────────────────────────────────────────
Stopped on the first failure. Run `cargo insta test` to run all snapshots.

thread 'core::builder::selectors::tests::x_test_skip_tests_etc' (8407) panicked at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:679:13:
snapshot assertion for 'x_test_skip_tests_etc' failed in line 118
stack backtrace:
   0: __rustc::rust_begin_unwind
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/std/src/panicking.rs:689:5
   1: core::panicking::panic_fmt
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/core/src/panicking.rs:80:14
   2: <insta::runtime::SnapshotAssertionContext>::finalize
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:679:13
   3: insta::runtime::assert_snapshot
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:848:13
   4: bootstrap::core::builder::selectors::tests::snapshot_test_inner::{closure#0}
             at ./src/core/builder/selectors/tests.rs:118:9
   5: <insta::settings::Settings>::bind::<bootstrap::core::builder::selectors::tests::snapshot_test_inner::{closure#0}, ()>
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/settings.rs:509:9
   6: bootstrap::core::builder::selectors::tests::snapshot_test_inner
             at ./src/core/builder/selectors/tests.rs:117:14
   7: bootstrap::core::builder::selectors::tests::x_test_skip_tests_etc
             at ./src/core/builder/selectors/tests.rs:160:17
   8: bootstrap::core::builder::selectors::tests::x_test_skip_tests_etc::{closure#0}
             at ./src/core/builder/selectors/tests.rs:159:23
   9: <bootstrap::core::builder::selectors::tests::x_test_skip_tests_etc::{closure#0} as core::ops::function::FnOnce<()>>::call_once
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/core/src/ops/function.rs:250:5
  10: core::ops::function::FnOnce::call_once
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/core/src/ops/function.rs:250:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- core::builder::selectors::tests::x_test_skip_tests_etc stdout end ----
---
Skipping TestSuite(test::tests/rustdoc-json) because it is excluded
Skipping TestSuite(test::tests/run-make) because it is excluded
Skipping TestSuite(test::tests/run-make-cargo) because it is excluded
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Snapshot Summary ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Snapshot file: src/bootstrap/src/core/builder/selectors/snapshots/x_test_skip_tests.snap
Snapshot: x_test_skip_tests
Source: src/bootstrap/src/core/builder/selectors/tests.rs:118
────────────────────────────────────────────────────────────────────────────────
Expression: test --skip=tests
────────────────────────────────────────────────────────────────────────────────
-old snapshot
---
  153   150 │ [Test] test::TestFloatParse
────────────┴───────────────────────────────────────────────────────────────────
Stopped on the first failure. Run `cargo insta test` to run all snapshots.

thread 'core::builder::selectors::tests::x_test_skip_tests' (8405) panicked at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:679:13:
snapshot assertion for 'x_test_skip_tests' failed in line 118
stack backtrace:
   0: __rustc::rust_begin_unwind
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/std/src/panicking.rs:689:5
   1: core::panicking::panic_fmt
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/core/src/panicking.rs:80:14
   2: <insta::runtime::SnapshotAssertionContext>::finalize
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:679:13
   3: insta::runtime::assert_snapshot
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:848:13
   4: bootstrap::core::builder::selectors::tests::snapshot_test_inner::{closure#0}
             at ./src/core/builder/selectors/tests.rs:118:9
   5: <insta::settings::Settings>::bind::<bootstrap::core::builder::selectors::tests::snapshot_test_inner::{closure#0}, ()>
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/settings.rs:509:9
   6: bootstrap::core::builder::selectors::tests::snapshot_test_inner
             at ./src/core/builder/selectors/tests.rs:117:14
   7: bootstrap::core::builder::selectors::tests::x_test_skip_tests
             at ./src/core/builder/selectors/tests.rs:160:17
   8: bootstrap::core::builder::selectors::tests::x_test_skip_tests::{closure#0}
---
##[endgroup]
##[group]Building stage1 compiler artifacts (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
Creating a sysroot for stage1 compiler (use `rustup toolchain link 'name' build/host/stage1`)
WARNING: compile::StartupObjects is not necessary in this build configuration and will be ignored: outside windows-gnu platforms, startup objects are handled by the platform C compiler
##[group]Building stage1 library artifacts (stage1 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
Doc path: /tmp/.tmpgi5rvi/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/book/index.html
##[group]Documenting stage2 book redirect pages (stage1 -> stage2, aarch64-unknown-linux-gnu)
##[endgroup]
---
##[group]Building stage1 generate-copyright (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]generate-copyright (continued)
##[endgroup]
Dist rustc-1.95.0-dev-aarch64-unknown-linux-gnu
Dist rust-std-1.95.0-dev-aarch64-unknown-linux-gnu
Dist rustc-dev-1.95.0-dev-aarch64-unknown-linux-gnu
Dist rust-src-1.95.0-dev
Dist rust-dev-1.95.0-dev-aarch64-unknown-linux-gnu
##[group]Vendoring sources to "/tmp/.tmpgi5rvi/build/tmp-dry-run/tmp/tarball/rustc/src/image"
##[endgroup]
Dist rustc-1.95.0-dev-src
##[group]Vendoring sources to "/tmp/.tmpgi5rvi/build/tmp-dry-run/tmp/tarball/rustc/src-gpl/image"
##[endgroup]
Dist rustc-1.95.0-dev-src-gpl
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Snapshot Summary ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Snapshot: dist_baseline
Source: src/bootstrap/src/core/builder/tests.rs:1051
────────────────────────────────────────────────────────────────────────────────
Expression: ctx.config("dist").render_steps()
────────────────────────────────────────────────────────────────────────────────
-old snapshot
+new results
────────────┬───────────────────────────────────────────────────────────────────
   28    28 │ [build] rustc 0 <host> -> RustInstaller 1 <host>
   29    29 │ [dist] docs <host>
   30    30 │ [doc] rustc 1 <host> -> std 1 <host> crates=[]
   31    31 │ [dist] rustc 1 <host> -> json-docs 2 <host>
   32       │-[dist] mingw <host>
   33    32 │ [build] rustdoc 2 <host>
   34    33 │ [build] rustc 0 <host> -> GenerateCopyright 1 <host>
   35    34 │ [dist] rustc <host>
   36    35 │ [dist] rustc 1 <host> -> std 1 <host>
────────────┴───────────────────────────────────────────────────────────────────
Stopped on the first failure. Run `cargo insta test` to run all snapshots.

thread 'core::builder::tests::snapshot::dist_baseline' (12503) panicked at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:679:13:
snapshot assertion for 'dist_baseline' failed in line 1051
stack backtrace:
   0: __rustc::rust_begin_unwind
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/std/src/panicking.rs:689:5
   1: core::panicking::panic_fmt
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/core/src/panicking.rs:80:14
   2: <insta::runtime::SnapshotAssertionContext>::finalize
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:679:13
   3: insta::runtime::assert_snapshot
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:848:13
   4: bootstrap::core::builder::tests::snapshot::dist_baseline
             at ./src/core/builder/tests.rs:1051:9
   5: bootstrap::core::builder::tests::snapshot::dist_baseline::{closure#0}
             at ./src/core/builder/tests.rs:1047:23
   6: <bootstrap::core::builder::tests::snapshot::dist_baseline::{closure#0} as core::ops::function::FnOnce<()>>::call_once
---
##[endgroup]
Creating a sysroot for stage1 compiler (use `rustup toolchain link 'name' build/host/stage1`)
##[group]Building stage1 wasm-component-ld (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
WARNING: compile::StartupObjects is not necessary in this build configuration and will be ignored: outside windows-gnu platforms, startup objects are handled by the platform C compiler
##[group]Building stage1 library artifacts (stage1:aarch64-unknown-linux-gnu -> stage1:i686-unknown-haiku)
##[endgroup]
WARNING: compile::StartupObjects is not necessary in this build configuration and will be ignored: outside windows-gnu platforms, startup objects are handled by the platform C compiler
##[endgroup]
##[group]Building stage1 library artifacts (stage1 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
##[endgroup]
##[group]Building stage2 compiler artifacts (stage1:aarch64-unknown-linux-gnu -> stage2:i686-unknown-haiku)
---
────────────────────────────────────────────────────────────────────────────────
-old snapshot
+new results
────────────┬───────────────────────────────────────────────────────────────────
    0       │-[dist] mingw <target1>
    1     0 │ [build] llvm <host>
    2     1 │ [build] llvm <target1>
    3     2 │ [build] rustc 0 <host> -> rustc 1 <host>
    4     3 │ [build] rustc 0 <host> -> WasmComponentLd 1 <host>
────────────┴───────────────────────────────────────────────────────────────────
Stopped on the first failure. Run `cargo insta test` to run all snapshots.

thread 'core::builder::tests::snapshot::dist_all_cross_extended_no_docs' (12496) panicked at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:679:13:
snapshot assertion for 'dist_all_cross_extended_no_docs' failed in line 1603
stack backtrace:
   0: __rustc::rust_begin_unwind
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/std/src/panicking.rs:689:5
   1: core::panicking::panic_fmt
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/core/src/panicking.rs:80:14
   2: <insta::runtime::SnapshotAssertionContext>::finalize
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:679:13
   3: insta::runtime::assert_snapshot
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:848:13
   4: bootstrap::core::builder::tests::snapshot::dist_all_cross_extended_no_docs
             at ./src/core/builder/tests.rs:1603:9
   5: bootstrap::core::builder::tests::snapshot::dist_all_cross_extended_no_docs::{closure#0}
             at ./src/core/builder/tests.rs:1580:41
   6: <bootstrap::core::builder::tests::snapshot::dist_all_cross_extended_no_docs::{closure#0} as core::ops::function::FnOnce<()>>::call_once
---
##[group]Building stage1 unstable-book-gen (stage0 -> stage1, aarch64-unknown-linux-gnu) (continued)
##[group]Building stage1 rustbook (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Building stage1 rustbook (stage0 -> stage1, aarch64-unknown-linux-gnu) (continued)
Doc path: /tmp/.tmpIuHcoy/build/tmp-dry-run/i686-unknown-haiku/doc/unstable-book/index.html
##[group]Building LLVM for aarch64-unknown-linux-gnu
##[endgroup]
##[group]Building LLVM for aarch64-unknown-linux-gnu (continued)
##[group]Building stage1 compiler artifacts (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
Creating a sysroot for stage1 compiler (use `rustup toolchain link 'name' build/host/stage1`)
##[group]Building stage1 wasm-component-ld (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
WARNING: compile::StartupObjects is not necessary in this build configuration and will be ignored: outside windows-gnu platforms, startup objects are handled by the platform C compiler
##[group]Building stage1 library artifacts (stage1:aarch64-unknown-linux-gnu -> stage1:i686-unknown-haiku)
##[endgroup]
Doc path: /tmp/.tmpIuHcoy/build/tmp-dry-run/i686-unknown-haiku/doc/book/index.html
##[group]Documenting stage2 book redirect pages (stage1:aarch64-unknown-linux-gnu -> stage2:i686-unknown-haiku)
##[endgroup]
WARNING: compile::StartupObjects is not necessary in this build configuration and will be ignored: outside windows-gnu platforms, startup objects are handled by the platform C compiler
##[group]Building stage1 library artifacts (stage1 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
##[endgroup]
##[group]Documenting stage2 standalone (stage1:aarch64-unknown-linux-gnu -> stage2:i686-unknown-haiku)
##[endgroup]
##[group]Building stage1 rustdoc_tool_binary (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Building stage1 rustdoc_tool_binary (stage0 -> stage1, aarch64-unknown-linux-gnu) (continued)
Doc path: /tmp/.tmpIuHcoy/build/tmp-dry-run/i686-unknown-haiku/doc/index.html
##[endgroup]
##[group]Documenting stage1 library{alloc, compiler_builtins, core, panic_abort, panic_unwind, proc_macro, rustc-std-workspace-core, std, std_detect, sysroot, test, unwind} in HTML format (stage1:aarch64-unknown-linux-gnu -> stage1:i686-unknown-haiku)
##[endgroup]
Doc path: /tmp/.tmpIuHcoy/build/tmp-dry-run/i686-unknown-haiku/doc/alloc/index.html
##[group]Building LLVM for i686-unknown-haiku
##[endgroup]
##[group]Building stage2 compiler artifacts (stage1:aarch64-unknown-linux-gnu -> stage2:i686-unknown-haiku)
##[endgroup]
Creating a sysroot for stage2 compiler (i686-unknown-haiku) (use `rustup toolchain link 'name' build/i686-unknown-haiku/stage2`)
##[group]Building stage2 wasm-component-ld (stage1:aarch64-unknown-linux-gnu -> stage2:i686-unknown-haiku)
##[endgroup]
Documenting error index (i686-unknown-haiku)
##[endgroup]
##[group]Building stage2 error_index_generator (stage1:aarch64-unknown-linux-gnu -> stage2:i686-unknown-haiku)
##[endgroup]
Doc path: /tmp/.tmpIuHcoy/build/tmp-dry-run/i686-unknown-haiku/doc/error-index.html
Doc path: /tmp/.tmpIuHcoy/build/tmp-dry-run/i686-unknown-haiku/doc/nomicon/index.html
Doc path: /tmp/.tmpIuHcoy/build/tmp-dry-run/i686-unknown-haiku/doc/reference/index.html
Doc path: /tmp/.tmpIuHcoy/build/tmp-dry-run/i686-unknown-haiku/doc/rustdoc/index.html
Doc path: /tmp/.tmpIuHcoy/build/tmp-dry-run/i686-unknown-haiku/doc/rust-by-example/index.html
Generating lint docs (i686-unknown-haiku)
##[group]Building stage1 lint-docs (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Running stage2 lint-docs (stage1:aarch64-unknown-linux-gnu -> stage2:i686-unknown-haiku)
##[endgroup]
Doc path: /tmp/.tmpIuHcoy/build/tmp-dry-run/i686-unknown-haiku/doc/rustc/index.html
Doc path: /tmp/.tmpIuHcoy/build/tmp-dry-run/i686-unknown-haiku/doc/cargo/index.html
Doc path: /tmp/.tmpIuHcoy/build/tmp-dry-run/i686-unknown-haiku/doc/clippy/index.html
Doc path: /tmp/.tmpIuHcoy/build/tmp-dry-run/i686-unknown-haiku/doc/embedded-book/index.html
Doc path: /tmp/.tmpIuHcoy/build/tmp-dry-run/i686-unknown-haiku/doc/edition-guide/index.html
Doc path: /tmp/.tmpIuHcoy/build/tmp-dry-run/i686-unknown-haiku/doc/style-guide/index.html
##[group]Documenting stage2 releases (stage1:aarch64-unknown-linux-gnu -> stage2:i686-unknown-haiku)
##[endgroup]
##[group]Building stage1 rust-installer (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
Dist rust-docs-nightly-i686-unknown-haiku
##[group]Documenting stage1 library{alloc, compiler_builtins, core, panic_abort, panic_unwind, proc_macro, rustc-std-workspace-core, std, std_detect, sysroot, test, unwind} in JSON format (stage1:aarch64-unknown-linux-gnu -> stage1:i686-unknown-haiku)
---
Dist extended stage2 (i686-unknown-haiku)
##[group]Documenting stage2 library{alloc, compiler_builtins, core, panic_abort, panic_unwind, proc_macro, rustc-std-workspace-core, std, std_detect, sysroot, test, unwind} in JSON format (stage2 -> stage2, i686-unknown-haiku)
##[endgroup]
Dist rust-docs-json-nightly-i686-unknown-haiku
##[group]Vendoring sources to "/tmp/.tmpIuHcoy/build/tmp-dry-run/tmp/tarball/rustc/src/image"
##[endgroup]
Dist rustc-nightly-src
##[group]Vendoring sources to "/tmp/.tmpIuHcoy/build/tmp-dry-run/tmp/tarball/rustc/src-gpl/image"
##[endgroup]
Dist rustc-nightly-src-gpl
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Snapshot Summary ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Snapshot: dist_all_cross_extended
Source: src/bootstrap/src/core/builder/tests.rs:1501
────────────────────────────────────────────────────────────────────────────────
Expression: ctx.config("dist").hosts(&[TEST_TRIPLE_1]).targets(&[TEST_TRIPLE_1]).args(&["--set",
"rust.channel=nightly", "--set", "build.extended=true"]).render_steps()
────────────────────────────────────────────────────────────────────────────────
-old snapshot
+new results
────────────┬───────────────────────────────────────────────────────────────────
   32    32 │ [build] rustc 0 <host> -> RustInstaller 1 <host>
   33    33 │ [dist] docs <target1>
   34    34 │ [doc] rustc 1 <host> -> std 1 <target1> crates=[]
   35    35 │ [dist] rustc 1 <host> -> json-docs 2 <target1>
   36       │-[dist] mingw <target1>
   37    36 │ [build] rustdoc 2 <target1>
   38    37 │ [build] rustc 1 <host> -> rust-analyzer-proc-macro-srv 2 <target1>
   39    38 │ [build] rustc 0 <host> -> GenerateCopyright 1 <host>
   40    39 │ [dist] rustc <target1>
────────────┴───────────────────────────────────────────────────────────────────
Stopped on the first failure. Run `cargo insta test` to run all snapshots.

thread 'core::builder::tests::snapshot::dist_all_cross_extended' (12461) panicked at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:679:13:
snapshot assertion for 'dist_all_cross_extended' failed in line 1501
stack backtrace:
   0: __rustc::rust_begin_unwind
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/std/src/panicking.rs:689:5
   1: core::panicking::panic_fmt
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/core/src/panicking.rs:80:14
   2: <insta::runtime::SnapshotAssertionContext>::finalize
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:679:13
   3: insta::runtime::assert_snapshot
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:848:13
   4: bootstrap::core::builder::tests::snapshot::dist_all_cross_extended
             at ./src/core/builder/tests.rs:1501:9
   5: bootstrap::core::builder::tests::snapshot::dist_all_cross_extended::{closure#0}
             at ./src/core/builder/tests.rs:1499:33
   6: <bootstrap::core::builder::tests::snapshot::dist_all_cross_extended::{closure#0} as core::ops::function::FnOnce<()>>::call_once
---
##[endgroup]
Creating a sysroot for stage1 compiler (use `rustup toolchain link 'name' build/host/stage1`)
##[group]Building stage1 codegen backend cranelift (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
WARNING: compile::StartupObjects is not necessary in this build configuration and will be ignored: outside windows-gnu platforms, startup objects are handled by the platform C compiler
##[group]Building stage1 library artifacts (stage1 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
Doc path: /tmp/.tmpbp6uKk/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/book/index.html
##[group]Documenting stage2 book redirect pages (stage1 -> stage2, aarch64-unknown-linux-gnu)
##[endgroup]
---
##[group]Building stage1 generate-copyright (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]generate-copyright (continued)
##[endgroup]
Dist rustc-1.95.0-dev-aarch64-unknown-linux-gnu
Dist rust-std-1.95.0-dev-aarch64-unknown-linux-gnu
Dist rustc-dev-1.95.0-dev-aarch64-unknown-linux-gnu
Dist rust-src-1.95.0-dev
Dist rust-dev-1.95.0-dev-aarch64-unknown-linux-gnu
##[group]Vendoring sources to "/tmp/.tmpbp6uKk/build/tmp-dry-run/tmp/tarball/rustc/src/image"
##[endgroup]
Dist rustc-1.95.0-dev-src
##[group]Vendoring sources to "/tmp/.tmpbp6uKk/build/tmp-dry-run/tmp/tarball/rustc/src-gpl/image"
##[endgroup]
Dist rustc-1.95.0-dev-src-gpl
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Snapshot Summary ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Snapshot: dist_cranelift_by_default
Source: src/bootstrap/src/core/builder/tests.rs:1647
────────────────────────────────────────────────────────────────────────────────
Expression: ctx.config("dist").args(&["--set",
"rust.codegen-backends=['llvm', 'cranelift']"]).render_steps()
────────────────────────────────────────────────────────────────────────────────
-old snapshot
+new results
────────────┬───────────────────────────────────────────────────────────────────
   30    30 │ [build] rustc 0 <host> -> RustInstaller 1 <host>
   31    31 │ [dist] docs <host>
   32    32 │ [doc] rustc 1 <host> -> std 1 <host> crates=[]
   33    33 │ [dist] rustc 1 <host> -> json-docs 2 <host>
   34       │-[dist] mingw <host>
   35    34 │ [build] rustdoc 2 <host>
   36    35 │ [build] rustc 0 <host> -> GenerateCopyright 1 <host>
   37    36 │ [dist] rustc <host>
   38    37 │ [dist] rustc 1 <host> -> rustc_codegen_cranelift 2 <host>
────────────┴───────────────────────────────────────────────────────────────────
Stopped on the first failure. Run `cargo insta test` to run all snapshots.

thread 'core::builder::tests::snapshot::dist_cranelift_by_default' (12714) panicked at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:679:13:
snapshot assertion for 'dist_cranelift_by_default' failed in line 1647
stack backtrace:
   0: __rustc::rust_begin_unwind
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/std/src/panicking.rs:689:5
   1: core::panicking::panic_fmt
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/core/src/panicking.rs:80:14
   2: <insta::runtime::SnapshotAssertionContext>::finalize
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:679:13
   3: insta::runtime::assert_snapshot
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:848:13
   4: bootstrap::core::builder::tests::snapshot::dist_cranelift_by_default
             at ./src/core/builder/tests.rs:1647:9
   5: bootstrap::core::builder::tests::snapshot::dist_cranelift_by_default::{closure#0}
             at ./src/core/builder/tests.rs:1645:35
   6: <bootstrap::core::builder::tests::snapshot::dist_cranelift_by_default::{closure#0} as core::ops::function::FnOnce<()>>::call_once
---
##[group]Building stage1 unstable-book-gen (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Building stage1 rustbook (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
Doc path: /tmp/.tmpqEhjCx/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/unstable-book/index.html
##[group]Building LLVM for aarch64-unknown-linux-gnu
##[endgroup]
##[group]Building stage1 compiler artifacts (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
Creating a sysroot for stage1 compiler (use `rustup toolchain link 'name' build/host/stage1`)
##[group]Building stage1 lld-wrapper (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Building stage1 wasm-component-ld (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Building stage1 llvm-bitcode-linker (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
WARNING: compile::StartupObjects is not necessary in this build configuration and will be ignored: outside windows-gnu platforms, startup objects are handled by the platform C compiler
##[group]Building stage1 library artifacts (stage1 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
Doc path: /tmp/.tmpqEhjCx/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/book/index.html
##[group]Documenting stage2 book redirect pages (stage1 -> stage2, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Documenting stage2 standalone (stage1 -> stage2, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Building stage1 rustdoc_tool_binary (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Documenting stage2 standalone (stage1 -> stage2, aarch64-unknown-linux-gnu) (continued)
Doc path: /tmp/.tmpqEhjCx/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/index.html
##[endgroup]
##[group]Documenting stage1 library{alloc, compiler_builtins, core, panic_abort, panic_unwind, proc_macro, rustc-std-workspace-core, std, std_detect, sysroot, test, unwind} in HTML format (stage1 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
Doc path: /tmp/.tmpqEhjCx/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/alloc/index.html
##[group]Building stage2 compiler artifacts (stage1 -> stage2, aarch64-unknown-linux-gnu)
##[endgroup]
Creating a sysroot for stage2 compiler (use `rustup toolchain link 'name' build/host/stage2`)
##[group]Building stage2 lld-wrapper (stage1 -> stage2, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Building stage2 wasm-component-ld (stage1 -> stage2, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Building stage2 llvm-bitcode-linker (stage1 -> stage2, aarch64-unknown-linux-gnu)
##[endgroup]
Documenting error index (aarch64-unknown-linux-gnu)
##[group]Building stage2 error_index_generator (stage1 -> stage2, aarch64-unknown-linux-gnu)
##[endgroup]
Doc path: /tmp/.tmpqEhjCx/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/error-index.html
Doc path: /tmp/.tmpqEhjCx/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/nomicon/index.html
Doc path: /tmp/.tmpqEhjCx/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/reference/index.html
Doc path: /tmp/.tmpqEhjCx/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/rustdoc/index.html
Doc path: /tmp/.tmpqEhjCx/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/rust-by-example/index.html
Generating lint docs (aarch64-unknown-linux-gnu)
##[group]Building stage1 lint-docs (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Running stage2 lint-docs (stage1 -> stage2, aarch64-unknown-linux-gnu)
##[endgroup]
Doc path: /tmp/.tmpqEhjCx/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/rustc/index.html
Doc path: /tmp/.tmpqEhjCx/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/cargo/index.html
Doc path: /tmp/.tmpqEhjCx/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/clippy/index.html
Doc path: /tmp/.tmpqEhjCx/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/embedded-book/index.html
Doc path: /tmp/.tmpqEhjCx/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/edition-guide/index.html
Doc path: /tmp/.tmpqEhjCx/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/style-guide/index.html
##[group]Documenting stage2 releases (stage1 -> stage2, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Building stage1 rust-installer (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
Dist rust-docs-1.95.0-dev-aarch64-unknown-linux-gnu
---
Dist rust-dev-1.95.0-dev-aarch64-unknown-linux-gnu
Dist extended stage2 (aarch64-unknown-linux-gnu)
##[group]Documenting stage2 library{alloc, compiler_builtins, core, panic_abort, panic_unwind, proc_macro, rustc-std-workspace-core, std, std_detect, sysroot, test, unwind} in JSON format (stage2 -> stage2, aarch64-unknown-linux-gnu)
##[endgroup]
Dist rust-docs-json-1.95.0-dev-aarch64-unknown-linux-gnu
##[group]Vendoring sources to "/tmp/.tmpqEhjCx/build/tmp-dry-run/tmp/tarball/rustc/src/image"
##[endgroup]
Dist rustc-1.95.0-dev-src
##[group]Vendoring sources to "/tmp/.tmpqEhjCx/build/tmp-dry-run/tmp/tarball/rustc/src-gpl/image"
##[endgroup]
Dist rustc-1.95.0-dev-src-gpl
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Snapshot Summary ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Snapshot: dist_extended
Source: src/bootstrap/src/core/builder/tests.rs:1154
────────────────────────────────────────────────────────────────────────────────
Expression: ctx.config("dist").args(&["--set", "build.extended=true", "--set",
"rust.llvm-bitcode-linker=true", "--set", "rust.lld=true",]).render_steps()
────────────────────────────────────────────────────────────────────────────────
-old snapshot
+new results
────────────┬───────────────────────────────────────────────────────────────────
   34    34 │ [build] rustc 0 <host> -> RustInstaller 1 <host>
   35    35 │ [dist] docs <host>
   36    36 │ [doc] rustc 1 <host> -> std 1 <host> crates=[]
   37    37 │ [dist] rustc 1 <host> -> json-docs 2 <host>
   38       │-[dist] mingw <host>
   39    38 │ [build] rustdoc 2 <host>
   40    39 │ [build] rustc 1 <host> -> rust-analyzer-proc-macro-srv 2 <host>
   41    40 │ [build] rustc 0 <host> -> GenerateCopyright 1 <host>
   42    41 │ [dist] rustc <host>
────────────┴───────────────────────────────────────────────────────────────────
Stopped on the first failure. Run `cargo insta test` to run all snapshots.

thread 'core::builder::tests::snapshot::dist_extended' (12789) panicked at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:679:13:
snapshot assertion for 'dist_extended' failed in line 1154
stack backtrace:
   0: __rustc::rust_begin_unwind
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/std/src/panicking.rs:689:5
   1: core::panicking::panic_fmt
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/core/src/panicking.rs:80:14
   2: <insta::runtime::SnapshotAssertionContext>::finalize
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:679:13
   3: insta::runtime::assert_snapshot
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:848:13
   4: bootstrap::core::builder::tests::snapshot::dist_extended
             at ./src/core/builder/tests.rs:1154:9
   5: bootstrap::core::builder::tests::snapshot::dist_extended::{closure#0}
             at ./src/core/builder/tests.rs:1152:23
   6: <bootstrap::core::builder::tests::snapshot::dist_extended::{closure#0} as core::ops::function::FnOnce<()>>::call_once
---
##[group]Building stage1 unstable-book-gen (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Building stage1 rustbook (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
Doc path: /tmp/.tmpRiZsP6/build/tmp-dry-run/i686-unknown-haiku/doc/unstable-book/index.html
##[group]Building LLVM for aarch64-unknown-linux-gnu
##[endgroup]
##[group]Building stage1 compiler artifacts (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
Creating a sysroot for stage1 compiler (use `rustup toolchain link 'name' build/host/stage1`)
WARNING: compile::StartupObjects is not necessary in this build configuration and will be ignored: outside windows-gnu platforms, startup objects are handled by the platform C compiler
##[group]Building stage1 library artifacts (stage1:aarch64-unknown-linux-gnu -> stage1:i686-unknown-haiku)
##[endgroup]
Doc path: /tmp/.tmpRiZsP6/build/tmp-dry-run/i686-unknown-haiku/doc/book/index.html
##[group]Documenting stage2 book redirect pages (stage1:aarch64-unknown-linux-gnu -> stage2:i686-unknown-haiku)
##[endgroup]
WARNING: compile::StartupObjects is not necessary in this build configuration and will be ignored: outside windows-gnu platforms, startup objects are handled by the platform C compiler
##[group]Building stage1 library artifacts (stage1 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Documenting stage2 standalone (stage1:aarch64-unknown-linux-gnu -> stage2:i686-unknown-haiku)
##[endgroup]
##[group]Building stage1 rustdoc_tool_binary (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Documenting stage2 standalone (stage1:aarch64-unknown-linux-gnu -> stage2:i686-unknown-haiku) (continued)
Doc path: /tmp/.tmpRiZsP6/build/tmp-dry-run/i686-unknown-haiku/doc/index.html
##[endgroup]
##[group]Documenting stage1 library{alloc, compiler_builtins, core, panic_abort, panic_unwind, proc_macro, rustc-std-workspace-core, std, std_detect, sysroot, test, unwind} in HTML format (stage1:aarch64-unknown-linux-gnu -> stage1:i686-unknown-haiku)
##[endgroup]
Doc path: /tmp/.tmpRiZsP6/build/tmp-dry-run/i686-unknown-haiku/doc/alloc/index.html
Doc path: /tmp/.tmpRiZsP6/build/tmp-dry-run/i686-unknown-haiku/doc/nomicon/index.html
Doc path: /tmp/.tmpRiZsP6/build/tmp-dry-run/i686-unknown-haiku/doc/reference/index.html
Doc path: /tmp/.tmpRiZsP6/build/tmp-dry-run/i686-unknown-haiku/doc/rustdoc/index.html
Doc path: /tmp/.tmpRiZsP6/build/tmp-dry-run/i686-unknown-haiku/doc/rust-by-example/index.html
Doc path: /tmp/.tmpRiZsP6/build/tmp-dry-run/i686-unknown-haiku/doc/cargo/index.html
Doc path: /tmp/.tmpRiZsP6/build/tmp-dry-run/i686-unknown-haiku/doc/clippy/index.html
Doc path: /tmp/.tmpRiZsP6/build/tmp-dry-run/i686-unknown-haiku/doc/embedded-book/index.html
Doc path: /tmp/.tmpRiZsP6/build/tmp-dry-run/i686-unknown-haiku/doc/edition-guide/index.html
Doc path: /tmp/.tmpRiZsP6/build/tmp-dry-run/i686-unknown-haiku/doc/style-guide/index.html
##[group]Documenting stage2 releases (stage1:aarch64-unknown-linux-gnu -> stage2:i686-unknown-haiku)
##[endgroup]
##[group]Building stage1 rust-installer (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
Dist rust-docs-1.95.0-dev-i686-unknown-haiku
##[group]Documenting stage1 library{alloc, compiler_builtins, core, panic_abort, panic_unwind, proc_macro, rustc-std-workspace-core, std, std_detect, sysroot, test, unwind} in JSON format (stage1:aarch64-unknown-linux-gnu -> stage1:i686-unknown-haiku)
##[endgroup]
Dist rust-docs-json-1.95.0-dev-i686-unknown-haiku
Dist rust-std-1.95.0-dev-i686-unknown-haiku
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Snapshot Summary ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Snapshot: dist_with_empty_host
Source: src/bootstrap/src/core/builder/tests.rs:1459
────────────────────────────────────────────────────────────────────────────────
Expression: ctx.config("dist").hosts(&[]).targets(&[TEST_TRIPLE_1]).render_steps()
────────────────────────────────────────────────────────────────────────────────
-old snapshot
+new results
────────────┬───────────────────────────────────────────────────────────────────
   24    24 │ [build] rustc 0 <host> -> RustInstaller 1 <host>
   25    25 │ [dist] docs <target1>
   26    26 │ [doc] rustc 1 <host> -> std 1 <target1> crates=[]
   27    27 │ [dist] rustc 1 <host> -> json-docs 2 <target1>
   28       │-[dist] mingw <target1>
   29    28 │ [dist] rustc 1 <host> -> std 1 <target1>
────────────┴───────────────────────────────────────────────────────────────────
Stopped on the first failure. Run `cargo insta test` to run all snapshots.

thread 'core::builder::tests::snapshot::dist_with_empty_host' (12901) panicked at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:679:13:
snapshot assertion for 'dist_with_empty_host' failed in line 1459
stack backtrace:
   0: __rustc::rust_begin_unwind
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/std/src/panicking.rs:689:5
   1: core::panicking::panic_fmt
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/core/src/panicking.rs:80:14
   2: <insta::runtime::SnapshotAssertionContext>::finalize
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:679:13
   3: insta::runtime::assert_snapshot
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:848:13
   4: bootstrap::core::builder::tests::snapshot::dist_with_empty_host
             at ./src/core/builder/tests.rs:1459:9
   5: bootstrap::core::builder::tests::snapshot::dist_with_empty_host::{closure#0}
             at ./src/core/builder/tests.rs:1457:30
   6: <bootstrap::core::builder::tests::snapshot::dist_with_empty_host::{closure#0} as core::ops::function::FnOnce<()>>::call_once
---
##[endgroup]
##[group]Building stage1 compiler artifacts (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
Creating a sysroot for stage1 compiler (use `rustup toolchain link 'name' build/host/stage1`)
WARNING: compile::StartupObjects is not necessary in this build configuration and will be ignored: outside windows-gnu platforms, startup objects are handled by the platform C compiler
##[group]Building stage1 library artifacts (stage1 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
Doc path: /tmp/.tmpxiZRM6/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/book/index.html
##[group]Documenting stage2 book redirect pages (stage1 -> stage2, aarch64-unknown-linux-gnu)
##[endgroup]
---
##[endgroup]
Doc path: /tmp/.tmpxiZRM6/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/error-index.html
##[group]Building LLVM for i686-unknown-haiku
##[endgroup]
WARNING: compile::StartupObjects is not necessary in this build configuration and will be ignored: outside windows-gnu platforms, startup objects are handled by the platform C compiler
##[group]Building stage1 library artifacts (stage1:aarch64-unknown-linux-gnu -> stage1:i686-unknown-haiku)
##[endgroup]
##[group]Building stage2 compiler artifacts (stage1:aarch64-unknown-linux-gnu -> stage2:i686-unknown-haiku)
##[endgroup]
Creating a sysroot for stage2 compiler (i686-unknown-haiku) (use `rustup toolchain link 'name' build/i686-unknown-haiku/stage2`)
Documenting error index (i686-unknown-haiku)
##[group]Building stage2 error_index_generator (stage1:aarch64-unknown-linux-gnu -> stage2:i686-unknown-haiku)
##[endgroup]
Doc path: /tmp/.tmpxiZRM6/build/tmp-dry-run/i686-unknown-haiku/doc/error-index.html
Doc path: /tmp/.tmpxiZRM6/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/nomicon/index.html
Doc path: /tmp/.tmpxiZRM6/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/reference/index.html
Doc path: /tmp/.tmpxiZRM6/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/rustdoc/index.html
Doc path: /tmp/.tmpxiZRM6/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/rust-by-example/index.html
Generating lint docs (aarch64-unknown-linux-gnu)
##[group]Building stage1 lint-docs (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Running stage2 lint-docs (stage1 -> stage2, aarch64-unknown-linux-gnu)
##[endgroup]
Doc path: /tmp/.tmpxiZRM6/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/rustc/index.html
Generating lint docs (i686-unknown-haiku)
##[group]Running stage2 lint-docs (stage1:aarch64-unknown-linux-gnu -> stage2:i686-unknown-haiku)
##[endgroup]
Doc path: /tmp/.tmpxiZRM6/build/tmp-dry-run/i686-unknown-haiku/doc/rustc/index.html
Doc path: /tmp/.tmpxiZRM6/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/cargo/index.html
Doc path: /tmp/.tmpxiZRM6/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/clippy/index.html
Doc path: /tmp/.tmpxiZRM6/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/embedded-book/index.html
Doc path: /tmp/.tmpxiZRM6/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/edition-guide/index.html
Doc path: /tmp/.tmpxiZRM6/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/style-guide/index.html
##[group]Documenting stage2 releases (stage1 -> stage2, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Building stage1 rust-installer (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
Dist rust-docs-1.95.0-dev-aarch64-unknown-linux-gnu
---
##[endgroup]
Dist rustc-1.95.0-dev-aarch64-unknown-linux-gnu
##[group]Building stage2 rustdoc_tool_binary (stage1:aarch64-unknown-linux-gnu -> stage2:i686-unknown-haiku)
##[endgroup]
Dist rustc-1.95.0-dev-i686-unknown-haiku
Dist rust-std-1.95.0-dev-aarch64-unknown-linux-gnu
Dist rustc-dev-1.95.0-dev-aarch64-unknown-linux-gnu
Dist rustc-dev-1.95.0-dev-i686-unknown-haiku
Dist rust-src-1.95.0-dev
Dist rust-dev-1.95.0-dev-aarch64-unknown-linux-gnu
Dist rust-dev-1.95.0-dev-i686-unknown-haiku
##[group]Vendoring sources to "/tmp/.tmpxiZRM6/build/tmp-dry-run/tmp/tarball/rustc/src/image"
##[endgroup]
Dist rustc-1.95.0-dev-src
##[group]Vendoring sources to "/tmp/.tmpxiZRM6/build/tmp-dry-run/tmp/tarball/rustc/src-gpl/image"
##[endgroup]
Dist rustc-1.95.0-dev-src-gpl
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Snapshot Summary ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Snapshot: dist_with_hosts
Source: src/bootstrap/src/core/builder/tests.rs:1311
────────────────────────────────────────────────────────────────────────────────
Expression: ctx.config("dist").hosts(&[&host_target(),
TEST_TRIPLE_1]).targets(&[&host_target()]).render_steps()
────────────────────────────────────────────────────────────────────────────────
-old snapshot
+new results
────────────┬───────────────────────────────────────────────────────────────────
   34    34 │ [build] rustc 0 <host> -> RustInstaller 1 <host>
   35    35 │ [dist] docs <host>
   36    36 │ [doc] rustc 1 <host> -> std 1 <host> crates=[]
   37    37 │ [dist] rustc 1 <host> -> json-docs 2 <host>
   38       │-[dist] mingw <host>
   39    38 │ [build] rustdoc 2 <host>
   40    39 │ [build] rustc 0 <host> -> GenerateCopyright 1 <host>
   41    40 │ [dist] rustc <host>
   42    41 │ [build] rustdoc 2 <target1>
────────────┴───────────────────────────────────────────────────────────────────
Stopped on the first failure. Run `cargo insta test` to run all snapshots.

thread 'core::builder::tests::snapshot::dist_with_hosts' (13006) panicked at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:679:13:
snapshot assertion for 'dist_with_hosts' failed in line 1311
stack backtrace:
   0: __rustc::rust_begin_unwind
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/std/src/panicking.rs:689:5
   1: core::panicking::panic_fmt
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/core/src/panicking.rs:80:14
   2: <insta::runtime::SnapshotAssertionContext>::finalize
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:679:13
   3: insta::runtime::assert_snapshot
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:848:13
   4: bootstrap::core::builder::tests::snapshot::dist_with_hosts
             at ./src/core/builder/tests.rs:1311:9
   5: bootstrap::core::builder::tests::snapshot::dist_with_hosts::{closure#0}
             at ./src/core/builder/tests.rs:1309:25
   6: <bootstrap::core::builder::tests::snapshot::dist_with_hosts::{closure#0} as core::ops::function::FnOnce<()>>::call_once
---
##[group]Building stage1 unstable-book-gen (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Building stage1 rustbook (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
Doc path: /tmp/.tmp8GXlxm/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/unstable-book/index.html
Generating unstable book md files (i686-unknown-haiku)
Doc path: /tmp/.tmp8GXlxm/build/tmp-dry-run/i686-unknown-haiku/doc/unstable-book/index.html
##[group]Building LLVM for aarch64-unknown-linux-gnu
##[endgroup]
##[group]Building stage1 compiler artifacts (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
Creating a sysroot for stage1 compiler (use `rustup toolchain link 'name' build/host/stage1`)
WARNING: compile::StartupObjects is not necessary in this build configuration and will be ignored: outside windows-gnu platforms, startup objects are handled by the platform C compiler
##[group]Building stage1 library artifacts (stage1 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
Doc path: /tmp/.tmp8GXlxm/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/book/index.html
##[group]Documenting stage2 book redirect pages (stage1 -> stage2, aarch64-unknown-linux-gnu)
##[endgroup]
WARNING: compile::StartupObjects is not necessary in this build configuration and will be ignored: outside windows-gnu platforms, startup objects are handled by the platform C compiler
##[group]Building stage1 library artifacts (stage1:aarch64-unknown-linux-gnu -> stage1:i686-unknown-haiku)
##[endgroup]
Doc path: /tmp/.tmp8GXlxm/build/tmp-dry-run/i686-unknown-haiku/doc/book/index.html
##[group]Documenting stage2 book redirect pages (stage1:aarch64-unknown-linux-gnu -> stage2:i686-unknown-haiku)
##[endgroup]
##[group]Documenting stage2 standalone (stage1 -> stage2, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Building stage1 rustdoc_tool_binary (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Documenting stage2 standalone (stage1 -> stage2, aarch64-unknown-linux-gnu) (continued)
Doc path: /tmp/.tmp8GXlxm/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/index.html
##[endgroup]
##[group]Documenting stage2 standalone (stage1:aarch64-unknown-linux-gnu -> stage2:i686-unknown-haiku)
Doc path: /tmp/.tmp8GXlxm/build/tmp-dry-run/i686-unknown-haiku/doc/index.html
##[endgroup]
##[group]Documenting stage1 library{alloc, compiler_builtins, core, panic_abort, panic_unwind, proc_macro, rustc-std-workspace-core, std, std_detect, sysroot, test, unwind} in HTML format (stage1 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
Doc path: /tmp/.tmp8GXlxm/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/alloc/index.html
##[group]Documenting stage1 library{alloc, compiler_builtins, core, panic_abort, panic_unwind, proc_macro, rustc-std-workspace-core, std, std_detect, sysroot, test, unwind} in HTML format (stage1:aarch64-unknown-linux-gnu -> stage1:i686-unknown-haiku)
##[endgroup]
Doc path: /tmp/.tmp8GXlxm/build/tmp-dry-run/i686-unknown-haiku/doc/alloc/index.html
##[group]Building stage2 compiler artifacts (stage1 -> stage2, aarch64-unknown-linux-gnu)
##[endgroup]
Creating a sysroot for stage2 compiler (use `rustup toolchain link 'name' build/host/stage2`)
Documenting error index (aarch64-unknown-linux-gnu)
##[group]Building stage2 error_index_generator (stage1 -> stage2, aarch64-unknown-linux-gnu)
##[endgroup]
Doc path: /tmp/.tmp8GXlxm/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/error-index.html
Doc path: /tmp/.tmp8GXlxm/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/nomicon/index.html
Doc path: /tmp/.tmp8GXlxm/build/tmp-dry-run/i686-unknown-haiku/doc/nomicon/index.html
Doc path: /tmp/.tmp8GXlxm/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/reference/index.html
Doc path: /tmp/.tmp8GXlxm/build/tmp-dry-run/i686-unknown-haiku/doc/reference/index.html
Doc path: /tmp/.tmp8GXlxm/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/rustdoc/index.html
Doc path: /tmp/.tmp8GXlxm/build/tmp-dry-run/i686-unknown-haiku/doc/rustdoc/index.html
Doc path: /tmp/.tmp8GXlxm/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/rust-by-example/index.html
Doc path: /tmp/.tmp8GXlxm/build/tmp-dry-run/i686-unknown-haiku/doc/rust-by-example/index.html
Generating lint docs (aarch64-unknown-linux-gnu)
##[group]Building stage1 lint-docs (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Running stage2 lint-docs (stage1 -> stage2, aarch64-unknown-linux-gnu)
##[endgroup]
Doc path: /tmp/.tmp8GXlxm/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/rustc/index.html
Doc path: /tmp/.tmp8GXlxm/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/cargo/index.html
Doc path: /tmp/.tmp8GXlxm/build/tmp-dry-run/i686-unknown-haiku/doc/cargo/index.html
Doc path: /tmp/.tmp8GXlxm/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/clippy/index.html
Doc path: /tmp/.tmp8GXlxm/build/tmp-dry-run/i686-unknown-haiku/doc/clippy/index.html
Doc path: /tmp/.tmp8GXlxm/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/embedded-book/index.html
Doc path: /tmp/.tmp8GXlxm/build/tmp-dry-run/i686-unknown-haiku/doc/embedded-book/index.html
Doc path: /tmp/.tmp8GXlxm/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/edition-guide/index.html
Doc path: /tmp/.tmp8GXlxm/build/tmp-dry-run/i686-unknown-haiku/doc/edition-guide/index.html
Doc path: /tmp/.tmp8GXlxm/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/style-guide/index.html
Doc path: /tmp/.tmp8GXlxm/build/tmp-dry-run/i686-unknown-haiku/doc/style-guide/index.html
##[group]Documenting stage2 releases (stage1 -> stage2, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Documenting stage2 releases (stage1:aarch64-unknown-linux-gnu -> stage2:i686-unknown-haiku)
##[endgroup]
##[group]Building stage1 rust-installer (stage0 -> stage1, aarch64-unknown-linux-gnu)
---
##[group]Building stage1 generate-copyright (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]generate-copyright (continued)
##[endgroup]
Dist rustc-1.95.0-dev-aarch64-unknown-linux-gnu
Dist rust-std-1.95.0-dev-aarch64-unknown-linux-gnu
Dist rust-std-1.95.0-dev-i686-unknown-haiku
Dist rustc-dev-1.95.0-dev-aarch64-unknown-linux-gnu
Dist rust-src-1.95.0-dev
Dist rust-dev-1.95.0-dev-aarch64-unknown-linux-gnu
##[group]Vendoring sources to "/tmp/.tmp8GXlxm/build/tmp-dry-run/tmp/tarball/rustc/src/image"
##[endgroup]
Dist rustc-1.95.0-dev-src
##[group]Vendoring sources to "/tmp/.tmp8GXlxm/build/tmp-dry-run/tmp/tarball/rustc/src-gpl/image"
##[endgroup]
Dist rustc-1.95.0-dev-src-gpl
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Snapshot Summary ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Snapshot: dist_with_targets
Source: src/bootstrap/src/core/builder/tests.rs:1235
────────────────────────────────────────────────────────────────────────────────
Expression: ctx.config("dist").hosts(&[&host_target()]).targets(&[&host_target(),
TEST_TRIPLE_1]).render_steps()
────────────────────────────────────────────────────────────────────────────────
-old snapshot
+new results
────────────┬───────────────────────────────────────────────────────────────────
   49    49 │ [doc] rustc 1 <host> -> std 1 <host> crates=[]
   50    50 │ [dist] rustc 1 <host> -> json-docs 2 <host>
   51    51 │ [doc] rustc 1 <host> -> std 1 <target1> crates=[]
   52    52 │ [dist] rustc 1 <host> -> json-docs 2 <target1>
   53       │-[dist] mingw <host>
   54       │-[dist] mingw <target1>
   55    53 │ [build] rustdoc 2 <host>
   56    54 │ [build] rustc 0 <host> -> GenerateCopyright 1 <host>
   57    55 │ [dist] rustc <host>
   58    56 │ [dist] rustc 1 <host> -> std 1 <host>
────────────┴───────────────────────────────────────────────────────────────────
Stopped on the first failure. Run `cargo insta test` to run all snapshots.

thread 'core::builder::tests::snapshot::dist_with_targets' (13034) panicked at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:679:13:
snapshot assertion for 'dist_with_targets' failed in line 1235
stack backtrace:
   0: __rustc::rust_begin_unwind
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/std/src/panicking.rs:689:5
   1: core::panicking::panic_fmt
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/core/src/panicking.rs:80:14
   2: <insta::runtime::SnapshotAssertionContext>::finalize
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:679:13
   3: insta::runtime::assert_snapshot
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:848:13
   4: bootstrap::core::builder::tests::snapshot::dist_with_targets
             at ./src/core/builder/tests.rs:1235:9
   5: bootstrap::core::builder::tests::snapshot::dist_with_targets::{closure#0}
             at ./src/core/builder/tests.rs:1233:27
   6: <bootstrap::core::builder::tests::snapshot::dist_with_targets::{closure#0} as core::ops::function::FnOnce<()>>::call_once
---
##[endgroup]
##[endgroup]
##[group]Building stage1 rustbook (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
Doc path: /tmp/.tmpb0ftwQ/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/unstable-book/index.html
Generating unstable book md files (i686-unknown-haiku)
Doc path: /tmp/.tmpb0ftwQ/build/tmp-dry-run/i686-unknown-haiku/doc/unstable-book/index.html
##[endgroup]
##[group]Building LLVM for aarch64-unknown-linux-gnu
##[endgroup]
##[group]Documenting stage1 standalone (stage0 -> stage1, aarch64-unknown-linux-gnu) (continued)
##[endgroup]
##[group]Building stage1 compiler artifacts (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Documenting stage1 standalone (stage0 -> stage1, aarch64-unknown-linux-gnu) (continued)
Creating a sysroot for stage1 compiler (use `rustup toolchain link 'name' build/host/stage1`)
WARNING: compile::StartupObjects is not necessary in this build configuration and will be ignored: outside windows-gnu platforms, startup objects are handled by the platform C compiler
##[group]Building stage1 library artifacts (stage1 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Building stage1 library artifacts (stage1 -> stage1, aarch64-unknown-linux-gnu) (continued)
Doc path: /tmp/.tmpb0ftwQ/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/book/index.html
##[group]Documenting stage2 book redirect pages (stage1 -> stage2, aarch64-unknown-linux-gnu)
##[endgroup]
WARNING: compile::StartupObjects is not necessary in this build configuration and will be ignored: outside windows-gnu platforms, startup objects are handled by the platform C compiler
##[group]Building stage1 library artifacts (stage1:aarch64-unknown-linux-gnu -> stage1:i686-unknown-haiku)
##[endgroup]
Doc path: /tmp/.tmpb0ftwQ/build/tmp-dry-run/i686-unknown-haiku/doc/book/index.html
##[group]Documenting stage2 book redirect pages (stage1:aarch64-unknown-linux-gnu -> stage2:i686-unknown-haiku)
##[endgroup]
##[group]Documenting stage2 standalone (stage1 -> stage2, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Building stage1 rustdoc_tool_binary (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Documenting stage2 standalone (stage1 -> stage2, aarch64-unknown-linux-gnu) (continued)
Doc path: /tmp/.tmpb0ftwQ/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/index.html
##[endgroup]
##[group]Documenting stage2 standalone (stage1:aarch64-unknown-linux-gnu -> stage2:i686-unknown-haiku)
Doc path: /tmp/.tmpb0ftwQ/build/tmp-dry-run/i686-unknown-haiku/doc/index.html
##[endgroup]
##[group]Documenting stage1 library{alloc, compiler_builtins, core, panic_abort, panic_unwind, proc_macro, rustc-std-workspace-core, std, std_detect, sysroot, test, unwind} in HTML format (stage1 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
Doc path: /tmp/.tmpb0ftwQ/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/alloc/index.html
##[group]Documenting stage1 library{alloc, compiler_builtins, core, panic_abort, panic_unwind, proc_macro, rustc-std-workspace-core, std, std_detect, sysroot, test, unwind} in HTML format (stage1:aarch64-unknown-linux-gnu -> stage1:i686-unknown-haiku)
##[endgroup]
Doc path: /tmp/.tmpb0ftwQ/build/tmp-dry-run/i686-unknown-haiku/doc/alloc/index.html
##[group]Building stage2 compiler artifacts (stage1 -> stage2, aarch64-unknown-linux-gnu)
##[endgroup]
Creating a sysroot for stage2 compiler (use `rustup toolchain link 'name' build/host/stage2`)
Documenting error index (aarch64-unknown-linux-gnu)
##[endgroup]
---
Creating a sysroot for stage2 compiler (i686-unknown-haiku) (use `rustup toolchain link 'name' build/i686-unknown-haiku/stage2`)
Documenting error index (i686-unknown-haiku)
##[group]Building stage2 error_index_generator (stage1:aarch64-unknown-linux-gnu -> stage2:i686-unknown-haiku)
##[endgroup]
Doc path: /tmp/.tmpb0ftwQ/build/tmp-dry-run/i686-unknown-haiku/doc/error-index.html
Doc path: /tmp/.tmpb0ftwQ/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/nomicon/index.html
Doc path: /tmp/.tmpb0ftwQ/build/tmp-dry-run/i686-unknown-haiku/doc/nomicon/index.html
Doc path: /tmp/.tmpb0ftwQ/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/reference/index.html
Doc path: /tmp/.tmpb0ftwQ/build/tmp-dry-run/i686-unknown-haiku/doc/reference/index.html
Doc path: /tmp/.tmpb0ftwQ/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/rustdoc/index.html
Doc path: /tmp/.tmpb0ftwQ/build/tmp-dry-run/i686-unknown-haiku/doc/rustdoc/index.html
Doc path: /tmp/.tmpb0ftwQ/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/rust-by-example/index.html
Doc path: /tmp/.tmpb0ftwQ/build/tmp-dry-run/i686-unknown-haiku/doc/rust-by-example/index.html
Generating lint docs (aarch64-unknown-linux-gnu)
##[group]Building stage1 lint-docs (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Running stage2 lint-docs (stage1 -> stage2, aarch64-unknown-linux-gnu)
##[endgroup]
Doc path: /tmp/.tmpb0ftwQ/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/rustc/index.html
Generating lint docs (i686-unknown-haiku)
##[group]Running stage2 lint-docs (stage1:aarch64-unknown-linux-gnu -> stage2:i686-unknown-haiku)
##[endgroup]
Doc path: /tmp/.tmpb0ftwQ/build/tmp-dry-run/i686-unknown-haiku/doc/rustc/index.html
Doc path: /tmp/.tmpb0ftwQ/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/cargo/index.html
Doc path: /tmp/.tmpb0ftwQ/build/tmp-dry-run/i686-unknown-haiku/doc/cargo/index.html
Doc path: /tmp/.tmpb0ftwQ/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/clippy/index.html
Doc path: /tmp/.tmpb0ftwQ/build/tmp-dry-run/i686-unknown-haiku/doc/clippy/index.html
Doc path: /tmp/.tmpb0ftwQ/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/embedded-book/index.html
Doc path: /tmp/.tmpb0ftwQ/build/tmp-dry-run/i686-unknown-haiku/doc/embedded-book/index.html
Doc path: /tmp/.tmpb0ftwQ/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/edition-guide/index.html
Doc path: /tmp/.tmpb0ftwQ/build/tmp-dry-run/i686-unknown-haiku/doc/edition-guide/index.html
Doc path: /tmp/.tmpb0ftwQ/build/tmp-dry-run/aarch64-unknown-linux-gnu/doc/style-guide/index.html
Doc path: /tmp/.tmpb0ftwQ/build/tmp-dry-run/i686-unknown-haiku/doc/style-guide/index.html
##[group]Documenting stage2 releases (stage1 -> stage2, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Documenting stage2 releases (stage1:aarch64-unknown-linux-gnu -> stage2:i686-unknown-haiku)
##[endgroup]
##[group]Building stage1 rust-installer (stage0 -> stage1, aarch64-unknown-linux-gnu)
---
##[endgroup]
Dist rustc-1.95.0-dev-aarch64-unknown-linux-gnu
##[group]Building stage2 rustdoc_tool_binary (stage1:aarch64-unknown-linux-gnu -> stage2:i686-unknown-haiku)
##[endgroup]
Dist rustc-1.95.0-dev-i686-unknown-haiku
Dist rust-std-1.95.0-dev-aarch64-unknown-linux-gnu
Dist rust-std-1.95.0-dev-i686-unknown-haiku
Dist rustc-dev-1.95.0-dev-aarch64-unknown-linux-gnu
Dist rustc-dev-1.95.0-dev-i686-unknown-haiku
Dist rust-src-1.95.0-dev
Dist rust-dev-1.95.0-dev-aarch64-unknown-linux-gnu
Dist rust-dev-1.95.0-dev-i686-unknown-haiku
##[group]Vendoring sources to "/tmp/.tmpb0ftwQ/build/tmp-dry-run/tmp/tarball/rustc/src/image"
##[endgroup]
Dist rustc-1.95.0-dev-src
##[group]Vendoring sources to "/tmp/.tmpb0ftwQ/build/tmp-dry-run/tmp/tarball/rustc/src-gpl/image"
##[endgroup]
Dist rustc-1.95.0-dev-src-gpl
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Snapshot Summary ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Snapshot: dist_with_targets_and_hosts
Source: src/bootstrap/src/core/builder/tests.rs:1374
────────────────────────────────────────────────────────────────────────────────
Expression: ctx.config("dist").hosts(&[&host_target(),
TEST_TRIPLE_1]).targets(&[&host_target(), TEST_TRIPLE_1]).render_steps()
────────────────────────────────────────────────────────────────────────────────
-old snapshot
+new results
────────────┬───────────────────────────────────────────────────────────────────
   54    54 │ [doc] rustc 1 <host> -> std 1 <host> crates=[]
   55    55 │ [dist] rustc 1 <host> -> json-docs 2 <host>
   56    56 │ [doc] rustc 1 <host> -> std 1 <target1> crates=[]
   57    57 │ [dist] rustc 1 <host> -> json-docs 2 <target1>
   58       │-[dist] mingw <host>
   59       │-[dist] mingw <target1>
   60    58 │ [build] rustdoc 2 <host>
   61    59 │ [build] rustc 0 <host> -> GenerateCopyright 1 <host>
   62    60 │ [dist] rustc <host>
   63    61 │ [build] rustdoc 2 <target1>
────────────┴───────────────────────────────────────────────────────────────────
Stopped on the first failure. Run `cargo insta test` to run all snapshots.

thread 'core::builder::tests::snapshot::dist_with_targets_and_hosts' (13088) panicked at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:679:13:
snapshot assertion for 'dist_with_targets_and_hosts' failed in line 1374
stack backtrace:
   0: __rustc::rust_begin_unwind
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/std/src/panicking.rs:689:5
   1: core::panicking::panic_fmt
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/core/src/panicking.rs:80:14
   2: <insta::runtime::SnapshotAssertionContext>::finalize
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:679:13
   3: insta::runtime::assert_snapshot
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:848:13
   4: bootstrap::core::builder::tests::snapshot::dist_with_targets_and_hosts
             at ./src/core/builder/tests.rs:1374:9
   5: bootstrap::core::builder::tests::snapshot::dist_with_targets_and_hosts::{closure#0}
             at ./src/core/builder/tests.rs:1372:37
   6: <bootstrap::core::builder::tests::snapshot::dist_with_targets_and_hosts::{closure#0} as core::ops::function::FnOnce<()>>::call_once
---
##[endgroup]
##[group]Building stage1 compiler artifacts (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
Creating a sysroot for stage1 compiler (use `rustup toolchain link 'name' build/host/stage1`)
WARNING: compile::StartupObjects is not necessary in this build configuration and will be ignored: outside windows-gnu platforms, startup objects are handled by the platform C compiler
##[group]Building stage1 library artifacts (stage1 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Building stage1 compiletest (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
WARNING: test::RemoteCopyLibs is not necessary in this build configuration and will be ignored: aarch64-unknown-linux-gnu doesn't use remote testing
---
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Snapshot Summary ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Snapshot: all_stage_1
Source: src/bootstrap/src/core/builder/tests.rs:2033
────────────────────────────────────────────────────────────────────────────────
Expression: prepare_test_config(&ctx).render_steps()
────────────────────────────────────────────────────────────────────────────────
-old snapshot
+new results
────────────┬───────────────────────────────────────────────────────────────────
   61    61 │ [test] compiletest-rustdoc-ui 1 <host>
   62    62 │ [build] rustc 0 <host> -> JsonDocCk 1 <host>
   63    63 │ [build] rustc 0 <host> -> JsonDocLint 1 <host>
   64    64 │ [test] compiletest-rustdoc-json 1 <host>
   65       │-[doc] rustc 0 <host> -> rustc 1 <host>
   66       │-[build] rustc 0 <host> -> HtmlChecker 1 <host>
   67       │-[test] html-check <host>
   68    65 │ [build] rustc 0 <host> -> RunMakeSupport 1 <host>
   69    66 │ [test] compiletest-run-make 1 <host>
   70    67 │ [build] rustc 0 <host> -> cargo 1 <host>
   71    68 │ [test] compiletest-run-make-cargo 1 <host>
────────────┴───────────────────────────────────────────────────────────────────
Stopped on the first failure. Run `cargo insta test` to run all snapshots.

thread 'core::builder::tests::snapshot::test_all_stage_1' (13948) panicked at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:679:13:
snapshot assertion for 'all_stage_1' failed in line 2033
stack backtrace:
   0: __rustc::rust_begin_unwind
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/std/src/panicking.rs:689:5
   1: core::panicking::panic_fmt
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/core/src/panicking.rs:80:14
   2: <insta::runtime::SnapshotAssertionContext>::finalize
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:679:13
   3: insta::runtime::assert_snapshot
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:848:13
   4: bootstrap::core::builder::tests::snapshot::test_all_stage_1
             at ./src/core/builder/tests.rs:2033:9
   5: bootstrap::core::builder::tests::snapshot::test_all_stage_1::{closure#0}
             at ./src/core/builder/tests.rs:2031:26
   6: <bootstrap::core::builder::tests::snapshot::test_all_stage_1::{closure#0} as core::ops::function::FnOnce<()>>::call_once
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/core/src/ops/function.rs:250:5
   7: core::ops::function::FnOnce::call_once
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/core/src/ops/function.rs:250:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- core::builder::tests::snapshot::test_all_stage_1 stdout end ----
---- core::builder::tests::snapshot::test_all_stage_2 stdout ----
Running test in /tmp/.tmpJZT4yL
##[group]Building stage1 tidy (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
fmt check
tidy check
x.py completions check
---
##[group]Building stage1 compiler artifacts (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Building stage1 compiler artifacts (stage0 -> stage1, aarch64-unknown-linux-gnu) (continued)
Creating a sysroot for stage1 compiler (use `rustup toolchain link 'name' build/host/stage1`)
WARNING: compile::StartupObjects is not necessary in this build configuration and will be ignored: outside windows-gnu platforms, startup objects are handled by the platform C compiler
##[endgroup]
##[group]Building stage1 library artifacts (stage1 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Building stage1 library artifacts (stage1 -> stage1, aarch64-unknown-linux-gnu) (continued)
##[endgroup]
##[group]Building stage2 compiler artifacts (stage1 -> stage2, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Building stage2 compiler artifacts (stage1 -> stage2, aarch64-unknown-linux-gnu) (continued)
Creating a sysroot for stage2 compiler (use `rustup toolchain link 'name' build/host/stage2`)
WARNING: compile::StartupObjects is not necessary in this build configuration and will be ignored: outside windows-gnu platforms, startup objects are handled by the platform C compiler
Uplifting library (stage1 -> stage2)
##[endgroup]
##[group]Building stage1 compiletest (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Testing stage1 book unstable-book (aarch64-unknown-linux-gnu) (continued)
---
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Snapshot Summary ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Snapshot: all_stage_2
Source: src/bootstrap/src/core/builder/tests.rs:2210
────────────────────────────────────────────────────────────────────────────────
Expression: prepare_test_config(&ctx).stage(2).render_steps()
────────────────────────────────────────────────────────────────────────────────
-old snapshot
+new results
────────────┬───────────────────────────────────────────────────────────────────
   58    58 │ [build] rustc 0 <host> -> Linkchecker 1 <host>
   59    59 │ [test] link-check <host>
   60    60 │ [test] tier-check <host>
   61    61 │ [test] rustc 1 <host> -> rust-analyzer 2 <host>
   62       │-[doc] rustc (book) <host>
   63       │-[test] rustc 1 <host> -> lint-docs 2 <host>
   64    62 │ [build] rustc 0 <host> -> RustdocTheme 1 <host>
   65    63 │ [test] rustdoc-theme 2 <host>
   66    64 │ [test] compiletest-rustdoc-ui 2 <host>
   67    65 │ [build] rustc 0 <host> -> JsonDocCk 1 <host>
   68    66 │ [build] rustc 0 <host> -> JsonDocLint 1 <host>
   69    67 │ [test] compiletest-rustdoc-json 2 <host>
   70       │-[doc] rustc 1 <host> -> rustc 2 <host>
   71       │-[build] rustc 0 <host> -> HtmlChecker 1 <host>
   72       │-[test] html-check <host>
   73    68 │ [build] rustc 0 <host> -> RunMakeSupport 1 <host>
   74    69 │ [test] compiletest-run-make 2 <host>
   75    70 │ [build] rustc 1 <host> -> cargo 2 <host>
   76    71 │ [test] compiletest-run-make-cargo 2 <host>
────────────┴───────────────────────────────────────────────────────────────────
Stopped on the first failure. Run `cargo insta test` to run all snapshots.

thread 'core::builder::tests::snapshot::test_all_stage_2' (13990) panicked at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:679:13:
snapshot assertion for 'all_stage_2' failed in line 2210
stack backtrace:
   0: __rustc::rust_begin_unwind
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/std/src/panicking.rs:689:5
   1: core::panicking::panic_fmt
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/core/src/panicking.rs:80:14
   2: <insta::runtime::SnapshotAssertionContext>::finalize
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:679:13
   3: insta::runtime::assert_snapshot
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:848:13
   4: bootstrap::core::builder::tests::snapshot::test_all_stage_2
             at ./src/core/builder/tests.rs:2210:9
   5: bootstrap::core::builder::tests::snapshot::test_all_stage_2::{closure#0}
             at ./src/core/builder/tests.rs:2208:26
   6: <bootstrap::core::builder::tests::snapshot::test_all_stage_2::{closure#0} as core::ops::function::FnOnce<()>>::call_once
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/core/src/ops/function.rs:250:5
   7: core::ops::function::FnOnce::call_once
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/core/src/ops/function.rs:250:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- core::builder::tests::snapshot::test_all_stage_2 stdout end ----
---- core::builder::tests::snapshot::test_compiler_stage_1 stdout ----
Running test in /tmp/.tmp6esd1J
WARNING: test::CodegenCranelift is not necessary in this build configuration and will be ignored: cranelift not in rust.codegen-backends
WARNING: test::CodegenGCC is not necessary in this build configuration and will be ignored: target not supported by gcc
##[group]Building LLVM for aarch64-unknown-linux-gnu
##[endgroup]
##[group]Testing stage1 {rustc-main, rustc_abi, rustc_arena, rustc_ast, rustc_ast_ir, rustc_ast_lowering, rustc_ast_passes, rustc_ast_pretty, rustc_attr_parsing, rustc_baked_icu_data, rustc_borrowck, rustc_builtin_macros, rustc_codegen_llvm, rustc_codegen_ssa, rustc_const_eval, rustc_data_structures, rustc_driver, rustc_driver_impl, rustc_error_codes, rustc_error_messages, rustc_errors, rustc_expand, rustc_feature, rustc_fluent_macro, rustc_fs_util, rustc_graphviz, rustc_hashes, rustc_hir, rustc_hir_analysis, rustc_hir_id, rustc_hir_pretty, rustc_hir_typeck, rustc_incremental, rustc_index, rustc_index_macros, rustc_infer, rustc_interface, rustc_lexer, rustc_lint, rustc_lint_defs, rustc_llvm, rustc_log, rustc_macros, rustc_metadata, rustc_middle, rustc_mir_build, rustc_mir_dataflow, rustc_mir_transform, rustc_monomorphize, rustc_next_trait_solver, rustc_parse, rustc_parse_format, rustc_passes, rustc_pattern_analysis, rustc_privacy, rustc_proc_macro, rustc_public, rustc_public_bridge, rustc_query_impl, rustc_query_system, rustc_resolve, rustc_sanitizers, rustc_serialize, rustc_session, rustc_span, rustc_symbol_mangling, rustc_target, rustc_thread_pool, rustc_trait_selection, rustc_traits, rustc_transmute, rustc_ty_utils, rustc_type_ir, rustc_type_ir_macros, rustc_windows_rc} (aarch64-unknown-linux-gnu)
##[endgroup]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Snapshot Summary ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Snapshot: compiler_stage_1
Source: src/bootstrap/src/core/builder/tests.rs:2297
────────────────────────────────────────────────────────────────────────────────
Expression: ctx.config("test").path("compiler").stage(1).render_steps()
────────────────────────────────────────────────────────────────────────────────
-old snapshot
+new results
────────────┬───────────────────────────────────────────────────────────────────
    0       │-[build] llvm <host>
    1       │-[build] rustc 0 <host> -> rustc 1 <host>
    2     0 │ [build] rustc 0 <host> -> std 0 <host>
    3     1 │ [build] rustdoc 0 <host>
          2 │+[build] llvm <host>
    4     3 │ [test] rustc 0 <host> -> CrateLibrustc 1 <host>
────────────┴───────────────────────────────────────────────────────────────────
Stopped on the first failure. Run `cargo insta test` to run all snapshots.

thread 'core::builder::tests::snapshot::test_compiler_stage_1' (14208) panicked at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:679:13:
snapshot assertion for 'compiler_stage_1' failed in line 2297
stack backtrace:
   0: __rustc::rust_begin_unwind
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/std/src/panicking.rs:689:5
   1: core::panicking::panic_fmt
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/core/src/panicking.rs:80:14
   2: <insta::runtime::SnapshotAssertionContext>::finalize
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:679:13
   3: insta::runtime::assert_snapshot
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:848:13
   4: bootstrap::core::builder::tests::snapshot::test_compiler_stage_1
             at ./src/core/builder/tests.rs:2297:9
   5: bootstrap::core::builder::tests::snapshot::test_compiler_stage_1::{closure#0}
             at ./src/core/builder/tests.rs:2295:31
   6: <bootstrap::core::builder::tests::snapshot::test_compiler_stage_1::{closure#0} as core::ops::function::FnOnce<()>>::call_once
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/core/src/ops/function.rs:250:5
   7: core::ops::function::FnOnce::call_once
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/core/src/ops/function.rs:250:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- core::builder::tests::snapshot::test_compiler_stage_1 stdout end ----
---- core::builder::tests::snapshot::test_compiler_stage_2 stdout ----
Running test in /tmp/.tmpFMgK4M
WARNING: test::CodegenCranelift is not necessary in this build configuration and will be ignored: cranelift not in rust.codegen-backends
WARNING: test::CodegenGCC is not necessary in this build configuration and will be ignored: target not supported by gcc
##[group]Building LLVM for aarch64-unknown-linux-gnu
##[endgroup]
##[group]Building stage1 compiler artifacts (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
Creating a sysroot for stage1 compiler (use `rustup toolchain link 'name' build/host/stage1`)
WARNING: compile::StartupObjects is not necessary in this build configuration and will be ignored: outside windows-gnu platforms, startup objects are handled by the platform C compiler
##[group]Building stage1 library artifacts (stage1 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Building stage1 library artifacts (stage1 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Building stage1 rustdoc_tool_binary (stage0 -> stage1, aarch64-unknown-linux-gnu)
##[endgroup]
##[group]Testing stage2 {rustc-main, rustc_abi, rustc_arena, rustc_ast, rustc_ast_ir, rustc_ast_lowering, rustc_ast_passes, rustc_ast_pretty, rustc_attr_parsing, rustc_baked_icu_data, rustc_borrowck, rustc_builtin_macros, rustc_codegen_llvm, rustc_codegen_ssa, rustc_const_eval, rustc_data_structures, rustc_driver, rustc_driver_impl, rustc_error_codes, rustc_error_messages, rustc_errors, rustc_expand, rustc_feature, rustc_fluent_macro, rustc_fs_util, rustc_graphviz, rustc_hashes, rustc_hir, rustc_hir_analysis, rustc_hir_id, rustc_hir_pretty, rustc_hir_typeck, rustc_incremental, rustc_index, rustc_index_macros, rustc_infer, rustc_interface, rustc_lexer, rustc_lint, rustc_lint_defs, rustc_llvm, rustc_log, rustc_macros, rustc_metadata, rustc_middle, rustc_mir_build, rustc_mir_dataflow, rustc_mir_transform, rustc_monomorphize, rustc_next_trait_solver, rustc_parse, rustc_parse_format, rustc_passes, rustc_pattern_analysis, rustc_privacy, rustc_proc_macro, rustc_public, rustc_public_bridge, rustc_query_impl, rustc_query_system, rustc_resolve, rustc_sanitizers, rustc_serialize, rustc_session, rustc_span, rustc_symbol_mangling, rustc_target, rustc_thread_pool, rustc_trait_selection, rustc_traits, rustc_transmute, rustc_ty_utils, rustc_type_ir, rustc_type_ir_macros, rustc_windows_rc} (aarch64-unknown-linux-gnu)
##[endgroup]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Snapshot Summary ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Snapshot: compiler_stage_2
Source: src/bootstrap/src/core/builder/tests.rs:2313
────────────────────────────────────────────────────────────────────────────────
Expression: ctx.config("test").path("compiler").stage(2).render_steps()
────────────────────────────────────────────────────────────────────────────────
-old snapshot
+new results
────────────┬───────────────────────────────────────────────────────────────────
    0     0 │ [build] llvm <host>
    1     1 │ [build] rustc 0 <host> -> rustc 1 <host>
    2     2 │ [build] rustc 1 <host> -> std 1 <host>
    3       │-[build] rustc 1 <host> -> rustc 2 <host>
    4     3 │ [build] rustc 1 <host> -> std 1 <host>
    5     4 │ [build] rustdoc 1 <host>
    6     5 │ [test] rustc 1 <host> -> CrateLibrustc 2 <host>
────────────┴───────────────────────────────────────────────────────────────────
Stopped on the first failure. Run `cargo insta test` to run all snapshots.

thread 'core::builder::tests::snapshot::test_compiler_stage_2' (14233) panicked at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:679:13:
snapshot assertion for 'compiler_stage_2' failed in line 2313
stack backtrace:
   0: __rustc::rust_begin_unwind
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/std/src/panicking.rs:689:5
   1: core::panicking::panic_fmt
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/core/src/panicking.rs:80:14
   2: <insta::runtime::SnapshotAssertionContext>::finalize
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:679:13
   3: insta::runtime::assert_snapshot
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.1/src/runtime.rs:848:13
   4: bootstrap::core::builder::tests::snapshot::test_compiler_stage_2
             at ./src/core/builder/tests.rs:2313:9
   5: bootstrap::core::builder::tests::snapshot::test_compiler_stage_2::{closure#0}
             at ./src/core/builder/tests.rs:2311:31
   6: <bootstrap::core::builder::tests::snapshot::test_compiler_stage_2::{closure#0} as core::ops::function::FnOnce<()>>::call_once
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/core/src/ops/function.rs:250:5
   7: core::ops::function::FnOnce::call_once
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/core/src/ops/function.rs:250:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- core::builder::tests::snapshot::test_compiler_stage_2 stdout end ----

failures:
    core::builder::selectors::tests::x_test
    core::builder::selectors::tests::x_test_skip_coverage
    core::builder::selectors::tests::x_test_skip_tests_etc

@jyn514
Copy link
Member Author

jyn514 commented Feb 6, 2026

you could set that as base branch using github ui (and it will automatically shift to main branch if that pr gets merged)

this doesn't seem to work across forks unfortunately :/

@Kobzol
Copy link
Member

Kobzol commented Feb 6, 2026

This seems pretty interesting! I mostly examined the second commit to see how it would affect the existing steps. Some initial comments:

  • There can be some duplication (such as using std_crates_for_run_make in doc::Std), when we need to figure out if some step is supported, and then we also need to actually create it in make_run; that logic can diverge. Could we somehow combine is_supported and make_run? A related question below.
  • We would now have make_run, run, is_supported and should_run, that's pretty crazy (already the previous system was very complicated). Since this PR would be a relatively big refactoring of various steps, could we outright try to figure a way how to combine these methods somehow? I guess we need to have should_run to have some declarative way of describing which paths are mapped to which steps, as opposed to just running make_run on each step and seeing if it generates any ensures or not. And make_run can in theory ensure multiple instances of the step, so it probably cannot be combined wit run. But maybe run and is_supported could be combined? And from run we could either return the real result or information about being skipped/warn/fatel.
  • Not a big fan of the dummy outputs that have to be sometimes created for the skip situations. I suppose that it is required because the is_supported method combines both make_run and ensure invocations (and the latter need some output), but I'm not sure if that's ideal. In theory we could make all steps return Option, but that would require us to add unwraps everywhere (or some "smart" unwraps that would print a helpful fatal error message when the step could not be executed). Also it seems to me that there's some complexity in having to think about how is_supported is supposed to be used in make_run vs ensure scenarios.
  • Big fan of the unified way to mark steps as skip/warn/fatal. The current "random condition + eprintln + exit(1)" solution used in various steps is very adhoc, I'd like to unify that somehow.
  • The Default bound on the skip method seems like a big footgun. "Skip" sounds like the step won't be executed at all, but if the step is ensured and it is skipped, the ensured step will return some arbitrary empty value for its output type, which can be quite confusing and lead to some weird problems down the line, like working with an empty PathBuf.
  • Do I understand it correctly that make_run is only called when is_supported returns a non-error value? And then, make_run (usually) calls ensure on itself, which will run another is_supported check?
  • How should this interact with IS_DEFAULT?

@jyn514
Copy link
Member Author

jyn514 commented Feb 6, 2026

Some answers in no particular order:

I think combining this with is_default would be quite easy actually. Instead of fn is_supported() -> Result<(), Unsupported>, it would now return Result<Default | NotDefault, Unsupported>. That would also get us back the "is_really_default" distinction from before but in a cleaner way, which maybe is useful for unit tests.

Perhaps the Skip variant should only be allowed for Step<Output = ()>, or maybe also for Vec/Option (maybe Output: FromIterator is the bound we want here)? I think that would handle almost all cases ... not all of them though.

Do I understand it correctly that make_run is only called when is_supported returns a non-error value? And then, make_run (usually) calls ensure on itself, which will run another is_supported check?

oh, hm ... yes, that is what's happening. I agree that it would be nice to combine these three (is_supported, make_run, run) somehow. That said I don't think running this twice is a big deal, the only thing that's expensive is running processes and there's already an easy way to cache that on Builder.


Originally I had tried to define Unsupported as follows:

enum SupportStatus<Output = (), Input = ()> {
  Supported(Input),
  Warn(Input),
  Skip(Output),
  Fatal,
}

That allows the logic to be shared between is_supported and make_run, by passing the Input to make_run through supported_config.extra.

The problem here is that it plays hell with StepDescription. I didn't realize until I tried to change it that StepDescription is a "type-erased" version of a Step, it exists because Step isn't dyn-safe. The Input here can't be type-erased so it can't go in a StepDescription.


Now, I've thought about combining is_supported and make_run, but the problem is that some of the existing checks are happening in fn run, not in make_run; in other words, they need to be run on each ensure(), because ensure doesn't go through make_run--and that's necessary, because sometimes we'll ensure(Std {}) for some Std that's different than what would have come out of make_run.

But on the other hand, if we immediately call make_run before running the checks, which would let us put them all in run, we might end up ensure()-ing a bunch of unnecessary work just to fail as soon as we call run().

I'm not sure what a good approach here is. I'll think about it for a while, maybe someone else will come up with a good idea in the meantime.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-testsuite Area: The testsuite used to check the correctness of rustc S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants