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

Commit 829b7135 authored by Jaewoong Jung's avatar Jaewoong Jung
Browse files

Use Targets[Android] instead of DeviceArch funcs.

NDK prebuit script doesn't set device arch product variables, and so
causes SupportedAbis to panic.

Fixes: 158673325
Test: app_test.go, apex_test.go
Test: build-ndk-prebuilts.sh
Change-Id: I8331ef5bca12301318510ec9712770fd8d3a26a9
parent 4754d445
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -4786,8 +4786,10 @@ func TestApexSet(t *testing.T) {
		}
	`, func(fs map[string][]byte, config android.Config) {
		config.TestProductVariables.Platform_sdk_version = intPtr(30)
		config.TestProductVariables.DeviceArch = proptools.StringPtr("arm")
		config.TestProductVariables.DeviceSecondaryArch = proptools.StringPtr("arm64")
		config.Targets[android.Android] = []android.Target{
			{Os: android.Android, Arch: android.Arch{ArchType: android.Arm, ArchVariant: "armv7-a-neon", Abi: []string{"armeabi-v7a"}}},
			{Os: android.Android, Arch: android.Arch{ArchType: android.Arm64, ArchVariant: "armv8-a", Abi: []string{"arm64-v8a"}}},
		}
	})

	m := ctx.ModuleForTests("myapex", "android_common")
+5 −5
Original line number Diff line number Diff line
@@ -112,17 +112,17 @@ var TargetCpuAbi = map[string]string{
}

func SupportedAbis(ctx android.ModuleContext) []string {
	abiName := func(archVar string, deviceArch string) string {
	abiName := func(targetIdx int, deviceArch string) string {
		if abi, found := TargetCpuAbi[deviceArch]; found {
			return abi
		}
		ctx.ModuleErrorf("Invalid %s: %s", archVar, deviceArch)
		ctx.ModuleErrorf("Target %d has invalid Arch: %s", targetIdx, deviceArch)
		return "BAD_ABI"
	}

	result := []string{abiName("TARGET_ARCH", ctx.DeviceConfig().DeviceArch())}
	if s := ctx.DeviceConfig().DeviceSecondaryArch(); s != "" {
		result = append(result, abiName("TARGET_2ND_ARCH", s))
	var result []string
	for i, target := range ctx.Config().Targets[android.Android] {
		result = append(result, abiName(i, target.Arch.ArchType.String()))
	}
	return result
}
+17 −15
Original line number Diff line number Diff line
@@ -174,15 +174,16 @@ func TestAndroidAppSet_Variants(t *testing.T) {
		}`
	testCases := []struct {
		name            string
		deviceArch          *string
		deviceSecondaryArch *string
		targets         []android.Target
		aaptPrebuiltDPI []string
		sdkVersion      int
		expected        map[string]string
	}{
		{
			name: "One",
			deviceArch:      proptools.StringPtr("x86"),
			targets: []android.Target{
				{Os: android.Android, Arch: android.Arch{ArchType: android.X86}},
			},
			aaptPrebuiltDPI: []string{"ldpi", "xxhdpi"},
			sdkVersion:      29,
			expected: map[string]string{
@@ -195,8 +196,10 @@ func TestAndroidAppSet_Variants(t *testing.T) {
		},
		{
			name: "Two",
			deviceArch:          proptools.StringPtr("x86_64"),
			deviceSecondaryArch: proptools.StringPtr("x86"),
			targets: []android.Target{
				{Os: android.Android, Arch: android.Arch{ArchType: android.X86_64}},
				{Os: android.Android, Arch: android.Arch{ArchType: android.X86}},
			},
			aaptPrebuiltDPI: nil,
			sdkVersion:      30,
			expected: map[string]string{
@@ -213,8 +216,7 @@ func TestAndroidAppSet_Variants(t *testing.T) {
		config := testAppConfig(nil, bp, nil)
		config.TestProductVariables.AAPTPrebuiltDPI = test.aaptPrebuiltDPI
		config.TestProductVariables.Platform_sdk_version = &test.sdkVersion
		config.TestProductVariables.DeviceArch = test.deviceArch
		config.TestProductVariables.DeviceSecondaryArch = test.deviceSecondaryArch
		config.Targets[android.Android] = test.targets
		ctx := testContext()
		run(t, ctx, config)
		module := ctx.ModuleForTests("foo", "android_common")