Loading apex/apex.go +13 −11 Original line number Diff line number Diff line Loading @@ -2831,7 +2831,7 @@ func (o *OverrideApex) ConvertWithBp2build(ctx android.TopDownMutatorContext) { if !baseModuleIsApex { panic(fmt.Errorf("Base module is not apex module: %s", baseApexModuleName)) } attrs, props := convertWithBp2build(a, ctx) attrs, props, commonAttrs := convertWithBp2build(a, ctx) // We just want the name, not module reference. baseApexName := strings.TrimPrefix(baseApexModuleName, ":") Loading Loading @@ -2905,7 +2905,9 @@ func (o *OverrideApex) ConvertWithBp2build(ctx android.TopDownMutatorContext) { } } ctx.CreateBazelTargetModule(props, android.CommonAttributes{Name: o.Name()}, &attrs) commonAttrs.Name = o.Name() ctx.CreateBazelTargetModule(props, commonAttrs, &attrs) } /////////////////////////////////////////////////////////////////////////////////////////////////// Loading Loading @@ -3549,17 +3551,12 @@ func (a *apexBundle) ConvertWithBp2build(ctx android.TopDownMutatorContext) { return } attrs, props := convertWithBp2build(a, ctx) commonAttrs := android.CommonAttributes{ Name: a.Name(), } if a.testApex { commonAttrs.Testonly = proptools.BoolPtr(a.testApex) } attrs, props, commonAttrs := convertWithBp2build(a, ctx) commonAttrs.Name = a.Name() ctx.CreateBazelTargetModule(props, commonAttrs, &attrs) } func convertWithBp2build(a *apexBundle, ctx android.TopDownMutatorContext) (bazelApexBundleAttributes, bazel.BazelTargetModuleProperties) { func convertWithBp2build(a *apexBundle, ctx android.TopDownMutatorContext) (bazelApexBundleAttributes, bazel.BazelTargetModuleProperties, android.CommonAttributes) { var manifestLabelAttribute bazel.LabelAttribute manifestLabelAttribute.SetValue(android.BazelLabelForModuleSrcSingle(ctx, proptools.StringDefault(a.properties.Manifest, "apex_manifest.json"))) Loading Loading @@ -3687,7 +3684,12 @@ func convertWithBp2build(a *apexBundle, ctx android.TopDownMutatorContext) (baze Bzl_load_location: "//build/bazel/rules/apex:apex.bzl", } return attrs, props commonAttrs := android.CommonAttributes{} if a.testApex { commonAttrs.Testonly = proptools.BoolPtr(true) } return attrs, props, commonAttrs } // The following conversions are based on this table where the rows are the compile_multilib Loading bp2build/apex_conversion_test.go +120 −0 Original line number Diff line number Diff line Loading @@ -58,6 +58,7 @@ func registerOverrideApexModuleTypes(ctx android.RegistrationContext) { ctx.RegisterModuleType("cc_binary", cc.BinaryFactory) ctx.RegisterModuleType("cc_library", cc.LibraryFactory) ctx.RegisterModuleType("apex_key", apex.ApexKeyFactory) ctx.RegisterModuleType("apex_test", apex.TestApexBundleFactory) ctx.RegisterModuleType("android_app_certificate", java.AndroidAppCertificateFactory) ctx.RegisterModuleType("filegroup", android.FileGroupFactory) ctx.RegisterModuleType("apex", apex.BundleFactory) Loading Loading @@ -706,6 +707,125 @@ override_apex { }}) } func TestOverrideApexTest(t *testing.T) { runOverrideApexTestCase(t, Bp2buildTestCase{ Description: "override_apex", ModuleTypeUnderTest: "override_apex", ModuleTypeUnderTestFactory: apex.OverrideApexFactory, Filesystem: map[string]string{}, Blueprint: ` apex_key { name: "com.android.apogee.key", public_key: "com.android.apogee.avbpubkey", private_key: "com.android.apogee.pem", bazel_module: { bp2build_available: false }, } android_app_certificate { name: "com.android.apogee.certificate", certificate: "com.android.apogee", bazel_module: { bp2build_available: false }, } cc_library { name: "native_shared_lib_1", bazel_module: { bp2build_available: false }, } prebuilt_etc { name: "prebuilt_1", bazel_module: { bp2build_available: false }, } filegroup { name: "com.android.apogee-file_contexts", srcs: [ "com.android.apogee-file_contexts", ], bazel_module: { bp2build_available: false }, } cc_binary { name: "cc_binary_1", bazel_module: { bp2build_available: false } } sh_binary { name: "sh_binary_2", bazel_module: { bp2build_available: false } } apex_test { name: "com.android.apogee", manifest: "apogee_manifest.json", androidManifest: "ApogeeAndroidManifest.xml", file_contexts: ":com.android.apogee-file_contexts", min_sdk_version: "29", key: "com.android.apogee.key", certificate: ":com.android.apogee.certificate", updatable: false, installable: false, compressible: false, native_shared_libs: [ "native_shared_lib_1", ], binaries: [ "cc_binary_1", "sh_binary_2", ], prebuilts: [ "prebuilt_1", ], bazel_module: { bp2build_available: false }, } apex_key { name: "com.google.android.apogee.key", public_key: "com.google.android.apogee.avbpubkey", private_key: "com.google.android.apogee.pem", bazel_module: { bp2build_available: false }, } android_app_certificate { name: "com.google.android.apogee.certificate", certificate: "com.google.android.apogee", bazel_module: { bp2build_available: false }, } override_apex { name: "com.google.android.apogee", base: ":com.android.apogee", key: "com.google.android.apogee.key", certificate: ":com.google.android.apogee.certificate", prebuilts: [], compressible: true, } `, ExpectedBazelTargets: []string{ MakeBazelTarget("apex", "com.google.android.apogee", AttrNameToString{ "android_manifest": `"ApogeeAndroidManifest.xml"`, "base_apex_name": `"com.android.apogee"`, "binaries": `[ ":cc_binary_1", ":sh_binary_2", ]`, "certificate": `":com.google.android.apogee.certificate"`, "file_contexts": `":com.android.apogee-file_contexts"`, "installable": "False", "key": `":com.google.android.apogee.key"`, "manifest": `"apogee_manifest.json"`, "min_sdk_version": `"29"`, "native_shared_libs_32": `select({ "//build/bazel/platforms/arch:arm": [":native_shared_lib_1"], "//build/bazel/platforms/arch:x86": [":native_shared_lib_1"], "//conditions:default": [], })`, "native_shared_libs_64": `select({ "//build/bazel/platforms/arch:arm64": [":native_shared_lib_1"], "//build/bazel/platforms/arch:x86_64": [":native_shared_lib_1"], "//conditions:default": [], })`, "testonly": "True", "prebuilts": `[]`, "updatable": "False", "compressible": "True", }), }}) } func TestApexBundleSimple_manifestIsEmpty_baseApexOverrideApexInDifferentAndroidBp(t *testing.T) { runOverrideApexTestCase(t, Bp2buildTestCase{ Description: "override_apex - manifest of base apex is empty, base apex and override_apex is in different Android.bp", Loading Loading
apex/apex.go +13 −11 Original line number Diff line number Diff line Loading @@ -2831,7 +2831,7 @@ func (o *OverrideApex) ConvertWithBp2build(ctx android.TopDownMutatorContext) { if !baseModuleIsApex { panic(fmt.Errorf("Base module is not apex module: %s", baseApexModuleName)) } attrs, props := convertWithBp2build(a, ctx) attrs, props, commonAttrs := convertWithBp2build(a, ctx) // We just want the name, not module reference. baseApexName := strings.TrimPrefix(baseApexModuleName, ":") Loading Loading @@ -2905,7 +2905,9 @@ func (o *OverrideApex) ConvertWithBp2build(ctx android.TopDownMutatorContext) { } } ctx.CreateBazelTargetModule(props, android.CommonAttributes{Name: o.Name()}, &attrs) commonAttrs.Name = o.Name() ctx.CreateBazelTargetModule(props, commonAttrs, &attrs) } /////////////////////////////////////////////////////////////////////////////////////////////////// Loading Loading @@ -3549,17 +3551,12 @@ func (a *apexBundle) ConvertWithBp2build(ctx android.TopDownMutatorContext) { return } attrs, props := convertWithBp2build(a, ctx) commonAttrs := android.CommonAttributes{ Name: a.Name(), } if a.testApex { commonAttrs.Testonly = proptools.BoolPtr(a.testApex) } attrs, props, commonAttrs := convertWithBp2build(a, ctx) commonAttrs.Name = a.Name() ctx.CreateBazelTargetModule(props, commonAttrs, &attrs) } func convertWithBp2build(a *apexBundle, ctx android.TopDownMutatorContext) (bazelApexBundleAttributes, bazel.BazelTargetModuleProperties) { func convertWithBp2build(a *apexBundle, ctx android.TopDownMutatorContext) (bazelApexBundleAttributes, bazel.BazelTargetModuleProperties, android.CommonAttributes) { var manifestLabelAttribute bazel.LabelAttribute manifestLabelAttribute.SetValue(android.BazelLabelForModuleSrcSingle(ctx, proptools.StringDefault(a.properties.Manifest, "apex_manifest.json"))) Loading Loading @@ -3687,7 +3684,12 @@ func convertWithBp2build(a *apexBundle, ctx android.TopDownMutatorContext) (baze Bzl_load_location: "//build/bazel/rules/apex:apex.bzl", } return attrs, props commonAttrs := android.CommonAttributes{} if a.testApex { commonAttrs.Testonly = proptools.BoolPtr(true) } return attrs, props, commonAttrs } // The following conversions are based on this table where the rows are the compile_multilib Loading
bp2build/apex_conversion_test.go +120 −0 Original line number Diff line number Diff line Loading @@ -58,6 +58,7 @@ func registerOverrideApexModuleTypes(ctx android.RegistrationContext) { ctx.RegisterModuleType("cc_binary", cc.BinaryFactory) ctx.RegisterModuleType("cc_library", cc.LibraryFactory) ctx.RegisterModuleType("apex_key", apex.ApexKeyFactory) ctx.RegisterModuleType("apex_test", apex.TestApexBundleFactory) ctx.RegisterModuleType("android_app_certificate", java.AndroidAppCertificateFactory) ctx.RegisterModuleType("filegroup", android.FileGroupFactory) ctx.RegisterModuleType("apex", apex.BundleFactory) Loading Loading @@ -706,6 +707,125 @@ override_apex { }}) } func TestOverrideApexTest(t *testing.T) { runOverrideApexTestCase(t, Bp2buildTestCase{ Description: "override_apex", ModuleTypeUnderTest: "override_apex", ModuleTypeUnderTestFactory: apex.OverrideApexFactory, Filesystem: map[string]string{}, Blueprint: ` apex_key { name: "com.android.apogee.key", public_key: "com.android.apogee.avbpubkey", private_key: "com.android.apogee.pem", bazel_module: { bp2build_available: false }, } android_app_certificate { name: "com.android.apogee.certificate", certificate: "com.android.apogee", bazel_module: { bp2build_available: false }, } cc_library { name: "native_shared_lib_1", bazel_module: { bp2build_available: false }, } prebuilt_etc { name: "prebuilt_1", bazel_module: { bp2build_available: false }, } filegroup { name: "com.android.apogee-file_contexts", srcs: [ "com.android.apogee-file_contexts", ], bazel_module: { bp2build_available: false }, } cc_binary { name: "cc_binary_1", bazel_module: { bp2build_available: false } } sh_binary { name: "sh_binary_2", bazel_module: { bp2build_available: false } } apex_test { name: "com.android.apogee", manifest: "apogee_manifest.json", androidManifest: "ApogeeAndroidManifest.xml", file_contexts: ":com.android.apogee-file_contexts", min_sdk_version: "29", key: "com.android.apogee.key", certificate: ":com.android.apogee.certificate", updatable: false, installable: false, compressible: false, native_shared_libs: [ "native_shared_lib_1", ], binaries: [ "cc_binary_1", "sh_binary_2", ], prebuilts: [ "prebuilt_1", ], bazel_module: { bp2build_available: false }, } apex_key { name: "com.google.android.apogee.key", public_key: "com.google.android.apogee.avbpubkey", private_key: "com.google.android.apogee.pem", bazel_module: { bp2build_available: false }, } android_app_certificate { name: "com.google.android.apogee.certificate", certificate: "com.google.android.apogee", bazel_module: { bp2build_available: false }, } override_apex { name: "com.google.android.apogee", base: ":com.android.apogee", key: "com.google.android.apogee.key", certificate: ":com.google.android.apogee.certificate", prebuilts: [], compressible: true, } `, ExpectedBazelTargets: []string{ MakeBazelTarget("apex", "com.google.android.apogee", AttrNameToString{ "android_manifest": `"ApogeeAndroidManifest.xml"`, "base_apex_name": `"com.android.apogee"`, "binaries": `[ ":cc_binary_1", ":sh_binary_2", ]`, "certificate": `":com.google.android.apogee.certificate"`, "file_contexts": `":com.android.apogee-file_contexts"`, "installable": "False", "key": `":com.google.android.apogee.key"`, "manifest": `"apogee_manifest.json"`, "min_sdk_version": `"29"`, "native_shared_libs_32": `select({ "//build/bazel/platforms/arch:arm": [":native_shared_lib_1"], "//build/bazel/platforms/arch:x86": [":native_shared_lib_1"], "//conditions:default": [], })`, "native_shared_libs_64": `select({ "//build/bazel/platforms/arch:arm64": [":native_shared_lib_1"], "//build/bazel/platforms/arch:x86_64": [":native_shared_lib_1"], "//conditions:default": [], })`, "testonly": "True", "prebuilts": `[]`, "updatable": "False", "compressible": "True", }), }}) } func TestApexBundleSimple_manifestIsEmpty_baseApexOverrideApexInDifferentAndroidBp(t *testing.T) { runOverrideApexTestCase(t, Bp2buildTestCase{ Description: "override_apex - manifest of base apex is empty, base apex and override_apex is in different Android.bp", Loading