Prevent sdk variants from install

Platform variants should be available even when unbundled_build so that
unbundled build of com.android.virt apex can correctly have microdroid
image with system variants.

Bug: 268582372
Test: m (soong test)
Test: banchan com.android.virt aosp_arm64
      UNBUNDLED_BUILD_SDKS_FROM_SOURCE=true m apps_only dist
      (microdroid should have the same contents)
Change-Id: I682e4f1f477f3024f7719dfaa67006ef335e0640
This commit is contained in:
Jooyung Han
2023-02-20 18:17:47 +09:00
parent dcc6b241a7
commit 54f780505d
4 changed files with 144 additions and 9 deletions

View File

@@ -101,3 +101,95 @@ func TestSdkMutator(t *testing.T) {
assertDep(t, libsdkNDK, libcxxNDK)
assertDep(t, libsdkPlatform, libcxxPlatform)
}
func TestMakeModuleNameForSdkVariant(t *testing.T) {
bp := `
cc_library {
name: "libfoo",
srcs: ["main_test.cpp"],
sdk_version: "current",
stl: "none",
}
`
platformVariant := "android_arm64_armv8-a_shared"
sdkVariant := "android_arm64_armv8-a_sdk_shared"
testCases := []struct {
name string
unbundledApps []string
variant string
skipInstall bool // soong skips install
hideFromMake bool // no make entry
makeUninstallable bool // make skips install
makeModuleName string
}{
{
name: "platform variant in normal builds",
unbundledApps: nil,
variant: platformVariant,
// installable in soong
skipInstall: false,
// visiable in Make as "libfoo"
hideFromMake: false,
makeModuleName: "libfoo",
// installable in Make
makeUninstallable: false,
},
{
name: "sdk variant in normal builds",
unbundledApps: nil,
variant: sdkVariant,
// soong doesn't install
skipInstall: true,
// visible in Make as "libfoo.sdk"
hideFromMake: false,
makeModuleName: "libfoo.sdk",
// but not installed
makeUninstallable: true,
},
{
name: "platform variant in unbunded builds",
unbundledApps: []string{"bar"},
variant: platformVariant,
// installable in soong
skipInstall: false,
// hidden from make
hideFromMake: true,
},
{
name: "sdk variant in unbunded builds",
unbundledApps: []string{"bar"},
variant: sdkVariant,
// soong doesn't install
skipInstall: true,
// visible in Make as "libfoo"
hideFromMake: false,
makeModuleName: "libfoo",
// but not installed
makeUninstallable: true,
},
}
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
fixture := android.GroupFixturePreparers(prepareForCcTest,
android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
variables.Unbundled_build_apps = tc.unbundledApps
}),
)
ctx := fixture.RunTestWithBp(t, bp).TestContext
module := ctx.ModuleForTests("libfoo", tc.variant).Module().(*Module)
android.AssertBoolEquals(t, "IsSkipInstall", tc.skipInstall, module.IsSkipInstall())
android.AssertBoolEquals(t, "HideFromMake", tc.hideFromMake, module.HiddenFromMake())
if !tc.hideFromMake {
entries := android.AndroidMkEntriesForTest(t, ctx, module)[0]
android.AssertStringEquals(t, "LOCAL_MODULE",
tc.makeModuleName, entries.EntryMap["LOCAL_MODULE"][0])
actualUninstallable := false
if actual, ok := entries.EntryMap["LOCAL_UNINSTALLABLE_MODULE"]; ok {
actualUninstallable = "true" == actual[0]
}
android.AssertBoolEquals(t, "LOCAL_UNINSTALLABLE_MODULE",
tc.makeUninstallable, actualUninstallable)
}
})
}
}