Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 088c4b65 authored by Jingwen Chen's avatar Jingwen Chen Committed by Gerrit Code Review
Browse files

Merge "[bp2build] android_test bp2build." into main

parents 18a33e51 e12c0831
Loading
Loading
Loading
Loading
+25 −4
Original line number Diff line number Diff line
@@ -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,
@@ -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,

@@ -892,9 +895,6 @@ var (

		"merge_annotation_zips_test",

		// bouncycastle dep
		"platform-test-annotations",

		// java_resources with multiple resource_dirs
		"emma",

@@ -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{
@@ -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
+11 −3
Original line number Diff line number Diff line
@@ -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),
+0 −2
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@ package bp2build
import (
	"android/soong/android"
	"android/soong/java"
	"fmt"

	"testing"
)
@@ -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{},
	})
}
+4 −1
Original line number Diff line number Diff line
@@ -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()
+33 −14
Original line number Diff line number Diff line
@@ -1115,6 +1115,8 @@ type AndroidTest struct {
	testConfig       android.Path
	extraTestConfigs android.Paths
	data             android.Paths

	android.BazelModuleBase
}

func (a *AndroidTest) InstallInTestcases() bool {
@@ -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
}

@@ -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)

@@ -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
@@ -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)
	}

}