Skip to content

Commit

Permalink
Rollup merge of rust-lang#135722 - onur-ozkan:handle-tarball-ci-commi…
Browse files Browse the repository at this point in the history
…t, r=jieyouxu

make it possible to use ci-rustc on tarball sources

Previously, bootstrap was using `Config::last_modified_commit` unconditionally to figure the commit to download precompiled rustc artifact from CI, which was leading builds to fail on tarball sources as `Config::last_modified_commit` requires `git` to be present in the project source. This change makes bootstrap to call `Config::last_modified_commit` only when it's running on git-managed source and read `git-commit-hash` file otherwise.
  • Loading branch information
jieyouxu authored Jan 20, 2025
2 parents 6db2d1a + 903cddb commit afdf3aa
Showing 1 changed file with 23 additions and 13 deletions.
36 changes: 23 additions & 13 deletions src/bootstrap/src/core/config/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2875,21 +2875,26 @@ impl Config {
allowed_paths.push(":!library");
}

// Look for a version to compare to based on the current commit.
// Only commits merged by bors will have CI artifacts.
let commit = match self.last_modified_commit(&allowed_paths, "download-rustc", if_unchanged)
{
Some(commit) => commit,
None => {
if if_unchanged {
return None;
let commit = if self.rust_info.is_managed_git_subrepository() {
// Look for a version to compare to based on the current commit.
// Only commits merged by bors will have CI artifacts.
match self.last_modified_commit(&allowed_paths, "download-rustc", if_unchanged) {
Some(commit) => commit,
None => {
if if_unchanged {
return None;
}
println!("ERROR: could not find commit hash for downloading rustc");
println!("HELP: maybe your repository history is too shallow?");
println!("HELP: consider setting `rust.download-rustc=false` in config.toml");
println!("HELP: or fetch enough history to include one upstream commit");
crate::exit!(1);
}
println!("ERROR: could not find commit hash for downloading rustc");
println!("HELP: maybe your repository history is too shallow?");
println!("HELP: consider setting `rust.download-rustc=false` in config.toml");
println!("HELP: or fetch enough history to include one upstream commit");
crate::exit!(1);
}
} else {
channel::read_commit_info_file(&self.src)
.map(|info| info.sha.trim().to_owned())
.expect("git-commit-info is missing in the project root")
};

if CiEnv::is_ci() && {
Expand Down Expand Up @@ -2971,6 +2976,11 @@ impl Config {
option_name: &str,
if_unchanged: bool,
) -> Option<String> {
assert!(
self.rust_info.is_managed_git_subrepository(),
"Can't run `Config::last_modified_commit` on a non-git source."
);

// Look for a version to compare to based on the current commit.
// Only commits merged by bors will have CI artifacts.
let commit = get_closest_merge_commit(Some(&self.src), &self.git_config(), &[]).unwrap();
Expand Down

0 comments on commit afdf3aa

Please sign in to comment.