make it possible to use ci-rustc on tarball sources
Previously, bootstrap was using `Config::last_modified_commit` unconditionally to figure the commit has 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. Signed-off-by: onur-ozkan <work@onurozkan.dev>
This commit is contained in:
parent
8e59cf95d5
commit
903cddb392
1 changed files with 23 additions and 13 deletions
|
|
@ -2873,21 +2873,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() && {
|
||||
|
|
@ -2969,6 +2974,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();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue