Skip to content

Commit

Permalink
Rollup merge of #126572 - onur-ozkan:channel-problem, r=clubby789
Browse files Browse the repository at this point in the history
override user defined channel when using precompiled rustc

We need to override `rust.channel` if it's manually specified when using the CI rustc. This is because if the compiler uses a different channel than the one specified in config.toml, tests may fail due to using a different channel than the one used by the compiler during tests.

For more context, see #122709 (comment).
fmease authored Jun 19, 2024
2 parents 035285b + 5ae2446 commit cbf9d57
Showing 2 changed files with 23 additions and 18 deletions.
23 changes: 6 additions & 17 deletions src/bootstrap/src/core/builder.rs
Original file line number Diff line number Diff line change
@@ -1031,23 +1031,12 @@ impl<'a> Builder<'a> {
}

pub fn doc_rust_lang_org_channel(&self) -> String {
// When using precompiled compiler from CI, we need to use CI rustc's channel and
// ignore `rust.channel` from the configuration. Otherwise most of the rustdoc tests
// will fail due to incompatible `DOC_RUST_LANG_ORG_CHANNEL`.
let channel = if let Some(commit) = self.config.download_rustc_commit() {
self.config
.read_file_by_commit(&PathBuf::from("src/ci/channel"), commit)
.trim()
.to_owned()
} else {
match &*self.config.channel {
"stable" => &self.version,
"beta" => "beta",
"nightly" | "dev" => "nightly",
// custom build of rustdoc maybe? link to the latest stable docs just in case
_ => "stable",
}
.to_owned()
let channel = match &*self.config.channel {
"stable" => &self.version,
"beta" => "beta",
"nightly" | "dev" => "nightly",
// custom build of rustdoc maybe? link to the latest stable docs just in case
_ => "stable",
};

format!("https://doc.rust-lang.org/{channel}")
18 changes: 17 additions & 1 deletion src/bootstrap/src/core/config/config.rs
Original file line number Diff line number Diff line change
@@ -1718,7 +1718,23 @@ impl Config {
config.omit_git_hash = omit_git_hash.unwrap_or(default);
config.rust_info = GitInfo::new(config.omit_git_hash, &config.src);

if config.rust_info.is_from_tarball() && !is_user_configured_rust_channel {
// We need to override `rust.channel` if it's manually specified when using the CI rustc.
// This is because if the compiler uses a different channel than the one specified in config.toml,
// tests may fail due to using a different channel than the one used by the compiler during tests.
if let Some(commit) = &config.download_rustc_commit {
if is_user_configured_rust_channel {
println!(
"WARNING: `rust.download-rustc` is enabled. The `rust.channel` option will be overridden by the CI rustc's channel."
);

let channel = config
.read_file_by_commit(&PathBuf::from("src/ci/channel"), commit)
.trim()
.to_owned();

config.channel = channel;
}
} else if config.rust_info.is_from_tarball() && !is_user_configured_rust_channel {
ci_channel.clone_into(&mut config.channel);
}

0 comments on commit cbf9d57

Please sign in to comment.