Rollup merge of #78153 - est31:downloaded_llvm_maybe_sync, r=Mark-Simulacrum
Sync LLVM submodule if it has been initialized Since having enabled the download-ci-llvm option, and having rebased on top of #76864, I've noticed that I had to update the llvm-project submodule manually if it was checked out. Orignally, the submodule update logic was introduced to reduce the friction for contributors to manage the submodules, or in other words, to prevent getting PRs that have unwanted submodule rollbacks because the contributors didn't run git submodule update. This commit adds logic to ensure there is no inadvertent LLVM submodule rollback in a PR if download-ci-llvm (or llvm-config) is enabled. It will detect whether the llvm-project submodule is initialized, and if so, update it in any case. If it is not initialized, behaviour is kept to not do any update/initialization. An alternative to the chosen implementation would be to not pass the --init command line arg to `git submodule update` for the src/llvm-project submodule. This would show a confusing error message however on all builds with an uninitialized repo. We could pass the --silent param, but we still want it to print something if it is initialized and has to update something. So we just do a manual check for whether the submodule is initialized.
This commit is contained in:
commit
025481a5eb
@ -893,10 +893,15 @@ class RustBuild(object):
|
||||
).decode(default_encoding).splitlines()]
|
||||
filtered_submodules = []
|
||||
submodules_names = []
|
||||
llvm_checked_out = os.path.exists(os.path.join(self.rust_root, "src/llvm-project/.git"))
|
||||
for module in submodules:
|
||||
if module.endswith("llvm-project"):
|
||||
# Don't sync the llvm-project submodule either if an external LLVM
|
||||
# was provided, or if we are downloading LLVM. Also, if the
|
||||
# submodule has been initialized already, sync it anyways so that
|
||||
# it doesn't mess up contributor pull requests.
|
||||
if self.get_toml('llvm-config') or self.downloading_llvm():
|
||||
if self.get_toml('lld') != 'true':
|
||||
if self.get_toml('lld') != 'true' and not llvm_checked_out:
|
||||
continue
|
||||
check = self.check_submodule(module, slow_submodules)
|
||||
filtered_submodules.append((module, check))
|
||||
|
Loading…
Reference in New Issue
Block a user