11use std:: { env, path:: PathBuf } ;
2+
3+ #[ cfg( feature = "vendored-protox" ) ]
4+ use prost:: Message ;
25use tonic_prost_build:: Config ;
36
47static ALWAYS_SERDE : & str = "#[cfg_attr(not(feature = \" serde_serialize\" ), \
@@ -50,6 +53,26 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
5053 let out = PathBuf :: from ( env:: var ( "OUT_DIR" ) . unwrap ( ) ) ;
5154 let descriptor_file = out. join ( "descriptors.bin" ) ;
5255 println ! ( "cargo:descriptor_path={}" , descriptor_file. display( ) ) ;
56+ let protos = & [
57+ "./protos/local/temporal/sdk/core/core_interface.proto" ,
58+ "./protos/api_upstream/temporal/api/sdk/v1/workflow_metadata.proto" ,
59+ "./protos/api_upstream/temporal/api/workflowservice/v1/service.proto" ,
60+ "./protos/api_upstream/temporal/api/nexusservices/workerservice/v1/request_response.proto" ,
61+ "./protos/api_upstream/temporal/api/operatorservice/v1/service.proto" ,
62+ "./protos/api_upstream/temporal/api/errordetails/v1/message.proto" ,
63+ "./protos/api_cloud_upstream/temporal/api/cloud/cloudservice/v1/service.proto" ,
64+ "./protos/testsrv_upstream/temporal/api/testservice/v1/service.proto" ,
65+ "./protos/grpc/health/v1/health.proto" ,
66+ "./protos/google/rpc/status.proto" ,
67+ ] ;
68+ let includes = & [
69+ "./protos/api_upstream" ,
70+ "./protos/api_cloud_upstream" ,
71+ "./protos/local" ,
72+ "./protos/testsrv_upstream" ,
73+ "./protos/grpc" ,
74+ "./protos" ,
75+ ] ;
5376 let mut builder = tonic_prost_build:: configure ( )
5477 // Workflow guests need message structs, while the native common crate enables this
5578 // feature to preserve the generated clients it re-exports today.
@@ -145,6 +168,13 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
145168 builder = builder. type_attribute ( * prefix, SERDE_ATTR ) ;
146169 }
147170
171+ #[ cfg( feature = "vendored-protox" ) ]
172+ {
173+ let descriptors = protox:: compile ( protos, includes) ?;
174+ std:: fs:: write ( & descriptor_file, descriptors. encode_to_vec ( ) ) ?;
175+ builder = builder. skip_protoc_run ( ) ;
176+ }
177+
148178 builder
149179 . file_descriptor_set_path ( & descriptor_file)
150180 . compile_with_config (
@@ -153,26 +183,8 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
153183 c. enable_type_names ( ) ;
154184 c
155185 } ,
156- & [
157- "./protos/local/temporal/sdk/core/core_interface.proto" ,
158- "./protos/api_upstream/temporal/api/sdk/v1/workflow_metadata.proto" ,
159- "./protos/api_upstream/temporal/api/workflowservice/v1/service.proto" ,
160- "./protos/api_upstream/temporal/api/nexusservices/workerservice/v1/request_response.proto" ,
161- "./protos/api_upstream/temporal/api/operatorservice/v1/service.proto" ,
162- "./protos/api_upstream/temporal/api/errordetails/v1/message.proto" ,
163- "./protos/api_cloud_upstream/temporal/api/cloud/cloudservice/v1/service.proto" ,
164- "./protos/testsrv_upstream/temporal/api/testservice/v1/service.proto" ,
165- "./protos/grpc/health/v1/health.proto" ,
166- "./protos/google/rpc/status.proto" ,
167- ] ,
168- & [
169- "./protos/api_upstream" ,
170- "./protos/api_cloud_upstream" ,
171- "./protos/local" ,
172- "./protos/testsrv_upstream" ,
173- "./protos/grpc" ,
174- "./protos" ,
175- ] ,
186+ protos,
187+ includes,
176188 ) ?;
177189
178190 // TODO [rust-sdk-branch]: support normal JSON and proto JSON serialization
0 commit comments