force-recompile library changes on download-rustc="if-unchanged"

This makes download-rustc="if-unchanged" more functional and useful
for library developers.

Signed-off-by: onur-ozkan <work@onurozkan.dev>
This commit is contained in:
onur-ozkan 2024-10-28 18:22:33 +03:00
parent 5f5c243ca0
commit 5cf6b8bdee
2 changed files with 22 additions and 16 deletions

View File

@ -153,7 +153,6 @@ fn run(self, builder: &Builder<'_>) {
// NOTE: the beta compiler may generate different artifacts than the downloaded compiler, so // NOTE: the beta compiler may generate different artifacts than the downloaded compiler, so
// its artifacts can't be reused. // its artifacts can't be reused.
&& compiler.stage != 0 && compiler.stage != 0
// This check is specific to testing std itself; see `test::Std` for more details.
&& !self.force_recompile && !self.force_recompile
{ {
let sysroot = builder.ensure(Sysroot { compiler, force_recompile: false }); let sysroot = builder.ensure(Sysroot { compiler, force_recompile: false });

View File

@ -2767,25 +2767,32 @@ fn download_ci_rustc_commit(
} }
}; };
let files_to_track = let mut files_to_track = vec!["compiler", "src/version", "src/stage0", "src/ci/channel"];
&["compiler", "library", "src/version", "src/stage0", "src/ci/channel"];
// In CI, disable ci-rustc if there are changes in the library tree. But for non-CI, ignore
// these changes to speed up the build process for library developers. This provides consistent
// functionality for library developers between `download-rustc=true` and `download-rustc="if-unchanged"`
// options.
if CiEnv::is_ci() {
files_to_track.push("library");
}
// Look for a version to compare to based on the current commit. // Look for a version to compare to based on the current commit.
// Only commits merged by bors will have CI artifacts. // Only commits merged by bors will have CI artifacts.
let commit = match self.last_modified_commit(files_to_track, "download-rustc", if_unchanged) let commit =
{ match self.last_modified_commit(&files_to_track, "download-rustc", if_unchanged) {
Some(commit) => commit, Some(commit) => commit,
None => { None => {
if if_unchanged { if if_unchanged {
return None; return None;
}
println!("ERROR: could not find commit hash for downloading rustc");
println!("HELP: maybe your repository history is too shallow?");
println!("HELP: consider disabling `download-rustc`");
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 disabling `download-rustc`");
println!("HELP: or fetch enough history to include one upstream commit");
crate::exit!(1);
}
};
if CiEnv::is_ci() && { if CiEnv::is_ci() && {
let head_sha = let head_sha =