rules_scala icon indicating copy to clipboard operation
rules_scala copied to clipboard

Bump to rules_proto 6.0.2, separate protobuf 21.7

Open mbland opened this issue 1 year ago • 1 comments
trafficstars

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.

mbland avatar Oct 16 '24 21:10 mbland