Merge "Remove VNDK information from CC and APEX tests" into main
This commit is contained in:
@@ -40,7 +40,6 @@ bootstrap_go_package {
|
||||
"dexpreopt_bootjars_test.go",
|
||||
"platform_bootclasspath_test.go",
|
||||
"systemserver_classpath_fragment_test.go",
|
||||
"vndk_test.go",
|
||||
],
|
||||
pluginFor: ["soong_build"],
|
||||
}
|
||||
|
@@ -218,7 +218,6 @@ var prepareForApexTest = android.GroupFixturePreparers(
|
||||
),
|
||||
|
||||
android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
|
||||
variables.DeviceVndkVersion = proptools.StringPtr("current")
|
||||
variables.DefaultAppCertificate = proptools.StringPtr("vendor/foo/devkeys/test")
|
||||
variables.CertificateOverrides = []string{"myapex_keytest:myapex.certificate.override"}
|
||||
variables.Platform_sdk_codename = proptools.StringPtr("Q")
|
||||
@@ -226,7 +225,6 @@ var prepareForApexTest = android.GroupFixturePreparers(
|
||||
// "Tiramisu" needs to be in the next line for compatibility with soong code,
|
||||
// not because of these tests specifically (it's not used by the tests)
|
||||
variables.Platform_version_active_codenames = []string{"Q", "Tiramisu"}
|
||||
variables.Platform_vndk_version = proptools.StringPtr("29")
|
||||
variables.BuildId = proptools.StringPtr("TEST.BUILD_ID")
|
||||
}),
|
||||
)
|
||||
@@ -2062,9 +2060,9 @@ func TestApexMinSdkVersion_InVendorApex(t *testing.T) {
|
||||
}
|
||||
`)
|
||||
|
||||
vendorVariant := "android_vendor.29_arm64_armv8-a"
|
||||
vendorVariant := "android_vendor_arm64_armv8-a"
|
||||
|
||||
mylib := ctx.ModuleForTests("mylib", vendorVariant+"_shared_myapex")
|
||||
mylib := ctx.ModuleForTests("mylib", vendorVariant+"_shared_apex29")
|
||||
|
||||
// Ensure that mylib links with "current" LLNDK
|
||||
libFlags := names(mylib.Rule("ld").Args["libFlags"])
|
||||
@@ -3025,158 +3023,6 @@ func TestVendorApex(t *testing.T) {
|
||||
ensureListNotContains(t, requireNativeLibs, ":vndk")
|
||||
}
|
||||
|
||||
func TestVendorApex_use_vndk_as_stable_TryingToIncludeVNDKLib(t *testing.T) {
|
||||
testApexError(t, `Trying to include a VNDK library`, `
|
||||
apex {
|
||||
name: "myapex",
|
||||
key: "myapex.key",
|
||||
native_shared_libs: ["libc++"], // libc++ is a VNDK lib
|
||||
vendor: true,
|
||||
use_vndk_as_stable: true,
|
||||
updatable: false,
|
||||
}
|
||||
apex_key {
|
||||
name: "myapex.key",
|
||||
public_key: "testkey.avbpubkey",
|
||||
private_key: "testkey.pem",
|
||||
}`)
|
||||
}
|
||||
|
||||
func TestVendorApex_use_vndk_as_stable(t *testing.T) {
|
||||
// myapex myapex2
|
||||
// | |
|
||||
// mybin ------. mybin2
|
||||
// \ \ / |
|
||||
// (stable) .---\--------` |
|
||||
// \ / \ |
|
||||
// \ / \ /
|
||||
// libvndk libvendor
|
||||
// (vndk)
|
||||
ctx := testApex(t, `
|
||||
apex {
|
||||
name: "myapex",
|
||||
key: "myapex.key",
|
||||
binaries: ["mybin"],
|
||||
vendor: true,
|
||||
use_vndk_as_stable: true,
|
||||
updatable: false,
|
||||
}
|
||||
apex_key {
|
||||
name: "myapex.key",
|
||||
public_key: "testkey.avbpubkey",
|
||||
private_key: "testkey.pem",
|
||||
}
|
||||
cc_binary {
|
||||
name: "mybin",
|
||||
vendor: true,
|
||||
shared_libs: ["libvndk", "libvendor"],
|
||||
}
|
||||
cc_library {
|
||||
name: "libvndk",
|
||||
vndk: {
|
||||
enabled: true,
|
||||
},
|
||||
vendor_available: true,
|
||||
product_available: true,
|
||||
}
|
||||
cc_library {
|
||||
name: "libvendor",
|
||||
vendor: true,
|
||||
stl: "none",
|
||||
}
|
||||
apex {
|
||||
name: "myapex2",
|
||||
key: "myapex.key",
|
||||
binaries: ["mybin2"],
|
||||
vendor: true,
|
||||
use_vndk_as_stable: false,
|
||||
updatable: false,
|
||||
}
|
||||
cc_binary {
|
||||
name: "mybin2",
|
||||
vendor: true,
|
||||
shared_libs: ["libvndk", "libvendor"],
|
||||
}
|
||||
`,
|
||||
android.FixtureModifyConfig(func(config android.Config) {
|
||||
config.TestProductVariables.KeepVndk = proptools.BoolPtr(true)
|
||||
}),
|
||||
)
|
||||
|
||||
vendorVariant := "android_vendor.29_arm64_armv8-a"
|
||||
|
||||
for _, tc := range []struct {
|
||||
name string
|
||||
apexName string
|
||||
moduleName string
|
||||
moduleVariant string
|
||||
libs []string
|
||||
contents []string
|
||||
requireVndkNamespace bool
|
||||
}{
|
||||
{
|
||||
name: "use_vndk_as_stable",
|
||||
apexName: "myapex",
|
||||
moduleName: "mybin",
|
||||
moduleVariant: vendorVariant + "_apex10000",
|
||||
libs: []string{
|
||||
// should link with vendor variants of VNDK libs(libvndk/libc++)
|
||||
"out/soong/.intermediates/libvndk/" + vendorVariant + "_shared/libvndk.so",
|
||||
"out/soong/.intermediates/" + cc.DefaultCcCommonTestModulesDir + "libc++/" + vendorVariant + "_shared/libc++.so",
|
||||
// unstable Vendor libs as APEX variant
|
||||
"out/soong/.intermediates/libvendor/" + vendorVariant + "_shared_apex10000/libvendor.so",
|
||||
},
|
||||
contents: []string{
|
||||
"bin/mybin",
|
||||
"lib64/libvendor.so",
|
||||
// VNDK libs (libvndk/libc++) are not included
|
||||
},
|
||||
requireVndkNamespace: true,
|
||||
},
|
||||
{
|
||||
name: "!use_vndk_as_stable",
|
||||
apexName: "myapex2",
|
||||
moduleName: "mybin2",
|
||||
moduleVariant: vendorVariant + "_myapex2",
|
||||
libs: []string{
|
||||
// should link with "unique" APEX(myapex2) variant of VNDK libs(libvndk/libc++)
|
||||
"out/soong/.intermediates/libvndk/" + vendorVariant + "_shared_myapex2/libvndk.so",
|
||||
"out/soong/.intermediates/" + cc.DefaultCcCommonTestModulesDir + "libc++/" + vendorVariant + "_shared_myapex2/libc++.so",
|
||||
// unstable vendor libs have "merged" APEX variants
|
||||
"out/soong/.intermediates/libvendor/" + vendorVariant + "_shared_apex10000/libvendor.so",
|
||||
},
|
||||
contents: []string{
|
||||
"bin/mybin2",
|
||||
"lib64/libvendor.so",
|
||||
// VNDK libs are included as well
|
||||
"lib64/libvndk.so",
|
||||
"lib64/libc++.so",
|
||||
},
|
||||
requireVndkNamespace: false,
|
||||
},
|
||||
} {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
// Check linked libs
|
||||
ldRule := ctx.ModuleForTests(tc.moduleName, tc.moduleVariant).Rule("ld")
|
||||
libs := names(ldRule.Args["libFlags"])
|
||||
for _, lib := range tc.libs {
|
||||
ensureListContains(t, libs, lib)
|
||||
}
|
||||
// Check apex contents
|
||||
ensureExactContents(t, ctx, tc.apexName, "android_common_"+tc.apexName, tc.contents)
|
||||
|
||||
// Check "requireNativeLibs"
|
||||
apexManifestRule := ctx.ModuleForTests(tc.apexName, "android_common_"+tc.apexName).Rule("apexManifestRule")
|
||||
requireNativeLibs := names(apexManifestRule.Args["requireNativeLibs"])
|
||||
if tc.requireVndkNamespace {
|
||||
ensureListContains(t, requireNativeLibs, ":vndk")
|
||||
} else {
|
||||
ensureListNotContains(t, requireNativeLibs, ":vndk")
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestProductVariant(t *testing.T) {
|
||||
ctx := testApex(t, `
|
||||
apex {
|
||||
@@ -3202,7 +3048,7 @@ func TestProductVariant(t *testing.T) {
|
||||
`)
|
||||
|
||||
cflags := strings.Fields(
|
||||
ctx.ModuleForTests("foo", "android_product.29_arm64_armv8-a_myapex").Rule("cc").Args["cFlags"])
|
||||
ctx.ModuleForTests("foo", "android_product_arm64_armv8-a_apex10000").Rule("cc").Args["cFlags"])
|
||||
ensureListContains(t, cflags, "-D__ANDROID_VNDK__")
|
||||
ensureListContains(t, cflags, "-D__ANDROID_APEX__")
|
||||
ensureListContains(t, cflags, "-D__ANDROID_PRODUCT__")
|
||||
@@ -3823,166 +3669,6 @@ func ensureExactDeapexedContents(t *testing.T, ctx *android.TestContext, moduleN
|
||||
assertFileListEquals(t, files, actualFiles)
|
||||
}
|
||||
|
||||
func TestVndkApexCurrent(t *testing.T) {
|
||||
commonFiles := []string{
|
||||
"lib/libc++.so",
|
||||
"lib64/libc++.so",
|
||||
"etc/llndk.libraries.29.txt",
|
||||
"etc/vndkcore.libraries.29.txt",
|
||||
"etc/vndksp.libraries.29.txt",
|
||||
"etc/vndkprivate.libraries.29.txt",
|
||||
"etc/vndkproduct.libraries.29.txt",
|
||||
}
|
||||
testCases := []struct {
|
||||
vndkVersion string
|
||||
expectedFiles []string
|
||||
}{
|
||||
{
|
||||
vndkVersion: "current",
|
||||
expectedFiles: append(commonFiles,
|
||||
"lib/libvndk.so",
|
||||
"lib/libvndksp.so",
|
||||
"lib64/libvndk.so",
|
||||
"lib64/libvndksp.so"),
|
||||
},
|
||||
}
|
||||
for _, tc := range testCases {
|
||||
t.Run("VNDK.current with DeviceVndkVersion="+tc.vndkVersion, func(t *testing.T) {
|
||||
ctx := testApex(t, `
|
||||
apex_vndk {
|
||||
name: "com.android.vndk.current",
|
||||
key: "com.android.vndk.current.key",
|
||||
updatable: false,
|
||||
}
|
||||
|
||||
apex_key {
|
||||
name: "com.android.vndk.current.key",
|
||||
public_key: "testkey.avbpubkey",
|
||||
private_key: "testkey.pem",
|
||||
}
|
||||
|
||||
cc_library {
|
||||
name: "libvndk",
|
||||
srcs: ["mylib.cpp"],
|
||||
vendor_available: true,
|
||||
product_available: true,
|
||||
vndk: {
|
||||
enabled: true,
|
||||
},
|
||||
system_shared_libs: [],
|
||||
stl: "none",
|
||||
apex_available: [ "com.android.vndk.current" ],
|
||||
}
|
||||
|
||||
cc_library {
|
||||
name: "libvndksp",
|
||||
srcs: ["mylib.cpp"],
|
||||
vendor_available: true,
|
||||
product_available: true,
|
||||
vndk: {
|
||||
enabled: true,
|
||||
support_system_process: true,
|
||||
},
|
||||
system_shared_libs: [],
|
||||
stl: "none",
|
||||
apex_available: [ "com.android.vndk.current" ],
|
||||
}
|
||||
|
||||
// VNDK-Ext should not cause any problems
|
||||
|
||||
cc_library {
|
||||
name: "libvndk.ext",
|
||||
srcs: ["mylib2.cpp"],
|
||||
vendor: true,
|
||||
vndk: {
|
||||
enabled: true,
|
||||
extends: "libvndk",
|
||||
},
|
||||
system_shared_libs: [],
|
||||
stl: "none",
|
||||
}
|
||||
|
||||
cc_library {
|
||||
name: "libvndksp.ext",
|
||||
srcs: ["mylib2.cpp"],
|
||||
vendor: true,
|
||||
vndk: {
|
||||
enabled: true,
|
||||
support_system_process: true,
|
||||
extends: "libvndksp",
|
||||
},
|
||||
system_shared_libs: [],
|
||||
stl: "none",
|
||||
}
|
||||
`+vndkLibrariesTxtFiles("current"), android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
|
||||
variables.DeviceVndkVersion = proptools.StringPtr(tc.vndkVersion)
|
||||
variables.KeepVndk = proptools.BoolPtr(true)
|
||||
}))
|
||||
ensureExactContents(t, ctx, "com.android.vndk.current", "android_common", tc.expectedFiles)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestVndkApexWithPrebuilt(t *testing.T) {
|
||||
ctx := testApex(t, `
|
||||
apex_vndk {
|
||||
name: "com.android.vndk.current",
|
||||
key: "com.android.vndk.current.key",
|
||||
updatable: false,
|
||||
}
|
||||
|
||||
apex_key {
|
||||
name: "com.android.vndk.current.key",
|
||||
public_key: "testkey.avbpubkey",
|
||||
private_key: "testkey.pem",
|
||||
}
|
||||
|
||||
cc_prebuilt_library_shared {
|
||||
name: "libvndk",
|
||||
srcs: ["libvndk.so"],
|
||||
vendor_available: true,
|
||||
product_available: true,
|
||||
vndk: {
|
||||
enabled: true,
|
||||
},
|
||||
system_shared_libs: [],
|
||||
stl: "none",
|
||||
apex_available: [ "com.android.vndk.current" ],
|
||||
}
|
||||
|
||||
cc_prebuilt_library_shared {
|
||||
name: "libvndk.arm",
|
||||
srcs: ["libvndk.arm.so"],
|
||||
vendor_available: true,
|
||||
product_available: true,
|
||||
vndk: {
|
||||
enabled: true,
|
||||
},
|
||||
enabled: false,
|
||||
arch: {
|
||||
arm: {
|
||||
enabled: true,
|
||||
},
|
||||
},
|
||||
system_shared_libs: [],
|
||||
stl: "none",
|
||||
apex_available: [ "com.android.vndk.current" ],
|
||||
}
|
||||
`+vndkLibrariesTxtFiles("current"),
|
||||
withFiles(map[string][]byte{
|
||||
"libvndk.so": nil,
|
||||
"libvndk.arm.so": nil,
|
||||
}))
|
||||
ensureExactContents(t, ctx, "com.android.vndk.current", "android_common", []string{
|
||||
"lib/libvndk.so",
|
||||
"lib/libvndk.arm.so",
|
||||
"lib64/libvndk.so",
|
||||
"lib/libc++.so",
|
||||
"lib64/libc++.so",
|
||||
"etc/*",
|
||||
})
|
||||
}
|
||||
|
||||
func vndkLibrariesTxtFiles(vers ...string) (result string) {
|
||||
for _, v := range vers {
|
||||
if v == "current" {
|
||||
@@ -4090,9 +3776,10 @@ func TestVndkApexVersion(t *testing.T) {
|
||||
func TestVndkApexNameRule(t *testing.T) {
|
||||
ctx := testApex(t, `
|
||||
apex_vndk {
|
||||
name: "com.android.vndk.current",
|
||||
name: "com.android.vndk.v29",
|
||||
key: "myapex.key",
|
||||
file_contexts: ":myapex-file_contexts",
|
||||
vndk_version: "29",
|
||||
updatable: false,
|
||||
}
|
||||
apex_vndk {
|
||||
@@ -4106,7 +3793,7 @@ func TestVndkApexNameRule(t *testing.T) {
|
||||
name: "myapex.key",
|
||||
public_key: "testkey.avbpubkey",
|
||||
private_key: "testkey.pem",
|
||||
}`+vndkLibrariesTxtFiles("28", "current"))
|
||||
}`+vndkLibrariesTxtFiles("28", "29"))
|
||||
|
||||
assertApexName := func(expected, moduleName string) {
|
||||
module := ctx.ModuleForTests(moduleName, "android_common")
|
||||
@@ -4114,51 +3801,10 @@ func TestVndkApexNameRule(t *testing.T) {
|
||||
ensureContains(t, apexManifestRule.Args["opt"], "-v name "+expected)
|
||||
}
|
||||
|
||||
assertApexName("com.android.vndk.v29", "com.android.vndk.current")
|
||||
assertApexName("com.android.vndk.v29", "com.android.vndk.v29")
|
||||
assertApexName("com.android.vndk.v28", "com.android.vndk.v28")
|
||||
}
|
||||
|
||||
func TestVndkApexSkipsNativeBridgeSupportedModules(t *testing.T) {
|
||||
ctx := testApex(t, `
|
||||
apex_vndk {
|
||||
name: "com.android.vndk.current",
|
||||
key: "com.android.vndk.current.key",
|
||||
file_contexts: ":myapex-file_contexts",
|
||||
updatable: false,
|
||||
}
|
||||
|
||||
apex_key {
|
||||
name: "com.android.vndk.current.key",
|
||||
public_key: "testkey.avbpubkey",
|
||||
private_key: "testkey.pem",
|
||||
}
|
||||
|
||||
cc_library {
|
||||
name: "libvndk",
|
||||
srcs: ["mylib.cpp"],
|
||||
vendor_available: true,
|
||||
product_available: true,
|
||||
native_bridge_supported: true,
|
||||
host_supported: true,
|
||||
vndk: {
|
||||
enabled: true,
|
||||
},
|
||||
system_shared_libs: [],
|
||||
stl: "none",
|
||||
apex_available: [ "com.android.vndk.current" ],
|
||||
}
|
||||
`+vndkLibrariesTxtFiles("current"),
|
||||
withNativeBridgeEnabled)
|
||||
|
||||
ensureExactContents(t, ctx, "com.android.vndk.current", "android_common", []string{
|
||||
"lib/libvndk.so",
|
||||
"lib64/libvndk.so",
|
||||
"lib/libc++.so",
|
||||
"lib64/libc++.so",
|
||||
"etc/*",
|
||||
})
|
||||
}
|
||||
|
||||
func TestVndkApexDoesntSupportNativeBridgeSupported(t *testing.T) {
|
||||
testApexError(t, `module "com.android.vndk.current" .*: native_bridge_supported: .* doesn't support native bridge binary`, `
|
||||
apex_vndk {
|
||||
@@ -4259,47 +3905,6 @@ func TestVndkApexWithBinder32(t *testing.T) {
|
||||
})
|
||||
}
|
||||
|
||||
func TestVndkApexShouldNotProvideNativeLibs(t *testing.T) {
|
||||
ctx := testApex(t, `
|
||||
apex_vndk {
|
||||
name: "com.android.vndk.current",
|
||||
key: "com.android.vndk.current.key",
|
||||
file_contexts: ":myapex-file_contexts",
|
||||
updatable: false,
|
||||
}
|
||||
|
||||
apex_key {
|
||||
name: "com.android.vndk.current.key",
|
||||
public_key: "testkey.avbpubkey",
|
||||
private_key: "testkey.pem",
|
||||
}
|
||||
|
||||
cc_library {
|
||||
name: "libz",
|
||||
vendor_available: true,
|
||||
product_available: true,
|
||||
vndk: {
|
||||
enabled: true,
|
||||
},
|
||||
stubs: {
|
||||
symbol_file: "libz.map.txt",
|
||||
versions: ["30"],
|
||||
}
|
||||
}
|
||||
`+vndkLibrariesTxtFiles("current"), withFiles(map[string][]byte{
|
||||
"libz.map.txt": nil,
|
||||
}))
|
||||
|
||||
apexManifestRule := ctx.ModuleForTests("com.android.vndk.current", "android_common").Rule("apexManifestRule")
|
||||
provideNativeLibs := names(apexManifestRule.Args["provideNativeLibs"])
|
||||
ensureListEmpty(t, provideNativeLibs)
|
||||
ensureExactContents(t, ctx, "com.android.vndk.current", "android_common", []string{
|
||||
"out/soong/.intermediates/libz/android_vendor.29_arm64_armv8-a_shared/libz.so:lib64/libz.so",
|
||||
"out/soong/.intermediates/libz/android_vendor.29_arm_armv7-a-neon_shared/libz.so:lib/libz.so",
|
||||
"*/*",
|
||||
})
|
||||
}
|
||||
|
||||
func TestVendorApexWithVndkPrebuilts(t *testing.T) {
|
||||
ctx := testApex(t, "",
|
||||
android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
|
||||
|
@@ -1,78 +0,0 @@
|
||||
package apex
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/google/blueprint/proptools"
|
||||
|
||||
"android/soong/android"
|
||||
)
|
||||
|
||||
func TestVndkApexUsesVendorVariant(t *testing.T) {
|
||||
bp := `
|
||||
apex_vndk {
|
||||
name: "com.android.vndk.current",
|
||||
key: "mykey",
|
||||
updatable: false,
|
||||
}
|
||||
apex_key {
|
||||
name: "mykey",
|
||||
}
|
||||
cc_library {
|
||||
name: "libfoo",
|
||||
vendor_available: true,
|
||||
product_available: true,
|
||||
vndk: {
|
||||
enabled: true,
|
||||
},
|
||||
system_shared_libs: [],
|
||||
stl: "none",
|
||||
}
|
||||
` + vndkLibrariesTxtFiles("current")
|
||||
|
||||
ensureFileSrc := func(t *testing.T, files []fileInApex, path, src string) {
|
||||
t.Helper()
|
||||
for _, f := range files {
|
||||
if f.path == path {
|
||||
ensureContains(t, f.src, src)
|
||||
return
|
||||
}
|
||||
}
|
||||
t.Errorf("expected path %q not found", path)
|
||||
}
|
||||
|
||||
t.Run("VNDK lib doesn't have an apex variant", func(t *testing.T) {
|
||||
ctx := testApex(t, bp)
|
||||
|
||||
// libfoo doesn't have apex variants
|
||||
for _, variant := range ctx.ModuleVariantsForTests("libfoo") {
|
||||
ensureNotContains(t, variant, "_myapex")
|
||||
}
|
||||
|
||||
// VNDK APEX doesn't create apex variant
|
||||
files := getFiles(t, ctx, "com.android.vndk.current", "android_common")
|
||||
ensureFileSrc(t, files, "lib/libfoo.so", "libfoo/android_vendor.29_arm_armv7-a-neon_shared/libfoo.so")
|
||||
})
|
||||
|
||||
t.Run("VNDK APEX gathers only vendor variants even if product variants are available", func(t *testing.T) {
|
||||
ctx := testApex(t, bp)
|
||||
|
||||
files := getFiles(t, ctx, "com.android.vndk.current", "android_common")
|
||||
ensureFileSrc(t, files, "lib/libfoo.so", "libfoo/android_vendor.29_arm_armv7-a-neon_shared/libfoo.so")
|
||||
})
|
||||
|
||||
t.Run("VNDK APEX supports coverage variants", func(t *testing.T) {
|
||||
ctx := testApex(t, bp,
|
||||
android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
|
||||
variables.GcovCoverage = proptools.BoolPtr(true)
|
||||
variables.Native_coverage = proptools.BoolPtr(true)
|
||||
}),
|
||||
)
|
||||
|
||||
files := getFiles(t, ctx, "com.android.vndk.current", "android_common")
|
||||
ensureFileSrc(t, files, "lib/libfoo.so", "libfoo/android_vendor.29_arm_armv7-a-neon_shared/libfoo.so")
|
||||
|
||||
files = getFiles(t, ctx, "com.android.vndk.current", "android_common_cov")
|
||||
ensureFileSrc(t, files, "lib/libfoo.so", "libfoo/android_vendor.29_arm_armv7-a-neon_shared_cov/libfoo.so")
|
||||
})
|
||||
}
|
1744
cc/cc_test.go
1744
cc/cc_test.go
File diff suppressed because it is too large
Load Diff
@@ -200,7 +200,7 @@ func TestVendorProductVariantGenrule(t *testing.T) {
|
||||
}
|
||||
`
|
||||
t.Helper()
|
||||
ctx := PrepareForTestWithCcIncludeVndk.RunTestWithBp(t, bp)
|
||||
ctx := PrepareForIntegrationTestWithCc.RunTestWithBp(t, bp)
|
||||
|
||||
variants := ctx.ModuleVariantsForTests("gen")
|
||||
if !slices.Contains(variants, "android_vendor_arm64_armv8-a") {
|
||||
|
@@ -496,11 +496,10 @@ func (v *CcApiVariant) DebugRamdiskVariantNeeded(ctx android.BaseModuleContext)
|
||||
func (v *CcApiVariant) RecoveryVariantNeeded(ctx android.BaseModuleContext) bool { return false }
|
||||
func (v *CcApiVariant) ExtraImageVariations(ctx android.BaseModuleContext) []string {
|
||||
var variations []string
|
||||
platformVndkVersion := ctx.DeviceConfig().PlatformVndkVersion()
|
||||
|
||||
if String(v.properties.Variant) == "llndk" {
|
||||
variations = append(variations, VendorVariationPrefix+platformVndkVersion)
|
||||
variations = append(variations, ProductVariationPrefix+platformVndkVersion)
|
||||
variations = append(variations, VendorVariation)
|
||||
variations = append(variations, ProductVariation)
|
||||
}
|
||||
|
||||
return variations
|
||||
|
@@ -71,8 +71,8 @@ func TestApiLibraryReplacesExistingModule(t *testing.T) {
|
||||
android.AssertBoolEquals(t, "original library should be linked with non-stub variant", true, hasDirectDependency(t, ctx, libfoo, libbar))
|
||||
android.AssertBoolEquals(t, "Stub library from API surface should be not linked with non-stub variant", false, hasDirectDependency(t, ctx, libfoo, libbarApiImport))
|
||||
|
||||
libfooVendor := ctx.ModuleForTests("libfoo", "android_vendor.29_arm64_armv8-a_shared").Module()
|
||||
libbarApiImportVendor := ctx.ModuleForTests("libbar.apiimport", "android_vendor.29_arm64_armv8-a_shared").Module()
|
||||
libfooVendor := ctx.ModuleForTests("libfoo", "android_vendor_arm64_armv8-a_shared").Module()
|
||||
libbarApiImportVendor := ctx.ModuleForTests("libbar.apiimport", "android_vendor_arm64_armv8-a_shared").Module()
|
||||
|
||||
android.AssertBoolEquals(t, "original library should not be linked", false, hasDirectDependency(t, ctx, libfooVendor, libbar))
|
||||
android.AssertBoolEquals(t, "Stub library from API surface should be linked", true, hasDirectDependency(t, ctx, libfooVendor, libbarApiImportVendor))
|
||||
@@ -102,8 +102,8 @@ func TestApiLibraryDoNotRequireOriginalModule(t *testing.T) {
|
||||
|
||||
ctx := prepareForCcTest.RunTestWithBp(t, bp)
|
||||
|
||||
libfoo := ctx.ModuleForTests("libfoo", "android_vendor.29_arm64_armv8-a_shared").Module()
|
||||
libbarApiImport := ctx.ModuleForTests("libbar.apiimport", "android_vendor.29_arm64_armv8-a_shared").Module()
|
||||
libfoo := ctx.ModuleForTests("libfoo", "android_vendor_arm64_armv8-a_shared").Module()
|
||||
libbarApiImport := ctx.ModuleForTests("libbar.apiimport", "android_vendor_arm64_armv8-a_shared").Module()
|
||||
|
||||
android.AssertBoolEquals(t, "Stub library from API surface should be linked", true, hasDirectDependency(t, ctx, libfoo, libbarApiImport))
|
||||
}
|
||||
@@ -135,9 +135,9 @@ func TestApiLibraryShouldNotReplaceWithoutApiImport(t *testing.T) {
|
||||
|
||||
ctx := prepareForCcTest.RunTestWithBp(t, bp)
|
||||
|
||||
libfoo := ctx.ModuleForTests("libfoo", "android_vendor.29_arm64_armv8-a_shared").Module()
|
||||
libbar := ctx.ModuleForTests("libbar", "android_vendor.29_arm64_armv8-a_shared").Module()
|
||||
libbarApiImport := ctx.ModuleForTests("libbar.apiimport", "android_vendor.29_arm64_armv8-a_shared").Module()
|
||||
libfoo := ctx.ModuleForTests("libfoo", "android_vendor_arm64_armv8-a_shared").Module()
|
||||
libbar := ctx.ModuleForTests("libbar", "android_vendor_arm64_armv8-a_shared").Module()
|
||||
libbarApiImport := ctx.ModuleForTests("libbar.apiimport", "android_vendor_arm64_armv8-a_shared").Module()
|
||||
|
||||
android.AssertBoolEquals(t, "original library should be linked", true, hasDirectDependency(t, ctx, libfoo, libbar))
|
||||
android.AssertBoolEquals(t, "Stub library from API surface should not be linked", false, hasDirectDependency(t, ctx, libfoo, libbarApiImport))
|
||||
@@ -174,13 +174,13 @@ func TestExportDirFromStubLibrary(t *testing.T) {
|
||||
}
|
||||
`
|
||||
ctx := prepareForCcTest.RunTestWithBp(t, bp)
|
||||
vendorCFlags := ctx.ModuleForTests("vendorbin", "android_vendor.29_arm64_armv8-a").Rule("cc").Args["cFlags"]
|
||||
vendorCFlags := ctx.ModuleForTests("vendorbin", "android_vendor_arm64_armv8-a").Rule("cc").Args["cFlags"]
|
||||
android.AssertStringDoesContain(t, "Vendor binary should compile using headers provided by stub", vendorCFlags, "-Istub_include_dir")
|
||||
android.AssertStringDoesNotContain(t, "Vendor binary should not compile using headers of source", vendorCFlags, "-Isource_include_dir")
|
||||
android.AssertStringDoesContain(t, "Vendor binary should compile using system headers provided by stub", vendorCFlags, "-isystem stub_system_include_dir")
|
||||
android.AssertStringDoesNotContain(t, "Vendor binary should not compile using system headers of source", vendorCFlags, "-isystem source_system_include_dir")
|
||||
|
||||
vendorImplicits := ctx.ModuleForTests("vendorbin", "android_vendor.29_arm64_armv8-a").Rule("cc").OrderOnly.Strings()
|
||||
vendorImplicits := ctx.ModuleForTests("vendorbin", "android_vendor_arm64_armv8-a").Rule("cc").OrderOnly.Strings()
|
||||
// Building the stub.so file first assembles its .h files in multi-tree out.
|
||||
// These header files are required for compiling the other API domain (vendor in this case)
|
||||
android.AssertStringListContains(t, "Vendor binary compilation should have an implicit dep on the stub .so file", vendorImplicits, "libfoo.so")
|
||||
@@ -223,17 +223,17 @@ func TestApiLibraryWithLlndkVariant(t *testing.T) {
|
||||
|
||||
ctx := prepareForCcTest.RunTestWithBp(t, bp)
|
||||
|
||||
binfoo := ctx.ModuleForTests("binfoo", "android_vendor.29_arm64_armv8-a").Module()
|
||||
libbarApiImport := ctx.ModuleForTests("libbar.apiimport", "android_vendor.29_arm64_armv8-a_shared").Module()
|
||||
libbarApiVariant := ctx.ModuleForTests("libbar.llndk.apiimport", "android_vendor.29_arm64_armv8-a").Module()
|
||||
binfoo := ctx.ModuleForTests("binfoo", "android_vendor_arm64_armv8-a").Module()
|
||||
libbarApiImport := ctx.ModuleForTests("libbar.apiimport", "android_vendor_arm64_armv8-a_shared").Module()
|
||||
libbarApiVariant := ctx.ModuleForTests("libbar.llndk.apiimport", "android_vendor_arm64_armv8-a").Module()
|
||||
|
||||
android.AssertBoolEquals(t, "Stub library from API surface should be linked", true, hasDirectDependency(t, ctx, binfoo, libbarApiImport))
|
||||
android.AssertBoolEquals(t, "Stub library variant from API surface should be linked", true, hasDirectDependency(t, ctx, libbarApiImport, libbarApiVariant))
|
||||
|
||||
binFooLibFlags := ctx.ModuleForTests("binfoo", "android_vendor.29_arm64_armv8-a").Rule("ld").Args["libFlags"]
|
||||
binFooLibFlags := ctx.ModuleForTests("binfoo", "android_vendor_arm64_armv8-a").Rule("ld").Args["libFlags"]
|
||||
android.AssertStringDoesContain(t, "Vendor binary should be linked with LLNDK variant source", binFooLibFlags, "libbar.llndk.apiimport.so")
|
||||
|
||||
binFooCFlags := ctx.ModuleForTests("binfoo", "android_vendor.29_arm64_armv8-a").Rule("cc").Args["cFlags"]
|
||||
binFooCFlags := ctx.ModuleForTests("binfoo", "android_vendor_arm64_armv8-a").Rule("cc").Args["cFlags"]
|
||||
android.AssertStringDoesContain(t, "Vendor binary should include headers from the LLNDK variant source", binFooCFlags, "-Ilibbar_llndk_include")
|
||||
}
|
||||
|
||||
@@ -446,12 +446,12 @@ func TestApiLibraryWithMultipleVariants(t *testing.T) {
|
||||
|
||||
binfoo := ctx.ModuleForTests("binfoo", "android_arm64_armv8-a_sdk").Module()
|
||||
libbarApiImportv29 := ctx.ModuleForTests("libbar.apiimport", "android_arm64_armv8-a_sdk_shared_29").Module()
|
||||
libbarApiImportLlndk := ctx.ModuleForTests("libbar.apiimport", "android_vendor.29_arm64_armv8-a_shared").Module()
|
||||
libbarApiImportLlndk := ctx.ModuleForTests("libbar.apiimport", "android_vendor_arm64_armv8-a_shared").Module()
|
||||
|
||||
android.AssertBoolEquals(t, "Binary using SDK should be linked with API library from NDK variant", true, hasDirectDependency(t, ctx, binfoo, libbarApiImportv29))
|
||||
android.AssertBoolEquals(t, "Binary using SDK should not be linked with API library from LLNDK variant", false, hasDirectDependency(t, ctx, binfoo, libbarApiImportLlndk))
|
||||
|
||||
binbaz := ctx.ModuleForTests("binbaz", "android_vendor.29_arm64_armv8-a").Module()
|
||||
binbaz := ctx.ModuleForTests("binbaz", "android_vendor_arm64_armv8-a").Module()
|
||||
|
||||
android.AssertBoolEquals(t, "Vendor binary should be linked with API library from LLNDK variant", true, hasDirectDependency(t, ctx, binbaz, libbarApiImportLlndk))
|
||||
android.AssertBoolEquals(t, "Vendor binary should not be linked with API library from NDK variant", false, hasDirectDependency(t, ctx, binbaz, libbarApiImportv29))
|
||||
|
@@ -41,7 +41,7 @@ func TestMinSdkVersionsOfCrtObjects(t *testing.T) {
|
||||
{"android_arm64_armv8-a_sdk_29", "29"},
|
||||
{"android_arm64_armv8-a_sdk_30", "30"},
|
||||
{"android_arm64_armv8-a_sdk_current", "10000"},
|
||||
{"android_vendor.29_arm64_armv8-a", "29"},
|
||||
{"android_vendor_arm64_armv8-a", "10000"},
|
||||
}
|
||||
|
||||
ctx := prepareForCcTest.RunTestWithBp(t, bp)
|
||||
@@ -50,7 +50,7 @@ func TestMinSdkVersionsOfCrtObjects(t *testing.T) {
|
||||
expected := "-target aarch64-linux-android" + v.num + " "
|
||||
android.AssertStringDoesContain(t, "cflag", cflags, expected)
|
||||
}
|
||||
ctx = prepareForCcTestWithoutVndk.RunTestWithBp(t, bp)
|
||||
ctx = prepareForCcTest.RunTestWithBp(t, bp)
|
||||
android.AssertStringDoesContain(t, "cflag",
|
||||
ctx.ModuleForTests("crt_foo", "android_vendor_arm64_armv8-a").Rule("cc").Args["cFlags"],
|
||||
"-target aarch64-linux-android10000 ")
|
||||
|
@@ -305,10 +305,7 @@ func commonDefaultModules() string {
|
||||
recovery_available: true,
|
||||
host_supported: true,
|
||||
min_sdk_version: "29",
|
||||
vndk: {
|
||||
enabled: true,
|
||||
support_system_process: true,
|
||||
},
|
||||
double_loadable: true,
|
||||
apex_available: [
|
||||
"//apex_available:platform",
|
||||
"//apex_available:anyapex",
|
||||
@@ -624,19 +621,6 @@ var PrepareForTestOnLinuxBionic = android.GroupFixturePreparers(
|
||||
android.FixtureOverrideTextFile(linuxBionicDefaultsPath, withLinuxBionic()),
|
||||
)
|
||||
|
||||
// This adds some additional modules and singletons which might negatively impact the performance
|
||||
// of tests so they are not included in the PrepareForIntegrationTestWithCc.
|
||||
var PrepareForTestWithCcIncludeVndk = android.GroupFixturePreparers(
|
||||
PrepareForIntegrationTestWithCc,
|
||||
android.FixtureRegisterWithContext(func(ctx android.RegistrationContext) {
|
||||
snapshot.VendorSnapshotImageSingleton.Init(ctx)
|
||||
snapshot.RecoverySnapshotImageSingleton.Init(ctx)
|
||||
RegisterVendorSnapshotModules(ctx)
|
||||
RegisterRecoverySnapshotModules(ctx)
|
||||
ctx.RegisterSingletonType("vndk-snapshot", VndkSnapshotSingleton)
|
||||
}),
|
||||
)
|
||||
|
||||
// PrepareForTestWithHostMusl sets the host configuration to musl libc instead of glibc. It also disables the test
|
||||
// on mac, which doesn't support musl libc, and adds musl modules.
|
||||
var PrepareForTestWithHostMusl = android.GroupFixturePreparers(
|
||||
@@ -722,7 +706,6 @@ func CreateTestContext(config android.Config) *android.TestContext {
|
||||
snapshot.RecoverySnapshotImageSingleton.Init(ctx)
|
||||
RegisterVendorSnapshotModules(ctx)
|
||||
RegisterRecoverySnapshotModules(ctx)
|
||||
ctx.RegisterSingletonType("vndk-snapshot", VndkSnapshotSingleton)
|
||||
RegisterVndkLibraryTxtTypes(ctx)
|
||||
|
||||
ctx.PreArchMutators(android.RegisterDefaultsPreArchMutators)
|
||||
|
@@ -65,8 +65,8 @@ func TestVendorPublicLibraries(t *testing.T) {
|
||||
`)
|
||||
|
||||
coreVariant := "android_arm64_armv8-a_shared"
|
||||
vendorVariant := "android_vendor.29_arm64_armv8-a_shared"
|
||||
productVariant := "android_product.29_arm64_armv8-a_shared"
|
||||
vendorVariant := "android_vendor_arm64_armv8-a_shared"
|
||||
productVariant := "android_product_arm64_armv8-a_shared"
|
||||
|
||||
// test if header search paths are correctly added
|
||||
// _static variant is used since _shared reuses *.o from the static variant
|
||||
|
@@ -47,7 +47,7 @@ var PrepareForIntegrationTestWithRust = android.GroupFixturePreparers(
|
||||
|
||||
var PrepareForTestWithRustIncludeVndk = android.GroupFixturePreparers(
|
||||
PrepareForIntegrationTestWithRust,
|
||||
cc.PrepareForTestWithCcIncludeVndk,
|
||||
cc.PrepareForIntegrationTestWithCc,
|
||||
)
|
||||
|
||||
func GatherRequiredDepsForTest() string {
|
||||
|
Reference in New Issue
Block a user