Rollup merge of #122632 - onur-ozkan:fix-llvm-caching-bug, r=albertlarsan68
fetch submodule before checking llvm stamp Previously, we were checking the LLVM stamp before fetching the submodule which leads to not being able to compile llvm on submodule updates. Fixes #122612 Fixes #122787
This commit is contained in:
commit
592b1ca99a
@ -76,6 +76,9 @@ pub fn prebuilt_llvm_config(
|
|||||||
builder: &Builder<'_>,
|
builder: &Builder<'_>,
|
||||||
target: TargetSelection,
|
target: TargetSelection,
|
||||||
) -> Result<LlvmResult, Meta> {
|
) -> Result<LlvmResult, Meta> {
|
||||||
|
// If we have llvm submodule initialized already, sync it.
|
||||||
|
builder.update_existing_submodule(&Path::new("src").join("llvm-project"));
|
||||||
|
|
||||||
builder.config.maybe_download_ci_llvm();
|
builder.config.maybe_download_ci_llvm();
|
||||||
|
|
||||||
// If we're using a custom LLVM bail out here, but we can only use a
|
// If we're using a custom LLVM bail out here, but we can only use a
|
||||||
@ -94,6 +97,9 @@ pub fn prebuilt_llvm_config(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Initialize the llvm submodule if not initialized already.
|
||||||
|
builder.update_submodule(&Path::new("src").join("llvm-project"));
|
||||||
|
|
||||||
let root = "src/llvm-project/llvm";
|
let root = "src/llvm-project/llvm";
|
||||||
let out_dir = builder.llvm_out(target);
|
let out_dir = builder.llvm_out(target);
|
||||||
|
|
||||||
@ -280,7 +286,6 @@ fn run(self, builder: &Builder<'_>) -> LlvmResult {
|
|||||||
Err(m) => m,
|
Err(m) => m,
|
||||||
};
|
};
|
||||||
|
|
||||||
builder.update_submodule(&Path::new("src").join("llvm-project"));
|
|
||||||
if builder.llvm_link_shared() && target.is_windows() {
|
if builder.llvm_link_shared() && target.is_windows() {
|
||||||
panic!("shared linking to LLVM is not currently supported on {}", target.triple);
|
panic!("shared linking to LLVM is not currently supported on {}", target.triple);
|
||||||
}
|
}
|
||||||
|
@ -630,6 +630,18 @@ pub fn update_existing_submodules(&self) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Updates the given submodule only if it's initialized already; nothing happens otherwise.
|
||||||
|
pub fn update_existing_submodule(&self, submodule: &Path) {
|
||||||
|
// Avoid running git when there isn't a git checkout.
|
||||||
|
if !self.config.submodules(self.rust_info()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if GitInfo::new(false, submodule).is_managed_git_subrepository() {
|
||||||
|
self.update_submodule(submodule);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Executes the entire build, as configured by the flags and configuration.
|
/// Executes the entire build, as configured by the flags and configuration.
|
||||||
pub fn build(&mut self) {
|
pub fn build(&mut self) {
|
||||||
unsafe {
|
unsafe {
|
||||||
|
Loading…
Reference in New Issue
Block a user