rust: Fix GRPC generator invocation
When using the grpc generator, the plugin expects to also have access to the protobuf generator. This patch ensures that aprotoc will use the Soong copy of the protobuf generator, rather than trying to use a locally installed version from PATH. Test: m nothing Change-Id: I26da4d18c97017da7d8cd9515a07a2b7b2575342
This commit is contained in:
parent
b0a713acf9
commit
5819e58fdc
|
@ -55,17 +55,17 @@ type protobufDecorator struct {
|
||||||
|
|
||||||
func (proto *protobufDecorator) GenerateSource(ctx ModuleContext, deps PathDeps) android.Path {
|
func (proto *protobufDecorator) GenerateSource(ctx ModuleContext, deps PathDeps) android.Path {
|
||||||
var protoFlags android.ProtoFlags
|
var protoFlags android.ProtoFlags
|
||||||
var pluginPath android.Path
|
var pluginPaths android.Paths
|
||||||
|
|
||||||
protoFlags.OutTypeFlag = "--rust_out"
|
protoFlags.OutTypeFlag = "--rust_out"
|
||||||
outDir := android.PathForModuleOut(ctx)
|
outDir := android.PathForModuleOut(ctx)
|
||||||
|
|
||||||
pluginPath, protoFlags = proto.setupPlugin(ctx, protoFlags, outDir)
|
pluginPaths, protoFlags = proto.setupPlugin(ctx, protoFlags, outDir)
|
||||||
|
|
||||||
protoFlags.Flags = append(protoFlags.Flags, defaultProtobufFlags...)
|
protoFlags.Flags = append(protoFlags.Flags, defaultProtobufFlags...)
|
||||||
protoFlags.Flags = append(protoFlags.Flags, proto.Properties.Proto_flags...)
|
protoFlags.Flags = append(protoFlags.Flags, proto.Properties.Proto_flags...)
|
||||||
|
|
||||||
protoFlags.Deps = append(protoFlags.Deps, pluginPath)
|
protoFlags.Deps = append(protoFlags.Deps, pluginPaths...)
|
||||||
|
|
||||||
protoFile := android.OptionalPathForModuleSrc(ctx, proto.Properties.Proto)
|
protoFile := android.OptionalPathForModuleSrc(ctx, proto.Properties.Proto)
|
||||||
if !protoFile.Valid() {
|
if !protoFile.Valid() {
|
||||||
|
@ -90,21 +90,25 @@ func (proto *protobufDecorator) GenerateSource(ctx ModuleContext, deps PathDeps)
|
||||||
return modFile
|
return modFile
|
||||||
}
|
}
|
||||||
|
|
||||||
func (proto *protobufDecorator) setupPlugin(ctx ModuleContext, protoFlags android.ProtoFlags, outDir android.ModuleOutPath) (android.Path, android.ProtoFlags) {
|
func (proto *protobufDecorator) setupPlugin(ctx ModuleContext, protoFlags android.ProtoFlags, outDir android.ModuleOutPath) (android.Paths, android.ProtoFlags) {
|
||||||
var pluginPath android.Path
|
pluginPaths := []android.Path{}
|
||||||
|
|
||||||
if proto.plugin == Protobuf {
|
if proto.plugin == Protobuf {
|
||||||
pluginPath = ctx.Config().HostToolPath(ctx, "protoc-gen-rust")
|
pluginPath := ctx.Config().HostToolPath(ctx, "protoc-gen-rust")
|
||||||
|
pluginPaths = append(pluginPaths, pluginPath)
|
||||||
protoFlags.Flags = append(protoFlags.Flags, "--plugin="+pluginPath.String())
|
protoFlags.Flags = append(protoFlags.Flags, "--plugin="+pluginPath.String())
|
||||||
} else if proto.plugin == Grpc {
|
} else if proto.plugin == Grpc {
|
||||||
pluginPath = ctx.Config().HostToolPath(ctx, "grpc_rust_plugin")
|
grpcPath := ctx.Config().HostToolPath(ctx, "grpc_rust_plugin")
|
||||||
|
protobufPath := ctx.Config().HostToolPath(ctx, "protoc-gen-rust")
|
||||||
|
pluginPaths = append(pluginPaths, grpcPath, protobufPath)
|
||||||
protoFlags.Flags = append(protoFlags.Flags, "--grpc_out="+outDir.String())
|
protoFlags.Flags = append(protoFlags.Flags, "--grpc_out="+outDir.String())
|
||||||
protoFlags.Flags = append(protoFlags.Flags, "--plugin=protoc-gen-grpc="+pluginPath.String())
|
protoFlags.Flags = append(protoFlags.Flags, "--plugin=protoc-gen-grpc="+grpcPath.String())
|
||||||
|
protoFlags.Flags = append(protoFlags.Flags, "--plugin=protoc-gen-rust="+protobufPath.String())
|
||||||
} else {
|
} else {
|
||||||
ctx.ModuleErrorf("Unknown protobuf plugin type requested")
|
ctx.ModuleErrorf("Unknown protobuf plugin type requested")
|
||||||
}
|
}
|
||||||
|
|
||||||
return pluginPath, protoFlags
|
return pluginPaths, protoFlags
|
||||||
}
|
}
|
||||||
|
|
||||||
func (proto *protobufDecorator) SourceProviderProps() []interface{} {
|
func (proto *protobufDecorator) SourceProviderProps() []interface{} {
|
||||||
|
|
Loading…
Reference in New Issue