|
@@ -108,27 +108,27 @@ func TestVendorSnapshotCapture(t *testing.T) {
|
|
|
// For shared libraries, only non-VNDK vendor_available modules are captured
|
|
|
sharedVariant := fmt.Sprintf("android_vendor.29_%s_%s_shared", archType, archVariant)
|
|
|
sharedDir := filepath.Join(snapshotVariantPath, archDir, "shared")
|
|
|
- checkSnapshot(t, ctx, snapshotSingleton, "libvendor", "libvendor.so", sharedDir, sharedVariant)
|
|
|
- checkSnapshot(t, ctx, snapshotSingleton, "libvendor_available", "libvendor_available.so", sharedDir, sharedVariant)
|
|
|
+ CheckSnapshot(t, ctx, snapshotSingleton, "libvendor", "libvendor.so", sharedDir, sharedVariant)
|
|
|
+ CheckSnapshot(t, ctx, snapshotSingleton, "libvendor_available", "libvendor_available.so", sharedDir, sharedVariant)
|
|
|
jsonFiles = append(jsonFiles,
|
|
|
filepath.Join(sharedDir, "libvendor.so.json"),
|
|
|
filepath.Join(sharedDir, "libvendor_available.so.json"))
|
|
|
|
|
|
// LLNDK modules are not captured
|
|
|
- checkSnapshotExclude(t, ctx, snapshotSingleton, "libllndk", "libllndk.so", sharedDir, sharedVariant)
|
|
|
+ CheckSnapshotExclude(t, ctx, snapshotSingleton, "libllndk", "libllndk.so", sharedDir, sharedVariant)
|
|
|
|
|
|
// For static libraries, all vendor:true and vendor_available modules (including VNDK) are captured.
|
|
|
// Also cfi variants are captured, except for prebuilts like toolchain_library
|
|
|
staticVariant := fmt.Sprintf("android_vendor.29_%s_%s_static", archType, archVariant)
|
|
|
staticCfiVariant := fmt.Sprintf("android_vendor.29_%s_%s_static_cfi", archType, archVariant)
|
|
|
staticDir := filepath.Join(snapshotVariantPath, archDir, "static")
|
|
|
- checkSnapshot(t, ctx, snapshotSingleton, "libb", "libb.a", staticDir, staticVariant)
|
|
|
- checkSnapshot(t, ctx, snapshotSingleton, "libvndk", "libvndk.a", staticDir, staticVariant)
|
|
|
- checkSnapshot(t, ctx, snapshotSingleton, "libvndk", "libvndk.cfi.a", staticDir, staticCfiVariant)
|
|
|
- checkSnapshot(t, ctx, snapshotSingleton, "libvendor", "libvendor.a", staticDir, staticVariant)
|
|
|
- checkSnapshot(t, ctx, snapshotSingleton, "libvendor", "libvendor.cfi.a", staticDir, staticCfiVariant)
|
|
|
- checkSnapshot(t, ctx, snapshotSingleton, "libvendor_available", "libvendor_available.a", staticDir, staticVariant)
|
|
|
- checkSnapshot(t, ctx, snapshotSingleton, "libvendor_available", "libvendor_available.cfi.a", staticDir, staticCfiVariant)
|
|
|
+ CheckSnapshot(t, ctx, snapshotSingleton, "libb", "libb.a", staticDir, staticVariant)
|
|
|
+ CheckSnapshot(t, ctx, snapshotSingleton, "libvndk", "libvndk.a", staticDir, staticVariant)
|
|
|
+ CheckSnapshot(t, ctx, snapshotSingleton, "libvndk", "libvndk.cfi.a", staticDir, staticCfiVariant)
|
|
|
+ CheckSnapshot(t, ctx, snapshotSingleton, "libvendor", "libvendor.a", staticDir, staticVariant)
|
|
|
+ CheckSnapshot(t, ctx, snapshotSingleton, "libvendor", "libvendor.cfi.a", staticDir, staticCfiVariant)
|
|
|
+ CheckSnapshot(t, ctx, snapshotSingleton, "libvendor_available", "libvendor_available.a", staticDir, staticVariant)
|
|
|
+ CheckSnapshot(t, ctx, snapshotSingleton, "libvendor_available", "libvendor_available.cfi.a", staticDir, staticCfiVariant)
|
|
|
jsonFiles = append(jsonFiles,
|
|
|
filepath.Join(staticDir, "libb.a.json"),
|
|
|
filepath.Join(staticDir, "libvndk.a.json"),
|
|
@@ -142,8 +142,8 @@ func TestVendorSnapshotCapture(t *testing.T) {
|
|
|
if archType == "arm64" {
|
|
|
binaryVariant := fmt.Sprintf("android_vendor.29_%s_%s", archType, archVariant)
|
|
|
binaryDir := filepath.Join(snapshotVariantPath, archDir, "binary")
|
|
|
- checkSnapshot(t, ctx, snapshotSingleton, "vendor_bin", "vendor_bin", binaryDir, binaryVariant)
|
|
|
- checkSnapshot(t, ctx, snapshotSingleton, "vendor_available_bin", "vendor_available_bin", binaryDir, binaryVariant)
|
|
|
+ CheckSnapshot(t, ctx, snapshotSingleton, "vendor_bin", "vendor_bin", binaryDir, binaryVariant)
|
|
|
+ CheckSnapshot(t, ctx, snapshotSingleton, "vendor_available_bin", "vendor_available_bin", binaryDir, binaryVariant)
|
|
|
jsonFiles = append(jsonFiles,
|
|
|
filepath.Join(binaryDir, "vendor_bin.json"),
|
|
|
filepath.Join(binaryDir, "vendor_available_bin.json"))
|
|
@@ -156,7 +156,7 @@ func TestVendorSnapshotCapture(t *testing.T) {
|
|
|
// For object modules, all vendor:true and vendor_available modules are captured.
|
|
|
objectVariant := fmt.Sprintf("android_vendor.29_%s_%s", archType, archVariant)
|
|
|
objectDir := filepath.Join(snapshotVariantPath, archDir, "object")
|
|
|
- checkSnapshot(t, ctx, snapshotSingleton, "obj", "obj.o", objectDir, objectVariant)
|
|
|
+ CheckSnapshot(t, ctx, snapshotSingleton, "obj", "obj.o", objectDir, objectVariant)
|
|
|
jsonFiles = append(jsonFiles, filepath.Join(objectDir, "obj.o.json"))
|
|
|
}
|
|
|
|
|
@@ -239,15 +239,15 @@ func TestVendorSnapshotDirected(t *testing.T) {
|
|
|
sharedDir := filepath.Join(snapshotVariantPath, archDir, "shared")
|
|
|
|
|
|
// Included modules
|
|
|
- checkSnapshot(t, ctx, snapshotSingleton, "libvendor", "libvendor.so", sharedDir, sharedVariant)
|
|
|
+ CheckSnapshot(t, ctx, snapshotSingleton, "libvendor", "libvendor.so", sharedDir, sharedVariant)
|
|
|
includeJsonFiles = append(includeJsonFiles, filepath.Join(sharedDir, "libvendor.so.json"))
|
|
|
// Check that snapshot captures "prefer: true" prebuilt
|
|
|
- checkSnapshot(t, ctx, snapshotSingleton, "prebuilt_libfoo", "libfoo.so", sharedDir, sharedVariant)
|
|
|
+ CheckSnapshot(t, ctx, snapshotSingleton, "prebuilt_libfoo", "libfoo.so", sharedDir, sharedVariant)
|
|
|
includeJsonFiles = append(includeJsonFiles, filepath.Join(sharedDir, "libfoo.so.json"))
|
|
|
|
|
|
// Excluded modules. Modules not included in the directed vendor snapshot
|
|
|
// are still include as fake modules.
|
|
|
- checkSnapshotRule(t, ctx, snapshotSingleton, "libvendor_available", "libvendor_available.so", sharedDir, sharedVariant)
|
|
|
+ CheckSnapshotRule(t, ctx, snapshotSingleton, "libvendor_available", "libvendor_available.so", sharedDir, sharedVariant)
|
|
|
includeJsonFiles = append(includeJsonFiles, filepath.Join(sharedDir, "libvendor_available.so.json"))
|
|
|
}
|
|
|
|
|
@@ -839,10 +839,11 @@ func TestVendorSnapshotUse(t *testing.T) {
|
|
|
[]string{staticVariant, "libvendor.vendor_static.31.arm64"},
|
|
|
[]string{staticVariant, "libvendor_without_snapshot"},
|
|
|
} {
|
|
|
- outputPaths := getOutputPaths(ctx, input[0] /* variant */, []string{input[1]} /* module name */)
|
|
|
+ outputPaths := GetOutputPaths(ctx, input[0] /* variant */, []string{input[1]} /* module name */)
|
|
|
if !strings.Contains(libclientLdFlags, outputPaths[0].String()) {
|
|
|
t.Errorf("libflags for libclient must contain %#v, but was %#v", outputPaths[0], libclientLdFlags)
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
|
|
|
libclientAndroidMkSharedLibs := ctx.ModuleForTests("libclient", sharedVariant).Module().(*Module).Properties.AndroidMkSharedLibs
|
|
@@ -868,7 +869,7 @@ func TestVendorSnapshotUse(t *testing.T) {
|
|
|
}
|
|
|
|
|
|
libclientCfiLdFlags := ctx.ModuleForTests("libclient_cfi", sharedCfiVariant).Rule("ld").Args["libFlags"]
|
|
|
- libvendorCfiOutputPaths := getOutputPaths(ctx, staticCfiVariant, []string{"libvendor.vendor_static.31.arm64"})
|
|
|
+ libvendorCfiOutputPaths := GetOutputPaths(ctx, staticCfiVariant, []string{"libvendor.vendor_static.31.arm64"})
|
|
|
if !strings.Contains(libclientCfiLdFlags, libvendorCfiOutputPaths[0].String()) {
|
|
|
t.Errorf("libflags for libclientCfi must contain %#v, but was %#v", libvendorCfiOutputPaths[0], libclientCfiLdFlags)
|
|
|
}
|
|
@@ -881,7 +882,7 @@ func TestVendorSnapshotUse(t *testing.T) {
|
|
|
}
|
|
|
|
|
|
binWithoutSnapshotLdFlags := ctx.ModuleForTests("bin_without_snapshot", binaryVariant).Rule("ld").Args["libFlags"]
|
|
|
- libVndkStaticOutputPaths := getOutputPaths(ctx, staticVariant, []string{"libvndk.vendor_static.31.arm64"})
|
|
|
+ libVndkStaticOutputPaths := GetOutputPaths(ctx, staticVariant, []string{"libvndk.vendor_static.31.arm64"})
|
|
|
if !strings.Contains(binWithoutSnapshotLdFlags, libVndkStaticOutputPaths[0].String()) {
|
|
|
t.Errorf("libflags for bin_without_snapshot must contain %#v, but was %#v",
|
|
|
libVndkStaticOutputPaths[0], binWithoutSnapshotLdFlags)
|
|
@@ -1006,14 +1007,6 @@ func TestVendorSnapshotSanitizer(t *testing.T) {
|
|
|
assertString(t, staticCfiModule.outputFile.Path().Base(), "libsnapshot.cfi.a")
|
|
|
}
|
|
|
|
|
|
-func assertExcludeFromVendorSnapshotIs(t *testing.T, ctx *android.TestContext, name string, expected bool) {
|
|
|
- t.Helper()
|
|
|
- m := ctx.ModuleForTests(name, vendorVariant).Module().(*Module)
|
|
|
- if m.ExcludeFromVendorSnapshot() != expected {
|
|
|
- t.Errorf("expected %q ExcludeFromVendorSnapshot to be %t", m.String(), expected)
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
func assertExcludeFromRecoverySnapshotIs(t *testing.T, ctx *android.TestContext, name string, expected bool) {
|
|
|
t.Helper()
|
|
|
m := ctx.ModuleForTests(name, recoveryVariant).Module().(*Module)
|
|
@@ -1081,13 +1074,13 @@ func TestVendorSnapshotExclude(t *testing.T) {
|
|
|
android.FailIfErrored(t, errs)
|
|
|
|
|
|
// Test an include and exclude framework module.
|
|
|
- assertExcludeFromVendorSnapshotIs(t, ctx, "libinclude", false)
|
|
|
- assertExcludeFromVendorSnapshotIs(t, ctx, "libexclude", true)
|
|
|
- assertExcludeFromVendorSnapshotIs(t, ctx, "libavailable_exclude", true)
|
|
|
+ AssertExcludeFromVendorSnapshotIs(t, ctx, "libinclude", false, vendorVariant)
|
|
|
+ AssertExcludeFromVendorSnapshotIs(t, ctx, "libexclude", true, vendorVariant)
|
|
|
+ AssertExcludeFromVendorSnapshotIs(t, ctx, "libavailable_exclude", true, vendorVariant)
|
|
|
|
|
|
// A vendor module is excluded, but by its path, not the
|
|
|
// exclude_from_vendor_snapshot property.
|
|
|
- assertExcludeFromVendorSnapshotIs(t, ctx, "libvendor", false)
|
|
|
+ AssertExcludeFromVendorSnapshotIs(t, ctx, "libvendor", false, vendorVariant)
|
|
|
|
|
|
// Verify the content of the vendor snapshot.
|
|
|
|
|
@@ -1110,15 +1103,15 @@ func TestVendorSnapshotExclude(t *testing.T) {
|
|
|
sharedDir := filepath.Join(snapshotVariantPath, archDir, "shared")
|
|
|
|
|
|
// Included modules
|
|
|
- checkSnapshot(t, ctx, snapshotSingleton, "libinclude", "libinclude.so", sharedDir, sharedVariant)
|
|
|
+ CheckSnapshot(t, ctx, snapshotSingleton, "libinclude", "libinclude.so", sharedDir, sharedVariant)
|
|
|
includeJsonFiles = append(includeJsonFiles, filepath.Join(sharedDir, "libinclude.so.json"))
|
|
|
|
|
|
// Excluded modules
|
|
|
- checkSnapshotExclude(t, ctx, snapshotSingleton, "libexclude", "libexclude.so", sharedDir, sharedVariant)
|
|
|
+ CheckSnapshotExclude(t, ctx, snapshotSingleton, "libexclude", "libexclude.so", sharedDir, sharedVariant)
|
|
|
excludeJsonFiles = append(excludeJsonFiles, filepath.Join(sharedDir, "libexclude.so.json"))
|
|
|
- checkSnapshotExclude(t, ctx, snapshotSingleton, "libvendor", "libvendor.so", sharedDir, sharedVariant)
|
|
|
+ CheckSnapshotExclude(t, ctx, snapshotSingleton, "libvendor", "libvendor.so", sharedDir, sharedVariant)
|
|
|
excludeJsonFiles = append(excludeJsonFiles, filepath.Join(sharedDir, "libvendor.so.json"))
|
|
|
- checkSnapshotExclude(t, ctx, snapshotSingleton, "libavailable_exclude", "libavailable_exclude.so", sharedDir, sharedVariant)
|
|
|
+ CheckSnapshotExclude(t, ctx, snapshotSingleton, "libavailable_exclude", "libavailable_exclude.so", sharedDir, sharedVariant)
|
|
|
excludeJsonFiles = append(excludeJsonFiles, filepath.Join(sharedDir, "libavailable_exclude.so.json"))
|
|
|
}
|
|
|
|
|
@@ -1258,9 +1251,9 @@ func TestRecoverySnapshotCapture(t *testing.T) {
|
|
|
// For shared libraries, only recovery_available modules are captured.
|
|
|
sharedVariant := fmt.Sprintf("android_recovery_%s_%s_shared", archType, archVariant)
|
|
|
sharedDir := filepath.Join(snapshotVariantPath, archDir, "shared")
|
|
|
- checkSnapshot(t, ctx, snapshotSingleton, "libvndk", "libvndk.so", sharedDir, sharedVariant)
|
|
|
- checkSnapshot(t, ctx, snapshotSingleton, "librecovery", "librecovery.so", sharedDir, sharedVariant)
|
|
|
- checkSnapshot(t, ctx, snapshotSingleton, "librecovery_available", "librecovery_available.so", sharedDir, sharedVariant)
|
|
|
+ CheckSnapshot(t, ctx, snapshotSingleton, "libvndk", "libvndk.so", sharedDir, sharedVariant)
|
|
|
+ CheckSnapshot(t, ctx, snapshotSingleton, "librecovery", "librecovery.so", sharedDir, sharedVariant)
|
|
|
+ CheckSnapshot(t, ctx, snapshotSingleton, "librecovery_available", "librecovery_available.so", sharedDir, sharedVariant)
|
|
|
jsonFiles = append(jsonFiles,
|
|
|
filepath.Join(sharedDir, "libvndk.so.json"),
|
|
|
filepath.Join(sharedDir, "librecovery.so.json"),
|
|
@@ -1269,9 +1262,9 @@ func TestRecoverySnapshotCapture(t *testing.T) {
|
|
|
// For static libraries, all recovery:true and recovery_available modules are captured.
|
|
|
staticVariant := fmt.Sprintf("android_recovery_%s_%s_static", archType, archVariant)
|
|
|
staticDir := filepath.Join(snapshotVariantPath, archDir, "static")
|
|
|
- checkSnapshot(t, ctx, snapshotSingleton, "libb", "libb.a", staticDir, staticVariant)
|
|
|
- checkSnapshot(t, ctx, snapshotSingleton, "librecovery", "librecovery.a", staticDir, staticVariant)
|
|
|
- checkSnapshot(t, ctx, snapshotSingleton, "librecovery_available", "librecovery_available.a", staticDir, staticVariant)
|
|
|
+ CheckSnapshot(t, ctx, snapshotSingleton, "libb", "libb.a", staticDir, staticVariant)
|
|
|
+ CheckSnapshot(t, ctx, snapshotSingleton, "librecovery", "librecovery.a", staticDir, staticVariant)
|
|
|
+ CheckSnapshot(t, ctx, snapshotSingleton, "librecovery_available", "librecovery_available.a", staticDir, staticVariant)
|
|
|
jsonFiles = append(jsonFiles,
|
|
|
filepath.Join(staticDir, "libb.a.json"),
|
|
|
filepath.Join(staticDir, "librecovery.a.json"),
|
|
@@ -1281,8 +1274,8 @@ func TestRecoverySnapshotCapture(t *testing.T) {
|
|
|
if archType == "arm64" {
|
|
|
binaryVariant := fmt.Sprintf("android_recovery_%s_%s", archType, archVariant)
|
|
|
binaryDir := filepath.Join(snapshotVariantPath, archDir, "binary")
|
|
|
- checkSnapshot(t, ctx, snapshotSingleton, "recovery_bin", "recovery_bin", binaryDir, binaryVariant)
|
|
|
- checkSnapshot(t, ctx, snapshotSingleton, "recovery_available_bin", "recovery_available_bin", binaryDir, binaryVariant)
|
|
|
+ CheckSnapshot(t, ctx, snapshotSingleton, "recovery_bin", "recovery_bin", binaryDir, binaryVariant)
|
|
|
+ CheckSnapshot(t, ctx, snapshotSingleton, "recovery_available_bin", "recovery_available_bin", binaryDir, binaryVariant)
|
|
|
jsonFiles = append(jsonFiles,
|
|
|
filepath.Join(binaryDir, "recovery_bin.json"),
|
|
|
filepath.Join(binaryDir, "recovery_available_bin.json"))
|
|
@@ -1295,7 +1288,7 @@ func TestRecoverySnapshotCapture(t *testing.T) {
|
|
|
// For object modules, all vendor:true and vendor_available modules are captured.
|
|
|
objectVariant := fmt.Sprintf("android_recovery_%s_%s", archType, archVariant)
|
|
|
objectDir := filepath.Join(snapshotVariantPath, archDir, "object")
|
|
|
- checkSnapshot(t, ctx, snapshotSingleton, "obj", "obj.o", objectDir, objectVariant)
|
|
|
+ CheckSnapshot(t, ctx, snapshotSingleton, "obj", "obj.o", objectDir, objectVariant)
|
|
|
jsonFiles = append(jsonFiles, filepath.Join(objectDir, "obj.o.json"))
|
|
|
}
|
|
|
|
|
@@ -1393,15 +1386,15 @@ func TestRecoverySnapshotExclude(t *testing.T) {
|
|
|
sharedDir := filepath.Join(snapshotVariantPath, archDir, "shared")
|
|
|
|
|
|
// Included modules
|
|
|
- checkSnapshot(t, ctx, snapshotSingleton, "libinclude", "libinclude.so", sharedDir, sharedVariant)
|
|
|
+ CheckSnapshot(t, ctx, snapshotSingleton, "libinclude", "libinclude.so", sharedDir, sharedVariant)
|
|
|
includeJsonFiles = append(includeJsonFiles, filepath.Join(sharedDir, "libinclude.so.json"))
|
|
|
|
|
|
// Excluded modules
|
|
|
- checkSnapshotExclude(t, ctx, snapshotSingleton, "libexclude", "libexclude.so", sharedDir, sharedVariant)
|
|
|
+ CheckSnapshotExclude(t, ctx, snapshotSingleton, "libexclude", "libexclude.so", sharedDir, sharedVariant)
|
|
|
excludeJsonFiles = append(excludeJsonFiles, filepath.Join(sharedDir, "libexclude.so.json"))
|
|
|
- checkSnapshotExclude(t, ctx, snapshotSingleton, "librecovery", "librecovery.so", sharedDir, sharedVariant)
|
|
|
+ CheckSnapshotExclude(t, ctx, snapshotSingleton, "librecovery", "librecovery.so", sharedDir, sharedVariant)
|
|
|
excludeJsonFiles = append(excludeJsonFiles, filepath.Join(sharedDir, "librecovery.so.json"))
|
|
|
- checkSnapshotExclude(t, ctx, snapshotSingleton, "libavailable_exclude", "libavailable_exclude.so", sharedDir, sharedVariant)
|
|
|
+ CheckSnapshotExclude(t, ctx, snapshotSingleton, "libavailable_exclude", "libavailable_exclude.so", sharedDir, sharedVariant)
|
|
|
excludeJsonFiles = append(excludeJsonFiles, filepath.Join(sharedDir, "libavailable_exclude.so.json"))
|
|
|
}
|
|
|
|
|
@@ -1482,15 +1475,15 @@ func TestRecoverySnapshotDirected(t *testing.T) {
|
|
|
sharedDir := filepath.Join(snapshotVariantPath, archDir, "shared")
|
|
|
|
|
|
// Included modules
|
|
|
- checkSnapshot(t, ctx, snapshotSingleton, "librecovery", "librecovery.so", sharedDir, sharedVariant)
|
|
|
+ CheckSnapshot(t, ctx, snapshotSingleton, "librecovery", "librecovery.so", sharedDir, sharedVariant)
|
|
|
includeJsonFiles = append(includeJsonFiles, filepath.Join(sharedDir, "librecovery.so.json"))
|
|
|
// Check that snapshot captures "prefer: true" prebuilt
|
|
|
- checkSnapshot(t, ctx, snapshotSingleton, "prebuilt_libfoo", "libfoo.so", sharedDir, sharedVariant)
|
|
|
+ CheckSnapshot(t, ctx, snapshotSingleton, "prebuilt_libfoo", "libfoo.so", sharedDir, sharedVariant)
|
|
|
includeJsonFiles = append(includeJsonFiles, filepath.Join(sharedDir, "libfoo.so.json"))
|
|
|
|
|
|
// Excluded modules. Modules not included in the directed recovery snapshot
|
|
|
// are still include as fake modules.
|
|
|
- checkSnapshotRule(t, ctx, snapshotSingleton, "librecovery_available", "librecovery_available.so", sharedDir, sharedVariant)
|
|
|
+ CheckSnapshotRule(t, ctx, snapshotSingleton, "librecovery_available", "librecovery_available.so", sharedDir, sharedVariant)
|
|
|
includeJsonFiles = append(includeJsonFiles, filepath.Join(sharedDir, "librecovery_available.so.json"))
|
|
|
}
|
|
|
|