Skip to content

Commit f39101a

Browse files
Rollup merge of rust-lang#130383 - onur-ozkan:ignore-llvm-changes-on-ci-llvm-true, r=Mark-Simulacrum
check if it's rust-lang/rust CI job in `llvm::is_ci_llvm_modified` Changes `llvm::is_ci_llvm_modified` to only work on rust-lang/rust managed CI.
2 parents 9903b25 + 5840d87 commit f39101a

File tree

4 files changed

+41
-13
lines changed

4 files changed

+41
-13
lines changed

src/bootstrap/src/core/build_steps/llvm.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ pub(crate) fn is_ci_llvm_available(config: &Config, asserts: bool) -> bool {
242242

243243
/// Returns true if we're running in CI with modified LLVM (and thus can't download it)
244244
pub(crate) fn is_ci_llvm_modified(config: &Config) -> bool {
245-
CiEnv::is_ci() && config.rust_info.is_managed_git_subrepository() && {
245+
CiEnv::is_rust_lang_managed_ci_job() && config.rust_info.is_managed_git_subrepository() && {
246246
// We assume we have access to git, so it's okay to unconditionally pass
247247
// `true` here.
248248
let llvm_sha = detect_llvm_sha(config, true);

src/bootstrap/src/core/config/config.rs

+22
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,15 @@ pub struct Config {
343343
pub out: PathBuf,
344344
pub rust_info: channel::GitInfo,
345345

346+
pub cargo_info: channel::GitInfo,
347+
pub rust_analyzer_info: channel::GitInfo,
348+
pub clippy_info: channel::GitInfo,
349+
pub miri_info: channel::GitInfo,
350+
pub rustfmt_info: channel::GitInfo,
351+
pub enzyme_info: channel::GitInfo,
352+
pub in_tree_llvm_info: channel::GitInfo,
353+
pub in_tree_gcc_info: channel::GitInfo,
354+
346355
// These are either the stage0 downloaded binaries or the locally installed ones.
347356
pub initial_cargo: PathBuf,
348357
pub initial_rustc: PathBuf,
@@ -1796,6 +1805,19 @@ impl Config {
17961805
config.omit_git_hash = omit_git_hash.unwrap_or(default);
17971806
config.rust_info = GitInfo::new(config.omit_git_hash, &config.src);
17981807

1808+
config.cargo_info = GitInfo::new(config.omit_git_hash, &config.src.join("src/tools/cargo"));
1809+
config.rust_analyzer_info =
1810+
GitInfo::new(config.omit_git_hash, &config.src.join("src/tools/rust-analyzer"));
1811+
config.clippy_info =
1812+
GitInfo::new(config.omit_git_hash, &config.src.join("src/tools/clippy"));
1813+
config.miri_info = GitInfo::new(config.omit_git_hash, &config.src.join("src/tools/miri"));
1814+
config.rustfmt_info =
1815+
GitInfo::new(config.omit_git_hash, &config.src.join("src/tools/rustfmt"));
1816+
config.enzyme_info =
1817+
GitInfo::new(config.omit_git_hash, &config.src.join("src/tools/enzyme"));
1818+
config.in_tree_llvm_info = GitInfo::new(false, &config.src.join("src/llvm-project"));
1819+
config.in_tree_gcc_info = GitInfo::new(false, &config.src.join("src/gcc"));
1820+
17991821
// We need to override `rust.channel` if it's manually specified when using the CI rustc.
18001822
// This is because if the compiler uses a different channel than the one specified in config.toml,
18011823
// tests may fail due to using a different channel than the one used by the compiler during tests.

src/bootstrap/src/lib.rs

+9-12
Original file line numberDiff line numberDiff line change
@@ -305,18 +305,15 @@ impl Build {
305305
#[cfg(not(unix))]
306306
let is_sudo = false;
307307

308-
let omit_git_hash = config.omit_git_hash;
309-
let rust_info = GitInfo::new(omit_git_hash, &src);
310-
let cargo_info = GitInfo::new(omit_git_hash, &src.join("src/tools/cargo"));
311-
let rust_analyzer_info = GitInfo::new(omit_git_hash, &src.join("src/tools/rust-analyzer"));
312-
let clippy_info = GitInfo::new(omit_git_hash, &src.join("src/tools/clippy"));
313-
let miri_info = GitInfo::new(omit_git_hash, &src.join("src/tools/miri"));
314-
let rustfmt_info = GitInfo::new(omit_git_hash, &src.join("src/tools/rustfmt"));
315-
let enzyme_info = GitInfo::new(omit_git_hash, &src.join("src/tools/enzyme"));
316-
317-
// we always try to use git for LLVM builds
318-
let in_tree_llvm_info = GitInfo::new(false, &src.join("src/llvm-project"));
319-
let in_tree_gcc_info = GitInfo::new(false, &src.join("src/gcc"));
308+
let rust_info = config.rust_info.clone();
309+
let cargo_info = config.cargo_info.clone();
310+
let rust_analyzer_info = config.rust_analyzer_info.clone();
311+
let clippy_info = config.clippy_info.clone();
312+
let miri_info = config.miri_info.clone();
313+
let rustfmt_info = config.rustfmt_info.clone();
314+
let enzyme_info = config.enzyme_info.clone();
315+
let in_tree_llvm_info = config.in_tree_llvm_info.clone();
316+
let in_tree_gcc_info = config.in_tree_gcc_info.clone();
320317

321318
let initial_target_libdir_str = if config.dry_run() {
322319
"/dummy/lib/path/to/lib/".to_string()

src/tools/build_helper/src/ci.rs

+9
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,15 @@ impl CiEnv {
1919
pub fn is_ci() -> bool {
2020
Self::current() != CiEnv::None
2121
}
22+
23+
/// Checks if running in rust-lang/rust managed CI job.
24+
pub fn is_rust_lang_managed_ci_job() -> bool {
25+
Self::is_ci()
26+
// If both are present, we can assume it's an upstream CI job
27+
// as they are always set unconditionally.
28+
&& std::env::var_os("CI_JOB_NAME").is_some()
29+
&& std::env::var_os("TOOLSTATE_REPO").is_some()
30+
}
2231
}
2332

2433
pub mod gha {

0 commit comments

Comments
 (0)