-
Notifications
You must be signed in to change notification settings - Fork 448
Description
Description
Managing dependencies on external C++ projects has always been a challenge.
Back in 2010 OSS Mozc originally started with borrowing the gclient command and DEPS file mechanism from the Chromium project.
In 2015, we switched to git-submodules to remove the dependency on gclient command (#300).
In 2023 we also introduced a wrapper script src/build_tools/update_deps.py (6efc649), which then started being used to utilize GitHub Actions Runner cache (8233b40).
In 2024, we also started using bzlmod in Bazel (#1002), which basically offers all the features we discussed above (downloading archives then extracting them out, importing libraries from module repository, configuring cache directory).
So it's time to start sorting out duplicated functionality there.
The easiest part is git-submodules. For instance, we can already build Mozc with Bazel without the following git submodules as these dependencies are now specified in src/MODULE.bazel.
src/third_party/abseil-cppsrc/third_party/protobufsrc/third_party/gtestsrc/third_party/japanese_usage_dictionary
As for the remaining submodule-based dependencies, it should not be that difficult for us to fully stop using as long as we use Bazel to build Mozc. As for remaining special use cases in GYP-based builds, we can still take care of them in src/build_tools/update_deps.py with some additional option as a short-term solution until we fully stop supporting GYP-based builds.
Expected behavior
Git submodules are not used in Mozc git repository.
Actual behavior
Git submodules are still used in Mozc git repository.