Loading android/allowlists/allowlists.go +25 −4 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ var ( "build/bazel": Bp2BuildDefaultTrueRecursively, "build/make/target/product/security": Bp2BuildDefaultTrue, "build/make/tools": Bp2BuildDefaultTrue, "build/make/tools/protos": Bp2BuildDefaultTrue, "build/make/tools/releasetools": Bp2BuildDefaultTrue, "build/make/tools/sbom": Bp2BuildDefaultTrue, Loading @@ -80,6 +81,8 @@ var ( "cts/common/device-side/nativetesthelper/jni": Bp2BuildDefaultTrueRecursively, "cts/libs/json": Bp2BuildDefaultTrueRecursively, "cts/tests/tests/gesture": Bp2BuildDefaultTrueRecursively, "platform_testing/libraries/annotations": Bp2BuildDefaultTrueRecursively, "dalvik/tools/dexdeps": Bp2BuildDefaultTrueRecursively, Loading Loading @@ -892,9 +895,6 @@ var ( "merge_annotation_zips_test", // bouncycastle dep "platform-test-annotations", // java_resources with multiple resource_dirs "emma", Loading @@ -904,6 +904,16 @@ var ( "ndk_libc++_static", "ndk_libc++_shared", "ndk_system", // allowlist //prebuilts/common/misc/androidx-test/... "androidx.test.runner", "androidx.test.runner-nodeps", "androidx.test.services.storage", "androidx.test.services.storage-nodeps", "androidx.test.monitor", "androidx.test.monitor-nodeps", "androidx.test.annotation", "androidx.test.annotation-nodeps", } Bp2buildModuleTypeAlwaysConvertList = []string{ Loading Loading @@ -1649,6 +1659,17 @@ var ( // TODO(b/299974637) Fix linking error "libbinder_rpc_unstable", // TODO(b/297356704) sdk_version is unset. "VendorAtomCodeGenJavaTest", // android_test from allowlisted packages, but with unconverted deps "MtsLibnativehelperLazyTestCases", "ObjenesisTck", "DevCodelabTest", "MtsTimeZoneDataTestCases", "NanoAndroidTest", "MtsLibnativehelperTestCases", } // Bazel prod-mode allowlist. Modules in this list are built by Bazel Loading android/module.go +11 −3 Original line number Diff line number Diff line Loading @@ -1636,15 +1636,23 @@ func (b bp2buildInfo) BazelAttributes() []interface{} { } func (m *ModuleBase) addBp2buildInfo(info bp2buildInfo) { if m.commonProperties.BazelConversionStatus.UnconvertedReason != nil { panic(fmt.Errorf("bp2build: module '%s' marked unconvertible and also is converted", m.Name())) reason := m.commonProperties.BazelConversionStatus.UnconvertedReason if reason != nil { panic(fmt.Errorf("bp2build: internal error trying to convert module '%s' marked unconvertible. Reason type %d: %s", m.Name(), reason.ReasonType, reason.Detail)) } m.commonProperties.BazelConversionStatus.Bp2buildInfo = append(m.commonProperties.BazelConversionStatus.Bp2buildInfo, info) } func (m *ModuleBase) setBp2buildUnconvertible(reasonType bp2build_metrics_proto.UnconvertedReasonType, detail string) { if len(m.commonProperties.BazelConversionStatus.Bp2buildInfo) > 0 { panic(fmt.Errorf("bp2build: module '%s' marked unconvertible and also is converted", m.Name())) fmt.Println(m.commonProperties.BazelConversionStatus.Bp2buildInfo) panic(fmt.Errorf("bp2build: internal error trying to mark converted module '%s' as unconvertible. Reason type %d: %s", m.Name(), reasonType, detail)) } m.commonProperties.BazelConversionStatus.UnconvertedReason = &UnconvertedReason{ ReasonType: int(reasonType), Loading bp2build/aar_conversion_test.go +0 −2 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ package bp2build import ( "android/soong/android" "android/soong/java" "fmt" "testing" ) Loading Loading @@ -91,7 +90,6 @@ android_library { sdk_version: "current", } `, ExpectedErr: fmt.Errorf("Module has direct dependencies but no sources. Bazel will not allow this."), ExpectedBazelTargets: []string{}, }) } Loading java/aar.go +4 −1 Original line number Diff line number Diff line Loading @@ -1340,7 +1340,10 @@ func (a *AndroidLibrary) ConvertWithBp2build(ctx android.TopDownMutatorContext) if !commonAttrs.Srcs.IsEmpty() { deps.Append(depLabels.StaticDeps) // we should only append these if there are sources to use them } else if !depLabels.Deps.IsEmpty() { ctx.ModuleErrorf("Module has direct dependencies but no sources. Bazel will not allow this.") ctx.MarkBp2buildUnconvertible( bp2build_metrics_proto.UnconvertedReasonType_UNSUPPORTED, "Module has direct dependencies but no sources. Bazel will not allow this.") return } name := a.Name() props := AndroidLibraryBazelTargetModuleProperties() Loading java/app.go +33 −14 Original line number Diff line number Diff line Loading @@ -1115,6 +1115,8 @@ type AndroidTest struct { testConfig android.Path extraTestConfigs android.Paths data android.Paths android.BazelModuleBase } func (a *AndroidTest) InstallInTestcases() bool { Loading Loading @@ -1232,6 +1234,8 @@ func AndroidTestFactory() android.Module { android.InitAndroidMultiTargetsArchModule(module, android.DeviceSupported, android.MultilibCommon) android.InitDefaultableModule(module) android.InitOverridableModule(module, &module.overridableAppProperties.Overrides) android.InitBazelModule(module) return module } Loading Loading @@ -1630,11 +1634,10 @@ type bazelAndroidAppAttributes struct { Proguard_specs bazel.LabelListAttribute } // ConvertWithBp2build is used to convert android_app to Bazel. func (a *AndroidApp) ConvertWithBp2build(ctx android.TopDownMutatorContext) { func convertWithBp2build(ctx android.TopDownMutatorContext, a *AndroidApp) (bool, android.CommonAttributes, *bazelAndroidAppAttributes) { aapt, supported := a.convertAaptAttrsWithBp2Build(ctx) if !supported { return return false, android.CommonAttributes{}, &bazelAndroidAppAttributes{} } certificate, certificateName := android.BazelStringOrLabelFromProp(ctx, a.overridableAppProperties.Certificate) Loading Loading @@ -1706,18 +1709,13 @@ func (a *AndroidApp) ConvertWithBp2build(ctx android.TopDownMutatorContext) { commonAttrs, bp2BuildInfo, supported := a.convertLibraryAttrsBp2Build(ctx) if !supported { return return false, android.CommonAttributes{}, &bazelAndroidAppAttributes{} } depLabels := bp2BuildInfo.DepLabels deps := depLabels.Deps deps.Append(depLabels.StaticDeps) props := bazel.BazelTargetModuleProperties{ Rule_class: "android_binary", Bzl_load_location: "//build/bazel/rules/android:android_binary.bzl", } if !bp2BuildInfo.hasKotlin { appAttrs.javaCommonAttributes = commonAttrs appAttrs.bazelAapt = aapt Loading @@ -1743,10 +1741,31 @@ func (a *AndroidApp) ConvertWithBp2build(ctx android.TopDownMutatorContext) { } } ctx.CreateBazelTargetModule( props, android.CommonAttributes{Name: a.Name(), SkipData: proptools.BoolPtr(true)}, appAttrs, ) return true, android.CommonAttributes{Name: a.Name(), SkipData: proptools.BoolPtr(true)}, appAttrs } // ConvertWithBp2build is used to convert android_app to Bazel. func (a *AndroidApp) ConvertWithBp2build(ctx android.TopDownMutatorContext) { if ok, commonAttrs, appAttrs := convertWithBp2build(ctx, a); ok { props := bazel.BazelTargetModuleProperties{ Rule_class: "android_binary", Bzl_load_location: "//build/bazel/rules/android:android_binary.bzl", } ctx.CreateBazelTargetModule(props, commonAttrs, appAttrs) } } // ConvertWithBp2build is used to convert android_test to Bazel. func (at *AndroidTest) ConvertWithBp2build(ctx android.TopDownMutatorContext) { if ok, commonAttrs, appAttrs := convertWithBp2build(ctx, &at.AndroidApp); ok { props := bazel.BazelTargetModuleProperties{ Rule_class: "android_test", Bzl_load_location: "//build/bazel/rules/android:android_test.bzl", } ctx.CreateBazelTargetModule(props, commonAttrs, appAttrs) } } Loading
android/allowlists/allowlists.go +25 −4 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ var ( "build/bazel": Bp2BuildDefaultTrueRecursively, "build/make/target/product/security": Bp2BuildDefaultTrue, "build/make/tools": Bp2BuildDefaultTrue, "build/make/tools/protos": Bp2BuildDefaultTrue, "build/make/tools/releasetools": Bp2BuildDefaultTrue, "build/make/tools/sbom": Bp2BuildDefaultTrue, Loading @@ -80,6 +81,8 @@ var ( "cts/common/device-side/nativetesthelper/jni": Bp2BuildDefaultTrueRecursively, "cts/libs/json": Bp2BuildDefaultTrueRecursively, "cts/tests/tests/gesture": Bp2BuildDefaultTrueRecursively, "platform_testing/libraries/annotations": Bp2BuildDefaultTrueRecursively, "dalvik/tools/dexdeps": Bp2BuildDefaultTrueRecursively, Loading Loading @@ -892,9 +895,6 @@ var ( "merge_annotation_zips_test", // bouncycastle dep "platform-test-annotations", // java_resources with multiple resource_dirs "emma", Loading @@ -904,6 +904,16 @@ var ( "ndk_libc++_static", "ndk_libc++_shared", "ndk_system", // allowlist //prebuilts/common/misc/androidx-test/... "androidx.test.runner", "androidx.test.runner-nodeps", "androidx.test.services.storage", "androidx.test.services.storage-nodeps", "androidx.test.monitor", "androidx.test.monitor-nodeps", "androidx.test.annotation", "androidx.test.annotation-nodeps", } Bp2buildModuleTypeAlwaysConvertList = []string{ Loading Loading @@ -1649,6 +1659,17 @@ var ( // TODO(b/299974637) Fix linking error "libbinder_rpc_unstable", // TODO(b/297356704) sdk_version is unset. "VendorAtomCodeGenJavaTest", // android_test from allowlisted packages, but with unconverted deps "MtsLibnativehelperLazyTestCases", "ObjenesisTck", "DevCodelabTest", "MtsTimeZoneDataTestCases", "NanoAndroidTest", "MtsLibnativehelperTestCases", } // Bazel prod-mode allowlist. Modules in this list are built by Bazel Loading
android/module.go +11 −3 Original line number Diff line number Diff line Loading @@ -1636,15 +1636,23 @@ func (b bp2buildInfo) BazelAttributes() []interface{} { } func (m *ModuleBase) addBp2buildInfo(info bp2buildInfo) { if m.commonProperties.BazelConversionStatus.UnconvertedReason != nil { panic(fmt.Errorf("bp2build: module '%s' marked unconvertible and also is converted", m.Name())) reason := m.commonProperties.BazelConversionStatus.UnconvertedReason if reason != nil { panic(fmt.Errorf("bp2build: internal error trying to convert module '%s' marked unconvertible. Reason type %d: %s", m.Name(), reason.ReasonType, reason.Detail)) } m.commonProperties.BazelConversionStatus.Bp2buildInfo = append(m.commonProperties.BazelConversionStatus.Bp2buildInfo, info) } func (m *ModuleBase) setBp2buildUnconvertible(reasonType bp2build_metrics_proto.UnconvertedReasonType, detail string) { if len(m.commonProperties.BazelConversionStatus.Bp2buildInfo) > 0 { panic(fmt.Errorf("bp2build: module '%s' marked unconvertible and also is converted", m.Name())) fmt.Println(m.commonProperties.BazelConversionStatus.Bp2buildInfo) panic(fmt.Errorf("bp2build: internal error trying to mark converted module '%s' as unconvertible. Reason type %d: %s", m.Name(), reasonType, detail)) } m.commonProperties.BazelConversionStatus.UnconvertedReason = &UnconvertedReason{ ReasonType: int(reasonType), Loading
bp2build/aar_conversion_test.go +0 −2 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ package bp2build import ( "android/soong/android" "android/soong/java" "fmt" "testing" ) Loading Loading @@ -91,7 +90,6 @@ android_library { sdk_version: "current", } `, ExpectedErr: fmt.Errorf("Module has direct dependencies but no sources. Bazel will not allow this."), ExpectedBazelTargets: []string{}, }) } Loading
java/aar.go +4 −1 Original line number Diff line number Diff line Loading @@ -1340,7 +1340,10 @@ func (a *AndroidLibrary) ConvertWithBp2build(ctx android.TopDownMutatorContext) if !commonAttrs.Srcs.IsEmpty() { deps.Append(depLabels.StaticDeps) // we should only append these if there are sources to use them } else if !depLabels.Deps.IsEmpty() { ctx.ModuleErrorf("Module has direct dependencies but no sources. Bazel will not allow this.") ctx.MarkBp2buildUnconvertible( bp2build_metrics_proto.UnconvertedReasonType_UNSUPPORTED, "Module has direct dependencies but no sources. Bazel will not allow this.") return } name := a.Name() props := AndroidLibraryBazelTargetModuleProperties() Loading
java/app.go +33 −14 Original line number Diff line number Diff line Loading @@ -1115,6 +1115,8 @@ type AndroidTest struct { testConfig android.Path extraTestConfigs android.Paths data android.Paths android.BazelModuleBase } func (a *AndroidTest) InstallInTestcases() bool { Loading Loading @@ -1232,6 +1234,8 @@ func AndroidTestFactory() android.Module { android.InitAndroidMultiTargetsArchModule(module, android.DeviceSupported, android.MultilibCommon) android.InitDefaultableModule(module) android.InitOverridableModule(module, &module.overridableAppProperties.Overrides) android.InitBazelModule(module) return module } Loading Loading @@ -1630,11 +1634,10 @@ type bazelAndroidAppAttributes struct { Proguard_specs bazel.LabelListAttribute } // ConvertWithBp2build is used to convert android_app to Bazel. func (a *AndroidApp) ConvertWithBp2build(ctx android.TopDownMutatorContext) { func convertWithBp2build(ctx android.TopDownMutatorContext, a *AndroidApp) (bool, android.CommonAttributes, *bazelAndroidAppAttributes) { aapt, supported := a.convertAaptAttrsWithBp2Build(ctx) if !supported { return return false, android.CommonAttributes{}, &bazelAndroidAppAttributes{} } certificate, certificateName := android.BazelStringOrLabelFromProp(ctx, a.overridableAppProperties.Certificate) Loading Loading @@ -1706,18 +1709,13 @@ func (a *AndroidApp) ConvertWithBp2build(ctx android.TopDownMutatorContext) { commonAttrs, bp2BuildInfo, supported := a.convertLibraryAttrsBp2Build(ctx) if !supported { return return false, android.CommonAttributes{}, &bazelAndroidAppAttributes{} } depLabels := bp2BuildInfo.DepLabels deps := depLabels.Deps deps.Append(depLabels.StaticDeps) props := bazel.BazelTargetModuleProperties{ Rule_class: "android_binary", Bzl_load_location: "//build/bazel/rules/android:android_binary.bzl", } if !bp2BuildInfo.hasKotlin { appAttrs.javaCommonAttributes = commonAttrs appAttrs.bazelAapt = aapt Loading @@ -1743,10 +1741,31 @@ func (a *AndroidApp) ConvertWithBp2build(ctx android.TopDownMutatorContext) { } } ctx.CreateBazelTargetModule( props, android.CommonAttributes{Name: a.Name(), SkipData: proptools.BoolPtr(true)}, appAttrs, ) return true, android.CommonAttributes{Name: a.Name(), SkipData: proptools.BoolPtr(true)}, appAttrs } // ConvertWithBp2build is used to convert android_app to Bazel. func (a *AndroidApp) ConvertWithBp2build(ctx android.TopDownMutatorContext) { if ok, commonAttrs, appAttrs := convertWithBp2build(ctx, a); ok { props := bazel.BazelTargetModuleProperties{ Rule_class: "android_binary", Bzl_load_location: "//build/bazel/rules/android:android_binary.bzl", } ctx.CreateBazelTargetModule(props, commonAttrs, appAttrs) } } // ConvertWithBp2build is used to convert android_test to Bazel. func (at *AndroidTest) ConvertWithBp2build(ctx android.TopDownMutatorContext) { if ok, commonAttrs, appAttrs := convertWithBp2build(ctx, &at.AndroidApp); ok { props := bazel.BazelTargetModuleProperties{ Rule_class: "android_test", Bzl_load_location: "//build/bazel/rules/android:android_test.bzl", } ctx.CreateBazelTargetModule(props, commonAttrs, appAttrs) } }