By default, Gazelle will use use the ancient go_grpc compiler for generating Protobuf and gRPC bindings. What's inconvenient about that is that those bindings don't use the grpc.ServiceRegistrar interface that was added back in 2020:
Instead, it uses concrete type *grpc.Server. In Buildbarn I need to make use of the interface to support things like xDS, which grpc-go only offers via a different concrete server type.
In the past I never had to care about this, because I would regenerate these sources myself. Now that I want to remote-apis through bzlmod, this is less practical.
@bergsieker As you mentioned during the monthly meeting, you wanted people to give the bzlmod code a spin before pushing it into BCR. Here you go! ;-)
By default, Gazelle will use use the ancient go_grpc compiler for generating Protobuf and gRPC bindings. What's inconvenient about that is that those bindings don't use the grpc.ServiceRegistrar interface that was added back in 2020:
https://github.com/grpc/grpc-go/issues/3966
Instead, it uses concrete type *grpc.Server. In Buildbarn I need to make use of the interface to support things like xDS, which grpc-go only offers via a different concrete server type.
In the past I never had to care about this, because I would regenerate these sources myself. Now that I want to remote-apis through bzlmod, this is less practical.
@bergsieker As you mentioned during the monthly meeting, you wanted people to give the bzlmod code a spin before pushing it into BCR. Here you go! ;-)