Auto merge of #132215 - onur-ozkan:bootstrap-git, r=Kobzol
simplify force-recompile logic for "library" It’s kind of self-explanatory when looking at it commit by commit.
This commit is contained in:
commit
5f5c243ca0
@ -15,7 +15,6 @@
|
|||||||
use std::process::Stdio;
|
use std::process::Stdio;
|
||||||
use std::{env, fs, str};
|
use std::{env, fs, str};
|
||||||
|
|
||||||
use build_helper::git::get_closest_merge_commit;
|
|
||||||
use serde_derive::Deserialize;
|
use serde_derive::Deserialize;
|
||||||
|
|
||||||
use crate::core::build_steps::tool::SourceType;
|
use crate::core::build_steps::tool::SourceType;
|
||||||
@ -27,7 +26,7 @@
|
|||||||
use crate::core::config::{DebuginfoLevel, LlvmLibunwind, RustcLto, TargetSelection};
|
use crate::core::config::{DebuginfoLevel, LlvmLibunwind, RustcLto, TargetSelection};
|
||||||
use crate::utils::exec::command;
|
use crate::utils::exec::command;
|
||||||
use crate::utils::helpers::{
|
use crate::utils::helpers::{
|
||||||
self, exe, get_clang_cl_resource_dir, is_debug_info, is_dylib, symlink_dir, t, up_to_date,
|
exe, get_clang_cl_resource_dir, is_debug_info, is_dylib, symlink_dir, t, up_to_date,
|
||||||
};
|
};
|
||||||
use crate::{CLang, Compiler, DependencyType, GitRepo, LLVM_TOOLS, Mode};
|
use crate::{CLang, Compiler, DependencyType, GitRepo, LLVM_TOOLS, Mode};
|
||||||
|
|
||||||
@ -125,23 +124,9 @@ fn make_run(run: RunConfig<'_>) {
|
|||||||
// Force compilation of the standard library from source if the `library` is modified. This allows
|
// Force compilation of the standard library from source if the `library` is modified. This allows
|
||||||
// library team to compile the standard library without needing to compile the compiler with
|
// library team to compile the standard library without needing to compile the compiler with
|
||||||
// the `rust.download-rustc=true` option.
|
// the `rust.download-rustc=true` option.
|
||||||
let force_recompile =
|
let force_recompile = builder.rust_info().is_managed_git_subrepository()
|
||||||
if builder.rust_info().is_managed_git_subrepository() && builder.download_rustc() {
|
&& builder.download_rustc()
|
||||||
let closest_merge_commit =
|
&& builder.config.last_modified_commit(&["library"], "download-rustc", true).is_none();
|
||||||
get_closest_merge_commit(Some(&builder.src), &builder.config.git_config(), &[])
|
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
// Check if `library` has changes (returns false otherwise)
|
|
||||||
!t!(helpers::git(Some(&builder.src))
|
|
||||||
.args(["diff-index", "--quiet", &closest_merge_commit])
|
|
||||||
.arg("--")
|
|
||||||
.arg(builder.src.join("library"))
|
|
||||||
.as_command_mut()
|
|
||||||
.status())
|
|
||||||
.success()
|
|
||||||
} else {
|
|
||||||
false
|
|
||||||
};
|
|
||||||
|
|
||||||
run.builder.ensure(Std {
|
run.builder.ensure(Std {
|
||||||
compiler: run.builder.compiler(run.builder.top_stage, run.build_triple()),
|
compiler: run.builder.compiler(run.builder.top_stage, run.build_triple()),
|
||||||
|
@ -2871,14 +2871,7 @@ pub fn last_modified_commit(
|
|||||||
|
|
||||||
// Warn if there were changes to the compiler or standard library since the ancestor commit.
|
// Warn if there were changes to the compiler or standard library since the ancestor commit.
|
||||||
let mut git = helpers::git(Some(&self.src));
|
let mut git = helpers::git(Some(&self.src));
|
||||||
git.args(["diff-index", "--quiet", &commit, "--"]);
|
git.args(["diff-index", "--quiet", &commit, "--"]).args(modified_paths);
|
||||||
|
|
||||||
// Handle running from a directory other than the top level
|
|
||||||
let top_level = &self.src;
|
|
||||||
|
|
||||||
for path in modified_paths {
|
|
||||||
git.arg(top_level.join(path));
|
|
||||||
}
|
|
||||||
|
|
||||||
let has_changes = !t!(git.as_command_mut().status()).success();
|
let has_changes = !t!(git.as_command_mut().status()).success();
|
||||||
if has_changes {
|
if has_changes {
|
||||||
|
@ -541,7 +541,7 @@ fn update_existing_submodules(&self) {
|
|||||||
}
|
}
|
||||||
let output = helpers::git(Some(&self.src))
|
let output = helpers::git(Some(&self.src))
|
||||||
.args(["config", "--file"])
|
.args(["config", "--file"])
|
||||||
.arg(self.config.src.join(".gitmodules"))
|
.arg(".gitmodules")
|
||||||
.args(["--get-regexp", "path"])
|
.args(["--get-regexp", "path"])
|
||||||
.run_capture(self)
|
.run_capture(self)
|
||||||
.stdout();
|
.stdout();
|
||||||
|
Loading…
Reference in New Issue
Block a user