Thanks Josh! I will have a look at proto_common and see what I can glean 
from it.

More generally, is there any guidance around how/whether proto codegen 
rules should use aspects? My current rule implementation does not use 
aspects at all if I'm understanding correctly - I'm just forming 
`--proto_path` / `-I` args to protoc based on the transitive_proto_paths of 
direct dep ProtoInfo (code 
<https://github.com/bduffany/protoc-gen-protobufjs/blob/45971791d8bdfa1431b13063372a0d53495a0407/rules.bzl#L39-L48>),
 
and it seems to work. Is there an advantage to using aspects?

Brandon

On Wednesday, April 19, 2023 at 11:09:23 AM UTC-4 [email protected] wrote:

> Hi Brandon,
>
> The proto compiler doesn't generally allow what you are asking for. It 
> always wants to see the full closure of .proto files.
>
> But if you are writing for Bazel, you shouldn't have to worry about any of 
> that. As long as you are on Bazel >=5.3, you can use proto_common to handle 
> most of the hard work for you when writing proto rules with aspects. 
> proto_common makes it easy to write rules that work like the built-in rules 
> cc_proto_library(), java_proto_library(), etc.
>
> There don't seem to be a lot of good documentation or examples for this 
> right now. You could take a look at my in-progress CL that migrates to 
> using proto_common: 
> https://github.com/protocolbuffers/upb/pull/1254/files#diff-6816023f8495e20887edd8410f0348dbf79b27761cd5cf44cbfa6f72389274af
>
> Josh
> On Tuesday, April 18, 2023 at 5:10:15 PM UTC-7 [email protected] wrote:
>
>> I'm writing a protoc plugin protoc-gen-protobufjs 
>> <https://github.com/bduffany/protoc-gen-protobufjs> that is intended as 
>> a faster version of protobufjs-cli and which is a better fit for Bazel.
>>
>> I have gotten it working, and am now trying to optimize the build rules a 
>> little bit. My understanding is that when compiling a proto file, protoc 
>> needs to locate all of the file's transitive dependencies, and gives an 
>> error if it can't find one of them.
>>
>> Please correct me if I'm wrong (I'm not a proto expert), but my 
>> understanding is that I just need to know about the directly imported 
>> protos so that I can tell whether a particular type reference is a message 
>> or an enum. So I am wondering if there is a way to tell protoc to not fail 
>> if it can't find an indirect import, and instead continue code generation 
>> anyway.
>>
>> Thanks!
>>
>> Brandon
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/protobuf/4768f144-37e6-463c-85f7-eb6c041c0eben%40googlegroups.com.

Reply via email to