From 9dfb139b6d0bffe19a4ee705622468c3b404e63e Mon Sep 17 00:00:00 2001 From: Sam Delmerico Date: Thu, 10 Feb 2022 21:11:59 +0000 Subject: [PATCH] convert android_app certificate property, bp2build The android_app certificate property can be converted to the @android_rules debug_signing_keys attribute in Bazel after converting the .pk8/.pem key pairs to a JKS keystore in Starlark. Test: b build -s //frameworks/base/tests/appwidgets/AppWidgetHostTest and verify includes SignApk action with generated keystore Bug: 194133023 Change-Id: I2c4276f94a7856fc68a7674e89742f887dca31b4 --- android/bazel.go | 3 +++ java/app.go | 29 +++++++++++++++++++++++------ 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/android/bazel.go b/android/bazel.go index 4a96918a3..35f56b19a 100644 --- a/android/bazel.go +++ b/android/bazel.go @@ -227,6 +227,7 @@ var ( "prebuilts/gcc":/* recursive = */ true, "prebuilts/build-tools":/* recursive = */ false, + "prebuilts/jdk/jdk11":/* recursive = */ false, "prebuilts/sdk":/* recursive = */ false, "prebuilts/sdk/current/extras/app-toolkit":/* recursive = */ false, "prebuilts/sdk/current/support":/* recursive = */ false, @@ -245,6 +246,7 @@ var ( "build/bazel/examples/soong_config_variables": Bp2BuildDefaultTrueRecursively, "build/bazel/examples/apex/minimal": Bp2BuildDefaultTrueRecursively, "build/make/tools/signapk": Bp2BuildDefaultTrue, + "build/make/target/product/security": Bp2BuildDefaultTrue, "build/soong": Bp2BuildDefaultTrue, "build/soong/cc/libbuildversion": Bp2BuildDefaultTrue, // Skip tests subdir "build/soong/cc/ndkstubgen": Bp2BuildDefaultTrue, @@ -325,6 +327,7 @@ var ( "external/zstd": Bp2BuildDefaultTrueRecursively, "frameworks/base/media/tests/MediaDump": Bp2BuildDefaultTrue, "frameworks/base/startop/apps/test": Bp2BuildDefaultTrue, + "frameworks/base/tests/appwidgets/AppWidgetHostTest": Bp2BuildDefaultTrueRecursively, "frameworks/native/libs/adbd_auth": Bp2BuildDefaultTrueRecursively, "frameworks/native/opengl/tests/gl2_cameraeye": Bp2BuildDefaultTrue, "frameworks/native/opengl/tests/gl2_java": Bp2BuildDefaultTrue, diff --git a/java/app.go b/java/app.go index e4432ff4b..96fd61ad9 100755 --- a/java/app.go +++ b/java/app.go @@ -1443,7 +1443,7 @@ func androidAppCertificateBp2Build(ctx android.TopDownMutatorContext, module *An props := bazel.BazelTargetModuleProperties{ Rule_class: "android_app_certificate", - Bzl_load_location: "//build/bazel/rules:android_app_certificate.bzl", + Bzl_load_location: "//build/bazel/rules/android:android_app_certificate.bzl", } ctx.CreateBazelTargetModule(props, android.CommonAttributes{Name: module.Name()}, attrs) @@ -1451,9 +1451,11 @@ func androidAppCertificateBp2Build(ctx android.TopDownMutatorContext, module *An type bazelAndroidAppAttributes struct { *javaLibraryAttributes - Manifest bazel.Label - Custom_package *string - Resource_files bazel.LabelListAttribute + Manifest bazel.Label + Custom_package *string + Resource_files bazel.LabelListAttribute + Certificate *bazel.Label + Certificate_name *string } // ConvertWithBp2build is used to convert android_app to Bazel. @@ -1470,15 +1472,30 @@ func (a *AndroidApp) ConvertWithBp2build(ctx android.TopDownMutatorContext) { resourceFiles.Includes = append(resourceFiles.Includes, files...) } + var certificate *bazel.Label + certificateNamePtr := a.overridableAppProperties.Certificate + certificateName := proptools.StringDefault(certificateNamePtr, "") + certModule := android.SrcIsModule(certificateName) + if certModule != "" { + c := android.BazelLabelForModuleDepSingle(ctx, certificateName) + certificate = &c + certificateNamePtr = nil + } + attrs := &bazelAndroidAppAttributes{ libAttrs, android.BazelLabelForModuleSrcSingle(ctx, manifest), // TODO(b/209576404): handle package name override by product variable PRODUCT_MANIFEST_PACKAGE_NAME_OVERRIDES a.overridableAppProperties.Package_name, bazel.MakeLabelListAttribute(resourceFiles), + certificate, + certificateNamePtr, + } + + props := bazel.BazelTargetModuleProperties{ + Rule_class: "android_binary", + Bzl_load_location: "//build/bazel/rules/android:android_binary.bzl", } - props := bazel.BazelTargetModuleProperties{Rule_class: "android_binary", - Bzl_load_location: "@rules_android//rules:rules.bzl"} ctx.CreateBazelTargetModule(props, android.CommonAttributes{Name: a.Name()}, attrs)