|
1 | 1 | load("@com_envoyproxy_protoc_gen_validate//bazel:pgv_proto_library.bzl", "pgv_cc_proto_library") |
2 | 2 | load("@com_github_grpc_grpc//bazel:cc_grpc_library.bzl", "cc_grpc_library") |
3 | | -load("@com_google_protobuf//:protobuf.bzl", _py_proto_library = "py_proto_library") |
| 3 | +load("@com_github_grpc_grpc//bazel:python_rules.bzl", _py_proto_library = "py_proto_library") |
4 | 4 | load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library") |
5 | 5 | load("@io_bazel_rules_go//go:def.bzl", "go_test") |
6 | 6 | load("@rules_proto//proto:defs.bzl", "proto_library") |
7 | 7 | load( |
8 | 8 | "//bazel:external_proto_deps.bzl", |
9 | 9 | "EXTERNAL_PROTO_CC_BAZEL_DEP_MAP", |
10 | 10 | "EXTERNAL_PROTO_GO_BAZEL_DEP_MAP", |
11 | | - "EXTERNAL_PROTO_PY_BAZEL_DEP_MAP", |
12 | 11 | ) |
13 | 12 | load( |
14 | 13 | "//bazel/cc_proto_descriptor_library:builddefs.bzl", |
@@ -52,63 +51,6 @@ def _go_proto_mapping(dep): |
52 | 51 | def _cc_proto_mapping(dep): |
53 | 52 | return _proto_mapping(dep, EXTERNAL_PROTO_CC_BAZEL_DEP_MAP, _CC_PROTO_SUFFIX) |
54 | 53 |
|
55 | | -def _py_proto_mapping(dep): |
56 | | - return _proto_mapping(dep, EXTERNAL_PROTO_PY_BAZEL_DEP_MAP, _PY_PROTO_SUFFIX) |
57 | | - |
58 | | -# TODO(htuch): Convert this to native py_proto_library once |
59 | | -# https://github.com/bazelbuild/bazel/issues/3935 and/or |
60 | | -# https://github.com/bazelbuild/bazel/issues/2626 are resolved. |
61 | | -def _api_py_proto_library(name, srcs = [], deps = []): |
62 | | - mapped_deps = [_py_proto_mapping(dep) for dep in deps] |
63 | | - mapped_unique_deps = {k: True for k in mapped_deps}.keys() |
64 | | - _py_proto_library( |
65 | | - name = name + _PY_PROTO_SUFFIX, |
66 | | - srcs = srcs, |
67 | | - default_runtime = "@com_google_protobuf//:protobuf_python", |
68 | | - protoc = "@com_google_protobuf//:protoc", |
69 | | - deps = mapped_unique_deps + [ |
70 | | - "@com_envoyproxy_protoc_gen_validate//validate:validate_py", |
71 | | - "@com_google_googleapis//google/rpc:status_py_proto", |
72 | | - "@com_google_googleapis//google/api:annotations_py_proto", |
73 | | - "@com_google_googleapis//google/api:http_py_proto", |
74 | | - "@com_google_googleapis//google/api:httpbody_py_proto", |
75 | | - ], |
76 | | - visibility = ["//visibility:public"], |
77 | | - ) |
78 | | - |
79 | | -# This defines googleapis py_proto_library. The repository does not provide its definition and requires |
80 | | -# overriding it in the consuming project (see https://github.com/grpc/grpc/issues/19255 for more details). |
81 | | -def py_proto_library(name, deps = [], plugin = None): |
82 | | - srcs = [dep[:-6] + ".proto" if dep.endswith("_proto") else dep for dep in deps] |
83 | | - proto_deps = [] |
84 | | - |
85 | | - # py_proto_library in googleapis specifies *_proto rules in dependencies. |
86 | | - # By rewriting *_proto to *.proto above, the dependencies in *_proto rules are not preserved. |
87 | | - # As a workaround, manually specify the proto dependencies for the imported python rules. |
88 | | - if name == "annotations_py_proto": |
89 | | - proto_deps = proto_deps + [":http_py_proto"] |
90 | | - |
91 | | - # checked.proto depends on syntax.proto, we have to add this dependency manually as well. |
92 | | - if name == "checked_py_proto": |
93 | | - proto_deps = proto_deps + [":syntax_py_proto"] |
94 | | - |
95 | | - # Special handling for expr_proto target |
96 | | - if srcs[0] == ":expr_moved.proto": |
97 | | - srcs = ["checked.proto", "eval.proto", "explain.proto", "syntax.proto", "value.proto"] |
98 | | - proto_deps = proto_deps + ["@com_google_googleapis//google/rpc:status_py_proto"] |
99 | | - |
100 | | - # py_proto_library does not support plugin as an argument yet at gRPC v1.25.0: |
101 | | - # https://github.com/grpc/grpc/blob/v1.25.0/bazel/python_rules.bzl#L72. |
102 | | - # plugin should also be passed in here when gRPC version is greater than v1.25.x. |
103 | | - _py_proto_library( |
104 | | - name = name, |
105 | | - srcs = srcs, |
106 | | - default_runtime = "@com_google_protobuf//:protobuf_python", |
107 | | - protoc = "@com_google_protobuf//:protoc", |
108 | | - deps = proto_deps + ["@com_google_protobuf//:protobuf_python"], |
109 | | - visibility = ["//visibility:public"], |
110 | | - ) |
111 | | - |
112 | 54 | def _api_cc_grpc_library(name, proto, deps = []): |
113 | 55 | cc_grpc_library( |
114 | 56 | name = name, |
@@ -157,7 +99,15 @@ def api_cc_py_proto_library( |
157 | 99 | deps = [relative_name], |
158 | 100 | visibility = ["//visibility:public"], |
159 | 101 | ) |
160 | | - _api_py_proto_library(name, srcs, deps) |
| 102 | + |
| 103 | + # Uses gRPC implementation of py_proto_library. |
| 104 | + # https://github.com/grpc/grpc/blob/v1.59.1/bazel/python_rules.bzl#L160 |
| 105 | + _py_proto_library( |
| 106 | + name = name + _PY_PROTO_SUFFIX, |
| 107 | + # Actual dependencies are resolved automatically from the proto_library dep tree. |
| 108 | + deps = [relative_name], |
| 109 | + visibility = ["//visibility:public"], |
| 110 | + ) |
161 | 111 |
|
162 | 112 | # Optionally define gRPC services |
163 | 113 | if has_services: |
|
0 commit comments