From 82fb94e91e907bc3338a136ade686219af88a0d1 Mon Sep 17 00:00:00 2001 From: Alix Date: Wed, 26 Oct 2022 20:40:18 +0000 Subject: [PATCH] support libs for android_library adds support for *-> android_library and android_library->* edges Change-Id: I41d4e1d1b8106a17e67951d47e67b59ef3170d17 Test: manually inspected build files for libWallpaperPicker & android-suppor-v4 --- bp2build/aar_conversion_test.go | 1 + bp2build/java_library_conversion_test.go | 3 +++ java/aar.go | 25 +++++++++++++++++++----- java/java.go | 2 +- 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/bp2build/aar_conversion_test.go b/bp2build/aar_conversion_test.go index ff8269420..df7cced5d 100644 --- a/bp2build/aar_conversion_test.go +++ b/bp2build/aar_conversion_test.go @@ -68,6 +68,7 @@ android_library { "exports": `[":static_lib_dep"]`, "javacopts": `["-source 1.7 -target 1.7"]`, }), + MakeNeverlinkDuplicateTarget("android_library", "TestLib"), }}) } diff --git a/bp2build/java_library_conversion_test.go b/bp2build/java_library_conversion_test.go index e37fa627a..2ea4c7be0 100644 --- a/bp2build/java_library_conversion_test.go +++ b/bp2build/java_library_conversion_test.go @@ -585,6 +585,7 @@ android_library { "manifest": `"manifest/AndroidManifest.xml"`, "resource_files": `[]`, }), + MakeNeverlinkDuplicateTarget("android_library", "TestLib"), }}) } @@ -628,6 +629,7 @@ android_library { "manifest": `"manifest/AndroidManifest.xml"`, "resource_files": `[]`, }), + MakeNeverlinkDuplicateTarget("android_library", "TestLib"), }}) } @@ -665,6 +667,7 @@ android_library { "manifest": `"manifest/AndroidManifest.xml"`, "resource_files": `[]`, }), + MakeNeverlinkDuplicateTarget("android_library", "TestLib"), }}) } diff --git a/java/aar.go b/java/aar.go index ccd68cd6e..f4a2ff287 100644 --- a/java/aar.go +++ b/java/aar.go @@ -1054,12 +1054,15 @@ func (a *AndroidLibrary) ConvertWithBp2build(ctx android.TopDownMutatorContext) ctx.ModuleErrorf("Module has direct dependencies but no sources. Bazel will not allow this.") } + name := a.Name() + props := bazel.BazelTargetModuleProperties{ + Rule_class: "android_library", + Bzl_load_location: "@rules_android//rules:rules.bzl", + } + ctx.CreateBazelTargetModule( - bazel.BazelTargetModuleProperties{ - Rule_class: "android_library", - Bzl_load_location: "@rules_android//rules:rules.bzl", - }, - android.CommonAttributes{Name: a.Name()}, + props, + android.CommonAttributes{Name: name}, &bazelAndroidLibrary{ &javaLibraryAttributes{ javaCommonAttributes: commonAttrs, @@ -1069,4 +1072,16 @@ func (a *AndroidLibrary) ConvertWithBp2build(ctx android.TopDownMutatorContext) a.convertAaptAttrsWithBp2Build(ctx), }, ) + + neverlink := true + ctx.CreateBazelTargetModule( + props, + android.CommonAttributes{Name: name + "-neverlink"}, + &bazelAndroidLibrary{ + javaLibraryAttributes: &javaLibraryAttributes{ + Neverlink: bazel.BoolAttribute{Value: &neverlink}, + Exports: bazel.MakeSingleLabelListAttribute(bazel.Label{Label: ":" + name}), + }, + }, + ) } diff --git a/java/java.go b/java/java.go index 275abbe35..22bcc03bf 100644 --- a/java/java.go +++ b/java/java.go @@ -2663,7 +2663,7 @@ func (m *Library) convertLibraryAttrsBp2Build(ctx android.TopDownMutatorContext) if m.properties.Libs != nil { // TODO 244210934 ALIX Check if this else statement breaks presubmits get rid of it if it doesn't - if strings.HasPrefix(ctx.ModuleType(), "java_binary") || strings.HasPrefix(ctx.ModuleType(), "java_library") { + if strings.HasPrefix(ctx.ModuleType(), "java_binary") || strings.HasPrefix(ctx.ModuleType(), "java_library") || ctx.ModuleType() == "android_library" { for _, d := range m.properties.Libs { neverlinkLabel := android.BazelLabelForModuleDepSingle(ctx, d) neverlinkLabel.Label = neverlinkLabel.Label + "-neverlink"