Skip to content

Consolidate rust_prost_library and fix extension-only proto generation. #2047

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

Merged
merged 3 commits into from
Jul 5, 2023

Conversation

freeformstu
Copy link
Contributor

@freeformstu freeformstu commented Jul 4, 2023

This PR consolidates rust_prost_library and rust_tonic_library into one rule; rust_prost_library. rust_prost_library will generate tonic services if you provide a tonic_plugin in the toolchain definition. If you do not provide that plugin and you try to build a proto with services, it will print a warning that you should add a tonic_plugin.

This PR also handles extension-only proto files. Prost does not generate a file if there are no messages, enums, or services and it appears that Prost doesn't even support proto2 extensions. So to work around this issue, protoc_wrapper will generate an empty .rs file in the case that there are only extensions defined in a file.

Closes: #2046

@freeformstu
Copy link
Contributor Author

@UebelAndre & @illicitonion, please take a look when you have a chance.

@aaronmondal
Copy link

I'm amazed by the speed at which you come up with these fixes 😍 Thank you so much for your efforts! ❤️

UX-wise I think this simplified API is a good change.

@illicitonion
Copy link
Collaborator

Thanks!

@illicitonion illicitonion merged commit 7f751cd into bazelbuild:main Jul 5, 2023
@freeformstu freeformstu deleted the dev/prost-tidy branch July 5, 2023 14:39
Silcet pushed a commit to Silcet/rules_rust that referenced this pull request Jul 10, 2023
…n. (bazelbuild#2047)

This PR consolidates rust_prost_library and rust_tonic_library into one rule; `rust_prost_library`. `rust_prost_library` will generate tonic services if you provide a `tonic_plugin` in the toolchain definition. If you do not provide that plugin and you try to build a proto with services, it will print a warning that you should add a `tonic_plugin`.

This PR also handles extension-only proto files. Prost does not generate a file if there are no messages, enums, or services and it appears that Prost doesn't even support proto2 extensions. So to work around this issue, protoc_wrapper will generate an empty `.rs` file in the case that there are only extensions defined in a file.

Closes: bazelbuild#2046
Silcet pushed a commit to Silcet/rules_rust that referenced this pull request Jul 10, 2023
…n. (bazelbuild#2047)

This PR consolidates rust_prost_library and rust_tonic_library into one rule; `rust_prost_library`. `rust_prost_library` will generate tonic services if you provide a `tonic_plugin` in the toolchain definition. If you do not provide that plugin and you try to build a proto with services, it will print a warning that you should add a `tonic_plugin`.

This PR also handles extension-only proto files. Prost does not generate a file if there are no messages, enums, or services and it appears that Prost doesn't even support proto2 extensions. So to work around this issue, protoc_wrapper will generate an empty `.rs` file in the case that there are only extensions defined in a file.

Closes: bazelbuild#2046
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Prost rules failing with googleapis/google/api/annotations.proto
4 participants