-
Notifications
You must be signed in to change notification settings - Fork 4.9k
bazel: Migrate py_proto_library to @com_github_grpc_grpc
#30834
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
CC @envoyproxy/dependency-shepherds: Your approval is needed for changes made to |
5ddc33d
to
9c3a8d4
Compare
9c3a8d4
to
81ee685
Compare
Signed-off-by: Sergii Tkachenko <[email protected]>
81ee685
to
ea7d1c2
Compare
version = "83c031ea693357fdf7a7fea9a68a785d97864a38", | ||
sha256 = "35bdcdbcd2e437058ad1f74a91b49525339b028a6b52760ab019fd9efa5a6d44", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note: this will be updated once cncf/xds#74 is merged.
This is ready for a review now. |
py_proto_library provided by @com_google_protobuf//:protobuf.bzl has been deprecated for a while now: This is provided for backwards compatibility only. Bazel 5.3 will introduce support for py_proto_library, which should be used instead. https://github.com/protocolbuffers/protobuf/blob/32af7d211b85f71920acdfa9b796db008f8c2a45/protobuf.bzl#L642-L644 However, native py_proto_library has never been provided, see bazelbuild/bazel#3935. Instead @rules_python//python:proto.bzl is recommended. I attempted switching to this library, but it's not compatible with @com_google_googleapis's py_proto_library targets, see #69. I found a hacky workaround by using cc_proto_library to generate python targets, but downstream integration into Envoy failed (envoyproxy/envoy#30159). This PR migrates py_proto_library implementation to to @com_github_grpc_grpc. This implementation is used by @com_google_googleapis's, and, more importantly, uses bazel aspects. Which decouples cncf/xds and Envoy's dependencies from concrete upstream py_proto_library implementations. This resulted in a significant code improvement of bazel/api_build_system.bzl: No more custom @com_google_googleapis dependency mapping needed via py_proto_library rules override. No more hardcoded dependencies _xds_py_proto_library - proto dependency tree is determined from proto_library definitions via Basel aspects. No more EXTERNAL_PROTO_PY_BAZEL_DEP_MAP dependency map needed - for the same reason. Similar work in Envoy: envoyproxy/envoy#30834. Signed-off-by: Sergii Tkachenko <[email protected]>
Hey @yanavlasov - we needed to merge cncf/xds first: #30834 (comment). |
py_proto_library
provided by@com_google_protobuf//:protobuf.bzl
has been deprecated for a while now:However, native
py_proto_library
has never been provided, see bazelbuild/bazel#3935. Instead@rules_python//python:proto.bzl
is recommended. I attempted switching to this library, but it's not compatible with@com_google_googleapis
's py_proto_library targets, see cncf/xds#69. I found a hacky workaround by usingcc_proto_library
to generate python targets, but downstream integration into Envoy failed (#30159).This PR migrates
py_proto_library
implementation to to@com_github_grpc_grpc
. This implementation is used by@com_google_googleapis
's, and, more importantly, uses bazel aspects. Which decouples cncf/xds and Envoy's dependencies from concrete upstream py_proto_library implementations.This resulted in a significant code improvement of
bazel/api_build_system.bzl
:@com_google_googleapis
dependency mapping needed viapy_proto_library
rules override._xds_py_proto_library
- proto dependency tree is determined fromproto_library
definitions via Basel aspects.EXTERNAL_PROTO_PY_BAZEL_DEP_MAP
dependency map needed - for the same reason.Related PR in cncf/xds: cncf/xds#74.
Commit Message:
Additional Description:
Risk Level: Low
Testing: do_ci.sh
Docs Changes: no
Release Notes: no