From 5f83b491b4b14bf17b9dd7fbc3ec9d0b061190de Mon Sep 17 00:00:00 2001 From: Sam Delmerico Date: Mon, 28 Feb 2022 18:50:56 +0000 Subject: [PATCH 1/2] convert java_import_host with bp2build; enable jetifier Also, add java_imports that were blocked by jetifier binary. b/221082840 was blocking the build of jetifier which these java_imports depended on. That bug is now resolved, so we can unblock these targets. Bug: 220168131 Test: b build //packages/apps/Car/libs/car-ui-lib/car-ui-androidx/... Test: build/bazel/ci/bp2build.sh Change-Id: I89a32bde30c133a44aeb7826afa11d4140433f5d --- android/bazel.go | 23 +++++++++++------------ java/java.go | 1 + 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/android/bazel.go b/android/bazel.go index c3f3029b6..372fe8c6e 100644 --- a/android/bazel.go +++ b/android/bazel.go @@ -357,6 +357,7 @@ var ( "packages/services/Car/tests/SampleRearViewCamera": Bp2BuildDefaultTrue, "prebuilts/clang/host/linux-x86": Bp2BuildDefaultTrueRecursively, "prebuilts/tools/common/m2": Bp2BuildDefaultTrue, + "prebuilts/sdk/tools/jetifier/jetifier-standalone": Bp2BuildDefaultTrue, "system/apex": Bp2BuildDefaultFalse, // TODO(b/207466993): flaky failures "system/apex/proto": Bp2BuildDefaultTrueRecursively, "system/apex/libs": Bp2BuildDefaultTrueRecursively, @@ -415,12 +416,21 @@ var ( //system/extras/verity/fec "fec", + + //packages/apps/Car/libs/car-ui-lib/car-ui-androidx + // genrule dependencies for java_imports + "car-ui-androidx-annotation-nodeps", + "car-ui-androidx-collection-nodeps", + "car-ui-androidx-core-common-nodeps", + "car-ui-androidx-lifecycle-common-nodeps", + "car-ui-androidx-constraintlayout-solver-nodeps", } // Per-module-type allowlist to always opt modules in to both bp2build and mixed builds // when they have the same type as one listed. bp2buildModuleTypeAlwaysConvertList = []string{ "java_import", + "java_import_host", } // Per-module denylist to always opt modules out of both bp2build and mixed builds. @@ -557,18 +567,7 @@ var ( "art-script", // depends on unconverted modules: dalvikvm, dex2oat "dex2oat-script", // depends on unconverted modules: dex2oat - // TODO(b/221082840) convert java_imports in //packages/apps/Car/libs/car-ui-lib/... - "prebuilt_car-ui-androidx-annotation", - "prebuilt_car-ui-androidx-annotation-nodeps", - "prebuilt_car-ui-androidx-collection", - "prebuilt_car-ui-androidx-collection-nodeps", - "prebuilt_car-ui-androidx-core-common", - "prebuilt_car-ui-androidx-core-common-nodeps", - "prebuilt_car-ui-androidx-lifecycle-common", - "prebuilt_car-ui-androidx-lifecycle-common-nodeps", - "prebuilt_car-ui-androidx-constraintlayout-solver", - "prebuilt_car-ui-androidx-constraintlayout-solver-nodeps", - + "prebuilt_car-ui-androidx-core-common", // b/224773339, genrule dependency creates an .aar, not a .jar "prebuilt_art-module-host-exports_okhttp-norepackage@current", // aosp/1999250, needs Jars (arch variant) "prebuilt_conscrypt-unbundled", // aosp/1999250, needs Jars (arch variant) "prebuilt_conscrypt-module-host-exports_conscrypt-unbundled@current", // aosp/1999250, needs Jars (arch variant) diff --git a/java/java.go b/java/java.go index 8ae14803f..831d60731 100644 --- a/java/java.go +++ b/java/java.go @@ -1725,6 +1725,7 @@ func ImportFactoryHost() android.Module { android.InitPrebuiltModule(module, &module.properties.Jars) android.InitApexModule(module) + android.InitBazelModule(module) InitJavaModule(module, android.HostSupported) return module } From 77267c7d9c998ebe8b651bfd0e82edbca21d16eb Mon Sep 17 00:00:00 2001 From: Sam Delmerico Date: Fri, 18 Mar 2022 14:11:07 +0000 Subject: [PATCH 2/2] add plugins to javaLibraryAttributes Test: go test ./bp2build Change-Id: I8e4c3f373c62c60ea5013cd8c585915a366c1f81 --- bp2build/java_library_conversion_test.go | 31 ++++++++++++++++++++++-- java/java.go | 4 +++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/bp2build/java_library_conversion_test.go b/bp2build/java_library_conversion_test.go index cf811ed67..2f6bce20f 100644 --- a/bp2build/java_library_conversion_test.go +++ b/bp2build/java_library_conversion_test.go @@ -22,11 +22,15 @@ import ( "android/soong/java" ) -func runJavaLibraryTestCase(t *testing.T, tc bp2buildTestCase) { +func runJavaLibraryTestCaseWithRegistrationCtxFunc(t *testing.T, tc bp2buildTestCase, registrationCtxFunc func(ctx android.RegistrationContext)) { t.Helper() (&tc).moduleTypeUnderTest = "java_library" (&tc).moduleTypeUnderTestFactory = java.LibraryFactory - runBp2BuildTestCase(t, func(ctx android.RegistrationContext) {}, tc) + runBp2BuildTestCase(t, registrationCtxFunc, tc) +} + +func runJavaLibraryTestCase(t *testing.T, tc bp2buildTestCase) { + runJavaLibraryTestCaseWithRegistrationCtxFunc(t, tc, func(ctx android.RegistrationContext) {}) } func TestJavaLibrary(t *testing.T) { @@ -129,3 +133,26 @@ java_library { expectedBazelTargets: []string{}, }) } + +func TestJavaLibraryPlugins(t *testing.T) { + runJavaLibraryTestCaseWithRegistrationCtxFunc(t, bp2buildTestCase{ + blueprint: `java_library { + name: "java-lib-1", + plugins: ["java-plugin-1"], + bazel_module: { bp2build_available: true }, +} + +java_plugin { + name: "java-plugin-1", + srcs: ["a.java"], + bazel_module: { bp2build_available: false }, +}`, + expectedBazelTargets: []string{ + makeBazelTarget("java_library", "java-lib-1", attrNameToString{ + "plugins": `[":java-plugin-1"]`, + }), + }, + }, func(ctx android.RegistrationContext) { + ctx.RegisterModuleType("java_plugin", java.PluginFactory) + }) +} diff --git a/java/java.go b/java/java.go index 831d60731..1b6e559b3 100644 --- a/java/java.go +++ b/java/java.go @@ -2026,6 +2026,7 @@ func addCLCFromDep(ctx android.ModuleContext, depModule android.Module, type javaCommonAttributes struct { Srcs bazel.LabelListAttribute + Plugins bazel.LabelListAttribute Javacopts bazel.StringListAttribute } @@ -2061,6 +2062,9 @@ func (m *Library) convertLibraryAttrsBp2Build(ctx android.TopDownMutatorContext) commonAttrs := &javaCommonAttributes{ Srcs: srcPartitions[javaSrcPartition], + Plugins: bazel.MakeLabelListAttribute( + android.BazelLabelForModuleDeps(ctx, m.properties.Plugins), + ), } if m.properties.Javacflags != nil {