Add support for java_library proto plugin in bp2build

Test: Added unit test and CI

Bug: 303064670
Change-Id: Idb96ac322aafcb6789ea2002b84a6905d5ec488f
This commit is contained in:
Zi Wang 2023-10-03 09:58:34 -07:00
parent 0b5a877f21
commit dbaf6a9dd0
3 changed files with 52 additions and 0 deletions

View file

@ -994,6 +994,7 @@ var (
"tradefed-result-interfaces", "tradefed-result-interfaces",
"tradefed-device-build-interfaces", "tradefed-device-build-interfaces",
"tradefed-invocation-interfaces", "tradefed-invocation-interfaces",
"tradefed-lib-core",
} }
Bp2buildModuleTypeAlwaysConvertList = []string{ Bp2buildModuleTypeAlwaysConvertList = []string{

View file

@ -193,3 +193,46 @@ java_library_static {
}, },
}) })
} }
func TestJavaProtoPlugin(t *testing.T) {
runJavaProtoTestCase(t, Bp2buildTestCase{
Description: "java_library proto plugin",
StubbedBuildDefinitions: []string{"protoc-gen-test-plugin"},
Blueprint: `java_library_static {
name: "java-protos",
srcs: ["a.proto"],
proto: {
plugin: "test-plugin",
},
sdk_version: "current",
}
java_library_static {
name: "protoc-gen-test-plugin",
}
`,
ExpectedBazelTargets: []string{
MakeBazelTarget("proto_library", "java-protos_proto", AttrNameToString{
"srcs": `["a.proto"]`,
}),
MakeBazelTarget(
"java_lite_proto_library",
"java-protos_java_proto_lite",
AttrNameToString{
"deps": `[":java-protos_proto"]`,
"plugin": `":protoc-gen-test-plugin"`,
"sdk_version": `"current"`,
}),
MakeBazelTarget("java_library", "java-protos", AttrNameToString{
"exports": `[":java-protos_java_proto_lite"]`,
"sdk_version": `"current"`,
}),
MakeNeverlinkDuplicateTargetWithAttrs(
"java_library",
"java-protos",
AttrNameToString{
"sdk_version": `"current"`,
}),
},
})
}

View file

@ -159,6 +159,8 @@ type protoAttributes struct {
Sdk_version bazel.StringAttribute Sdk_version bazel.StringAttribute
Java_version bazel.StringAttribute Java_version bazel.StringAttribute
Plugin bazel.LabelAttribute
} }
func bp2buildProto(ctx android.Bp2buildMutatorContext, m *Module, protoSrcs bazel.LabelListAttribute, AdditionalProtoDeps bazel.LabelListAttribute) *bazel.Label { func bp2buildProto(ctx android.Bp2buildMutatorContext, m *Module, protoSrcs bazel.LabelListAttribute, AdditionalProtoDeps bazel.LabelListAttribute) *bazel.Label {
@ -189,12 +191,18 @@ func bp2buildProto(ctx android.Bp2buildMutatorContext, m *Module, protoSrcs baze
ctx.PropertyErrorf("proto.type", "cannot handle conversion at this time: %q", typ) ctx.PropertyErrorf("proto.type", "cannot handle conversion at this time: %q", typ)
} }
plugin := bazel.LabelAttribute{}
if m.protoProperties.Proto.Plugin != nil {
plugin.SetValue(android.BazelLabelForModuleDepSingle(ctx, "protoc-gen-"+*m.protoProperties.Proto.Plugin))
}
protoAttrs := &protoAttributes{ protoAttrs := &protoAttributes{
Deps: bazel.MakeLabelListAttribute(protoInfo.Proto_libs), Deps: bazel.MakeLabelListAttribute(protoInfo.Proto_libs),
Transitive_deps: bazel.MakeLabelListAttribute(protoInfo.Transitive_proto_libs), Transitive_deps: bazel.MakeLabelListAttribute(protoInfo.Transitive_proto_libs),
Additional_proto_deps: AdditionalProtoDeps, Additional_proto_deps: AdditionalProtoDeps,
Java_version: bazel.StringAttribute{Value: m.properties.Java_version}, Java_version: bazel.StringAttribute{Value: m.properties.Java_version},
Sdk_version: bazel.StringAttribute{Value: m.deviceProperties.Sdk_version}, Sdk_version: bazel.StringAttribute{Value: m.deviceProperties.Sdk_version},
Plugin: plugin,
} }
name := m.Name() + suffix name := m.Name() + suffix