diff options
| author | Dylan DPC <99973273+Dylan-DPC@users.noreply.github.com> | 2022-04-10 21:03:36 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-04-10 21:03:36 +0200 |
| commit | 0b871435e97c3f9e6ead6ca09af979a2c2b517ed (patch) | |
| tree | 84c96d41c18011efd4a05f24a106eaceaa813456 | |
| parent | c1725448480469fe1cdce0b8d86c85965a91bc90 (diff) | |
| parent | ca9ef27ed156d599f6feac0c772cc29d960526ee (diff) | |
| download | rust-0b871435e97c3f9e6ead6ca09af979a2c2b517ed.tar.gz rust-0b871435e97c3f9e6ead6ca09af979a2c2b517ed.zip | |
Rollup merge of #95849 - ehuss:check-submodules, r=Mark-Simulacrum
Check for git submodules in non-git source tree. People occasionally download the source from https://github.com/rust-lang/rust/releases, but those source distributions will not work because they are missing the submodules. They will get a confusing `failed to load manifest for workspace member` error. Unfortunately AFAIK there is no way to disable the GitHub source links. This change tries to detect this scenario and provide an error message that guides them toward a solution. Closes #95608
| -rw-r--r-- | src/bootstrap/bootstrap.py | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/bootstrap/bootstrap.py b/src/bootstrap/bootstrap.py index 0b6bdf47419..00dc7da275a 100644 --- a/src/bootstrap/bootstrap.py +++ b/src/bootstrap/bootstrap.py @@ -1097,8 +1097,19 @@ class RustBuild(object): def update_submodules(self): """Update submodules""" - if (not os.path.exists(os.path.join(self.rust_root, ".git"))) or \ - self.get_toml('submodules') == "false": + has_git = os.path.exists(os.path.join(self.rust_root, ".git")) + # This just arbitrarily checks for cargo, but any workspace member in + # a submodule would work. + has_submodules = os.path.exists(os.path.join(self.rust_root, "src/tools/cargo/Cargo.toml")) + if not has_git and not has_submodules: + print("This is not a git repository, and the requisite git submodules were not found.") + print("If you downloaded the source from https://github.com/rust-lang/rust/releases,") + print("those sources will not work. Instead, consider downloading from the source") + print("releases linked at") + print("https://forge.rust-lang.org/infra/other-installation-methods.html#source-code") + print("or clone the repository at https://github.com/rust-lang/rust/.") + raise SystemExit(1) + if not has_git or self.get_toml('submodules') == "false": return default_encoding = sys.getdefaultencoding() |
