fix: remove stray file
2 files changed
tree: f0d9ada45ba3fa867b6a2e42a5940a2d448d5391
  1. .bcr/
  2. .devcontainer/
  3. .github/
  4. e2e/
  5. protoc/
  6. .bazelignore
  7. .bazelrc
  8. .bazelversion
  9. .gitignore
  10. .pre-commit-config.yaml
  11. .prettierignore
  12. BUILD.bazel
  13. CONTRIBUTING.md
  14. LICENSE
  15. MODULE.bazel
  16. README.md
  17. renovate.json
  18. WORKSPACE.bazel
README.md

Bazel toolchain for pre-built protoc

Using Protocol Buffers with Bazel has always been painful.

  • Nearly every Bazel user has waited for protoc to compile from sources many, MANY times.
  • The versioning of the protobuf module on Bazel Central Registry has fallen behind and contains many patches.

protoc has always been distributed as pre-built binaries on https://github.com/protocolbuffers/protobuf/releases

Bazel 7 introduced --incompatible_enable_proto_toolchain_resolution to allow us fetch that binary rather than re-build it! This repo simply contains a toolchain that resolves those pre-built binaries.

Design

Questioning why Bazel is different

Protobuf works fine under many build tools, using the releases and runtime libraries shipped by the protobuf team. Why is Bazel different?

Our answer is: it should not be. The protobuf team shouldn’t have to own Bazel rules or understand bzlmod. As with many other tools such as Swagger and GraphQL, the Bazel community is self-sufficient to create thin layers to establish a toolchain and execute actions that perform codegen steps.

This toolchain shows that there's no need to treat Bazel as a “special” build system vs. all the others that protobuf users rely on. https://protobuf.dev/reference/ is sufficient documentation for everyone.

Why a separate Bazel module?

This belongs in rules_proto, see

Getting reviews from Googlers is hard so let's not wait for them.

Installation

Make sure your .bazelrc contains

# Introduced in Bazel 7.
common --incompatible_enable_proto_toolchain_resolution

Follow instructions from the release you wish to use: https://github.com/alexeagle/rules_protoc/releases