updates //third_party packages and replaces submodules w/ FetchContent#475
Open
cjdb wants to merge 2 commits intochromium:mainfrom
Open
updates //third_party packages and replaces submodules w/ FetchContent#475cjdb wants to merge 2 commits intochromium:mainfrom
cjdb wants to merge 2 commits intochromium:mainfrom
Conversation
830ed97 to
0d2c542
Compare
cjdb
added a commit
to cjdb/subspace
that referenced
this pull request
Mar 9, 2026
PR chromium#475 uses Git for package management, so we need to give the CI some sort of identity. The email is a fake email, just to satisfy using Git.
cjdb
added a commit
to cjdb/subspace
that referenced
this pull request
Mar 9, 2026
PR chromium#475 uses Git for package management, so we need to give the CI some sort of identity. The email is a fake email, just to satisfy using Git.
danakj
pushed a commit
that referenced
this pull request
Mar 9, 2026
PR #475 uses Git for package management, so we need to give the CI some sort of identity. The email is a fake email, just to satisfy using Git.
cjdb
added a commit
to cjdb/subspace
that referenced
this pull request
Mar 9, 2026
PR chromium#475 uses Git for package management, so we need to give all the GitHub workflows an identity. The emails are fake, and only exist in the file to satisfy Git's requirements.
cjdb
added a commit
to cjdb/subspace
that referenced
this pull request
Mar 9, 2026
PR chromium#475 uses Git for package management, so we need to give all the GitHub workflows an identity. The emails are fake, and only exist in the file to satisfy Git's requirements.
danakj
pushed a commit
that referenced
this pull request
Mar 9, 2026
PR #475 uses Git for package management, so we need to give all the GitHub workflows an identity. The emails are fake, and only exist in the file to satisfy Git's requirements.
Some libraries were getting stale, and subspace wasn't able to build with the default libraries, so everything in //third_party has been update to tip-of-tree, except for md4c. This commit also changes the dependency structure from using submodules to `FetchContent`. `FetchContent` moves the package management from Git into CMake. `FetchContent` allows CMake to synchronise dependencies for an entire project (e.g. a project using both libfmt and Subspace only clones and builds libfmt once, instead of once for Subspace and once for itself). `FetchContent` downloads dependencies during project configuration. As such, Subspace only downloads packages that it needs for a specific configuration (e.g. nanobench isn't cloned when benchmarking is disabled). Finally, Git submodules require manual synchronisation. This can lead to problems with ensuring that the third-party packages exist or are up-to-date. `FetchContent` ensures that projects checkout a canonical commit (and can more easily change that if necessary) due to everything being handled at the config step. Users that update Subspace won't also need to worry about updating Subspace's dependencies, because it's already been taken care of for them.
Rather than depending on the system's LLVM and Clang, we move Subspace to pull a specific version of llvm-project instead. Due to more modern versions of LLVM being incompatible with Subdoc, we conservatively pin the tag at LLVM 17.0.6, which is the version used by CI.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Some libraries were getting stale, and subspace wasn't able to build with the default libraries, so everything in //third_party has been update to tip-of-tree, except for md4c.
This commit also changes the dependency structure from using submodules to
FetchContent.FetchContentmoves the package management from Git into CMake.FetchContentallows CMake to synchronise dependencies for an entire project (e.g. a project using both libfmt and Subspace only clones and builds libfmt once, instead of once for Subspace and once for itself).FetchContentdownloads dependencies during project configuration. As such, Subspace only downloads packages that it needs for a specific configuration (e.g. nanobench isn't cloned when benchmarking is disabled).Finally, Git submodules require manual synchronisation. This can lead to problems with ensuring that the third-party packages exist or are up-to-date.
FetchContentensures that projects checkout a canonical commit (and can more easily change that if necessary) due to everything being handled at the config step. Users that update Subspace won't also need to worry about updating Subspace's dependencies, because it's already been taken care of for them.