From 6ba72c0c7e392c4ee847abee407a858346b81498 Mon Sep 17 00:00:00 2001 From: onur-ozkan <work@onurozkan.dev> Date: Tue, 27 Aug 2024 10:47:58 +0300 Subject: [PATCH 1/2] skip stage 0 target check if `BOOTSTRAP_SKIP_TARGET_SANITY` is set Signed-off-by: onur-ozkan <work@onurozkan.dev> --- src/bootstrap/src/core/sanity.rs | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/bootstrap/src/core/sanity.rs b/src/bootstrap/src/core/sanity.rs index c42d4c56c381..60ec57d0d443 100644 --- a/src/bootstrap/src/core/sanity.rs +++ b/src/bootstrap/src/core/sanity.rs @@ -8,9 +8,7 @@ //! In theory if we get past this phase it's a bug if a build fails, but in //! practice that's likely not true! -use std::collections::HashMap; -#[cfg(not(feature = "bootstrap-self-test"))] -use std::collections::HashSet; +use std::collections::{HashMap, HashSet}; use std::ffi::{OsStr, OsString}; use std::path::PathBuf; use std::{env, fs}; @@ -34,7 +32,6 @@ pub struct Finder { // it might not yet be included in stage0. In such cases, we handle the targets missing from stage0 in this list. // // Targets can be removed from this list once they are present in the stage0 compiler (usually by updating the beta compiler of the bootstrap). -#[cfg(not(feature = "bootstrap-self-test"))] const STAGE0_MISSING_TARGETS: &[&str] = &[ // just a dummy comment so the list doesn't get onelined ]; @@ -205,7 +202,6 @@ than building it. .map(|p| cmd_finder.must_have(p)) .or_else(|| cmd_finder.maybe_have("reuse")); - #[cfg(not(feature = "bootstrap-self-test"))] let stage0_supported_target_list: HashSet<String> = crate::utils::helpers::output( command(&build.config.initial_rustc).args(["--print", "target-list"]).as_command_mut(), ) @@ -234,8 +230,7 @@ than building it. } // Ignore fake targets that are only used for unit tests in bootstrap. - #[cfg(not(feature = "bootstrap-self-test"))] - { + if cfg!(not(feature = "bootstrap-self-test")) && !skip_target_sanity { let mut has_target = false; let target_str = target.to_string(); From 1a743710aa80b73af7023e3975097c59a47d9d01 Mon Sep 17 00:00:00 2001 From: onur-ozkan <work@onurozkan.dev> Date: Tue, 27 Aug 2024 12:19:05 +0300 Subject: [PATCH 2/2] set `BOOTSTRAP_SKIP_TARGET_SANITY` in opt-dist before running tests opt-dist overrides the stage 0 compiler with previously compiled compilers, which can cause confusion in bootstrap's target sanity checks. It is best to skip that check. Signed-off-by: onur-ozkan <work@onurozkan.dev> --- src/tools/opt-dist/src/tests.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/tools/opt-dist/src/tests.rs b/src/tools/opt-dist/src/tests.rs index 30c9648bc08e..9dbba7a05001 100644 --- a/src/tools/opt-dist/src/tests.rs +++ b/src/tools/opt-dist/src/tests.rs @@ -102,7 +102,13 @@ llvm-config = "{llvm_config}" for test_path in env.skipped_tests() { args.extend(["--skip", test_path]); } - cmd(&args).env("COMPILETEST_FORCE_STAGE0", "1").run().context("Cannot execute tests") + cmd(&args) + .env("COMPILETEST_FORCE_STAGE0", "1") + // Above we override the stage 0 compiler with previously compiled compiler, + // which can cause confusion in bootstrap's target sanity checks. + .env("BOOTSTRAP_SKIP_TARGET_SANITY", "1") + .run() + .context("Cannot execute tests") } /// Tries to find the version of the dist artifacts (either nightly, beta, or 1.XY.Z).