From eb711b9f7c96db64bbf71fc1505748287ca3bf49 Mon Sep 17 00:00:00 2001 From: Romain Jobredeaux Date: Mon, 3 Apr 2023 22:53:34 -0400 Subject: [PATCH] Support arch variants in java's StaticLibs in bp2build Test: Presubmits Bug: 276901800 Change-Id: I6058a726833ef10a5f470946e2d265b20fa547ce --- bp2build/java_library_conversion_test.go | 18 ++++++++++++++++-- java/java.go | 17 ++++++++++++----- 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/bp2build/java_library_conversion_test.go b/bp2build/java_library_conversion_test.go index 69d0db91c..683ee27cc 100644 --- a/bp2build/java_library_conversion_test.go +++ b/bp2build/java_library_conversion_test.go @@ -740,7 +740,7 @@ func TestJavaLibraryKotlinCommonSrcs(t *testing.T) { }) } -func TestJavaLibraryArchVariantLibs(t *testing.T) { +func TestJavaLibraryArchVariantDeps(t *testing.T) { runJavaLibraryTestCase(t, Bp2buildTestCase{ Description: "java_library with arch variant libs", Blueprint: `java_library { @@ -750,6 +750,7 @@ func TestJavaLibraryArchVariantLibs(t *testing.T) { target: { android: { libs: ["java-lib-3"], + static_libs: ["java-lib-4"], }, }, bazel_module: { bp2build_available: true }, @@ -762,12 +763,23 @@ func TestJavaLibraryArchVariantLibs(t *testing.T) { java_library{ name: "java-lib-3", } + + java_library{ + name: "java-lib-4", +} `, ExpectedBazelTargets: []string{ MakeBazelTarget("java_library", "java-lib-1", AttrNameToString{ "srcs": `["a.java"]`, + "exports": `select({ + "//build/bazel/platforms/os:android": [":java-lib-4"], + "//conditions:default": [], + })`, "deps": `[":java-lib-2-neverlink"] + select({ - "//build/bazel/platforms/os:android": [":java-lib-3-neverlink"], + "//build/bazel/platforms/os:android": [ + ":java-lib-3-neverlink", + ":java-lib-4", + ], "//conditions:default": [], })`, }), @@ -776,6 +788,8 @@ func TestJavaLibraryArchVariantLibs(t *testing.T) { MakeNeverlinkDuplicateTarget("java_library", "java-lib-2"), MakeBazelTarget("java_library", "java-lib-3", AttrNameToString{}), MakeNeverlinkDuplicateTarget("java_library", "java-lib-3"), + MakeBazelTarget("java_library", "java-lib-4", AttrNameToString{}), + MakeNeverlinkDuplicateTarget("java_library", "java-lib-4"), }, }) } diff --git a/java/java.go b/java/java.go index 97d55146c..403f503eb 100644 --- a/java/java.go +++ b/java/java.go @@ -2905,10 +2905,6 @@ func (m *Library) convertLibraryAttrsBp2Build(ctx android.TopDownMutatorContext) } } - if m.properties.Static_libs != nil { - staticDeps.Append(android.BazelLabelForModuleDeps(ctx, android.LastUniqueStrings(android.CopyOf(m.properties.Static_libs)))) - } - protoDepLabel := bp2buildProto(ctx, &m.Module, srcPartitions[protoSrcPartition]) // Soong does not differentiate between a java_library and the Bazel equivalent of // a java_proto_library + proto_library pair. Instead, in Soong proto sources are @@ -2920,7 +2916,18 @@ func (m *Library) convertLibraryAttrsBp2Build(ctx android.TopDownMutatorContext) depLabels := &javaDependencyLabels{} depLabels.Deps = deps - depLabels.StaticDeps = bazel.MakeLabelListAttribute(staticDeps) + + for axis, configToProps := range archVariantProps { + for config, _props := range configToProps { + if archProps, ok := _props.(*CommonProperties); ok { + archStaticLibs := android.BazelLabelForModuleDeps( + ctx, + android.LastUniqueStrings(android.CopyOf(archProps.Static_libs))) + depLabels.StaticDeps.SetSelectValue(axis, config, archStaticLibs) + } + } + } + depLabels.StaticDeps.Value.Append(staticDeps) hasKotlin := !kotlinSrcs.IsEmpty() commonAttrs.kotlinAttributes = &kotlinAttributes{