summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Zi Wang <mrziwang@google.com> 2023-10-03 09:58:34 -0700
committer Zi Wang <mrziwang@google.com> 2023-10-05 12:53:23 -0700
commitdbaf6a9dd09d69d3215fdcba2df99e10c64404c3 (patch)
tree00f6b51f7f0fc4566bb27ce0a2d09e58359b8170
parent0b5a877f21d514a0a6fe2773a381f2ce701cdda7 (diff)
Add support for java_library proto plugin in bp2build
Test: Added unit test and CI Bug: 303064670 Change-Id: Idb96ac322aafcb6789ea2002b84a6905d5ec488f
-rw-r--r--android/allowlists/allowlists.go1
-rw-r--r--bp2build/java_proto_conversion_test.go43
-rw-r--r--java/proto.go8
3 files changed, 52 insertions, 0 deletions
diff --git a/android/allowlists/allowlists.go b/android/allowlists/allowlists.go
index bcb98f7d1..ece68b2c1 100644
--- a/android/allowlists/allowlists.go
+++ b/android/allowlists/allowlists.go
@@ -994,6 +994,7 @@ var (
"tradefed-result-interfaces",
"tradefed-device-build-interfaces",
"tradefed-invocation-interfaces",
+ "tradefed-lib-core",
}
Bp2buildModuleTypeAlwaysConvertList = []string{
diff --git a/bp2build/java_proto_conversion_test.go b/bp2build/java_proto_conversion_test.go
index 4e96efe5e..cd8997838 100644
--- a/bp2build/java_proto_conversion_test.go
+++ b/bp2build/java_proto_conversion_test.go
@@ -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"`,
+ }),
+ },
+ })
+}
diff --git a/java/proto.go b/java/proto.go
index 48adadcc9..c88d3d7fc 100644
--- a/java/proto.go
+++ b/java/proto.go
@@ -159,6 +159,8 @@ type protoAttributes struct {
Sdk_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 {
@@ -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)
}
+ plugin := bazel.LabelAttribute{}
+ if m.protoProperties.Proto.Plugin != nil {
+ plugin.SetValue(android.BazelLabelForModuleDepSingle(ctx, "protoc-gen-"+*m.protoProperties.Proto.Plugin))
+ }
+
protoAttrs := &protoAttributes{
Deps: bazel.MakeLabelListAttribute(protoInfo.Proto_libs),
Transitive_deps: bazel.MakeLabelListAttribute(protoInfo.Transitive_proto_libs),
Additional_proto_deps: AdditionalProtoDeps,
Java_version: bazel.StringAttribute{Value: m.properties.Java_version},
Sdk_version: bazel.StringAttribute{Value: m.deviceProperties.Sdk_version},
+ Plugin: plugin,
}
name := m.Name() + suffix