|
1 | 1 | """Implements custom rules for Lingvo.""" |
2 | 2 |
|
| 3 | +load("@rules_python//python:proto.bzl", "py_proto_library") |
| 4 | + |
3 | 5 | def tf_copts(): |
4 | 6 | # "-Wno-sign-compare", "-mavx" removed for compat with aarch64 |
5 | 7 | return ["-std=c++17"] + select({ |
@@ -107,65 +109,52 @@ def lingvo_cuda_py_test(name, tags = [], deps = [], **kwargs): |
107 | 109 | **kwargs |
108 | 110 | ) |
109 | 111 |
|
110 | | -def _proto_gen_cc_src(name, basename): |
111 | | - native.genrule( |
112 | | - name = name, |
113 | | - srcs = [basename + ".proto"], |
114 | | - outs = [basename + ".pb.cc", basename + ".pb.h"], |
115 | | - tools = [ |
116 | | - "@protobuf_protoc//:protoc_bin", |
117 | | - "//lingvo:tf_dot_protos", |
118 | | - ], |
119 | | - # TODO(drpng): only unpack if tf_proto dependency is requested. |
120 | | - cmd = """ |
121 | | - mkdir -p $(@D)/tf_proto.$$$$; |
122 | | - tar -C $(@D)/tf_proto.$$$$ -xf $(location //lingvo:tf_dot_protos); |
123 | | - $(location @protobuf_protoc//:protoc_bin) --proto_path=$(@D)/tf_proto.$$$$ --proto_path=. --cpp_out=$(GENDIR) $(<); |
124 | | - rm -rf $(@D)/tf_proto.$$$$ |
125 | | - """, |
126 | | - ) |
127 | | - |
128 | | -def _proto_gen_py_src(name, basename): |
129 | | - native.genrule( |
130 | | - name = name, |
131 | | - srcs = [basename + ".proto"], |
132 | | - outs = [basename + "_pb2.py"], |
133 | | - tools = [ |
134 | | - "@protobuf_protoc//:protoc_bin", |
135 | | - "//lingvo:tf_dot_protos", |
136 | | - ], |
137 | | - # TODO(drpng): only unpack if tf_proto dependency is requested. |
138 | | - cmd = """ |
139 | | - mkdir -p $(@D)/tf_proto.$$$$; |
140 | | - tar -C $(@D)/tf_proto.$$$$ -xf $(location //lingvo:tf_dot_protos); |
141 | | - $(location @protobuf_protoc//:protoc_bin) --proto_path=$(@D)/tf_proto.$$$$ --proto_path=. --python_out=$(GENDIR) $(<); |
142 | | - rm -rf $(@D)/tf_proto.$$$$ |
143 | | - """, |
144 | | - ) |
| 112 | +WELL_KNOWN_PROTO_LIBS = [ |
| 113 | + "@com_google_protobuf//:any_proto", |
| 114 | + "@com_google_protobuf//:api_proto", |
| 115 | + "@com_google_protobuf//:compiler_plugin_proto", |
| 116 | + "@com_google_protobuf//:descriptor_proto", |
| 117 | + "@com_google_protobuf//:duration_proto", |
| 118 | + "@com_google_protobuf//:empty_proto", |
| 119 | + "@com_google_protobuf//:field_mask_proto", |
| 120 | + "@com_google_protobuf//:source_context_proto", |
| 121 | + "@com_google_protobuf//:struct_proto", |
| 122 | + "@com_google_protobuf//:timestamp_proto", |
| 123 | + "@com_google_protobuf//:type_proto", |
| 124 | + "@com_google_protobuf//:wrappers_proto", |
| 125 | +] |
145 | 126 |
|
146 | 127 | def lingvo_proto_cc(name, src, deps = []): |
147 | 128 | # TODO(drpng): only works with proto with no deps within lingvo. |
148 | 129 | _unused = [deps] |
149 | 130 | basename = src.replace(".proto", "") |
150 | | - _proto_gen_cc_src(name + "_gencc", basename) |
151 | | - lingvo_cc_library( |
| 131 | + native.proto_library( |
152 | 132 | name = name, |
153 | | - srcs = [basename + ".pb.cc"], |
154 | | - hdrs = [basename + ".pb.h"], |
| 133 | + srcs = [src], |
| 134 | + deps = [ |
| 135 | + "//lingvo:tf_protos", |
| 136 | + ] + WELL_KNOWN_PROTO_LIBS, |
155 | 137 | ) |
156 | | - lingvo_cc_library( |
157 | | - name = "%s_cc" % name, |
158 | | - deps = [":%s" % name], |
| 138 | + native.cc_proto_library( |
| 139 | + name = name + "_cc", |
| 140 | + deps = [":" + name] |
159 | 141 | ) |
160 | 142 |
|
| 143 | + |
161 | 144 | def lingvo_proto_py(name, src, deps = []): |
162 | 145 | # TODO(drpng): only works with proto with no deps within lingvo. |
163 | 146 | _unused = [deps] |
164 | 147 | basename = src.replace(".proto", "") |
165 | | - _proto_gen_py_src(name + "_genpy", basename) |
166 | | - native.py_library( |
| 148 | + native.proto_library( |
| 149 | + name = name + "_pyproto", |
| 150 | + srcs = [src], |
| 151 | + deps = [ |
| 152 | + "//lingvo:tf_protos", |
| 153 | + ] + WELL_KNOWN_PROTO_LIBS, |
| 154 | + ) |
| 155 | + py_proto_library( |
167 | 156 | name = name, |
168 | | - srcs = [basename + "_pb2.py"], |
| 157 | + deps = [name + "_pyproto"], |
169 | 158 | ) |
170 | 159 |
|
171 | 160 | # Placeholders to use until bazel supports pytype_{,strict_}{library,test,binary}. |
|
0 commit comments