rules_scala
rules_scala copied to clipboard
Bump to rules_proto 6.0.2, separate protobuf 21.7
Description
Updates the build to depend on rules_proto 6.0.2, and the now separate protobuf v21.7.
Part of #1482.
As explained in the 6.0.0 release notes, rules_proto 6.x no longer depends directly on com_google_protobuf, so we need to import it separately. We're keeping the Protobuf version as 21.7 for now, because Protobuf 22.x requires C++14 at a minimum, which Bazel 6.x doesn't support by default:
- https://protobuf.dev/news/v22/#c11-support
- https://github.com/protocolbuffers/protobuf/releases/tag/v22.0
The downside is that, unline rules_proto-5.3.0-21.7, we now end up building (and occasionally rebuilding) protoc as part of our build.
Motivation
This is in preparation for adding a MODULE.bazel file, which will bring in dependencies that use rules_proto 6.x. This change avoids that warning, and changing it now ensures that WORKSPACE builds are still compatible.
The flip side of the downside is that rules_proto 6.0.2 also enables clients to try "Protobuf Toolchainization" to download precompiled protoc binaries.
- https://github.com/bazelbuild/rules_proto/releases/tag/6.0.0
- https://docs.google.com/document/d/1CE6wJHNfKbUPBr7-mmk_0Yo3a4TaqcTPE0OWNuQkhPs/edit
For now, Protobuf Toolchainization requires Bazel 6.5.0 or Bazel >= 7 and the --incompatible_enable_proto_toolchain_resolution flag:
- https://bazel.build/reference/command-line-reference#flag--incompatible_enable_proto_toolchain_resolution
I've got a working draft implementation of proto toolchainization in a separate branch, though that experiment is certainly not urgent.