diff --git a/cc/cc_test.go b/cc/cc_test.go index d4e941676..67eb248d2 100644 --- a/cc/cc_test.go +++ b/cc/cc_test.go @@ -258,7 +258,9 @@ func checkVndkModule(t *testing.T, ctx *android.TestContext, name, subDir string } } -func checkSnapshot(t *testing.T, ctx *android.TestContext, singleton android.TestingSingleton, moduleName, snapshotFilename, subDir, variant string) { +func checkSnapshot(t *testing.T, ctx *android.TestContext, singletonName, moduleName, snapshotFilename, subDir, variant string) { + snapshotSingleton := ctx.SingletonForTests(singletonName) + mod, ok := ctx.ModuleForTests(moduleName, variant).Module().(android.OutputFileProducer) if !ok { t.Errorf("%q must have output\n", moduleName) @@ -271,7 +273,7 @@ func checkSnapshot(t *testing.T, ctx *android.TestContext, singleton android.Tes } snapshotPath := filepath.Join(subDir, snapshotFilename) - out := singleton.Output(snapshotPath) + out := snapshotSingleton.Output(snapshotPath) if out.Input.String() != outputFiles[0].String() { t.Errorf("The input of snapshot %q must be %q, but %q", moduleName, out.Input.String(), outputFiles[0]) } @@ -396,18 +398,16 @@ func TestVndk(t *testing.T) { variant := "android_vendor.VER_arm64_armv8-a_shared" variant2nd := "android_vendor.VER_arm_armv7-a-neon_shared" - snapshotSingleton := ctx.SingletonForTests("vndk-snapshot") - - checkSnapshot(t, ctx, snapshotSingleton, "libvndk", "libvndk.so", vndkCoreLibPath, variant) - checkSnapshot(t, ctx, snapshotSingleton, "libvndk", "libvndk.so", vndkCoreLib2ndPath, variant2nd) - checkSnapshot(t, ctx, snapshotSingleton, "libvndk_sp", "libvndk_sp-x.so", vndkSpLibPath, variant) - checkSnapshot(t, ctx, snapshotSingleton, "libvndk_sp", "libvndk_sp-x.so", vndkSpLib2ndPath, variant2nd) + checkSnapshot(t, ctx, "vndk-snapshot", "libvndk", "libvndk.so", vndkCoreLibPath, variant) + checkSnapshot(t, ctx, "vndk-snapshot", "libvndk", "libvndk.so", vndkCoreLib2ndPath, variant2nd) + checkSnapshot(t, ctx, "vndk-snapshot", "libvndk_sp", "libvndk_sp-x.so", vndkSpLibPath, variant) + checkSnapshot(t, ctx, "vndk-snapshot", "libvndk_sp", "libvndk_sp-x.so", vndkSpLib2ndPath, variant2nd) snapshotConfigsPath := filepath.Join(snapshotVariantPath, "configs") - checkSnapshot(t, ctx, snapshotSingleton, "llndk.libraries.txt", "llndk.libraries.txt", snapshotConfigsPath, "") - checkSnapshot(t, ctx, snapshotSingleton, "vndkcore.libraries.txt", "vndkcore.libraries.txt", snapshotConfigsPath, "") - checkSnapshot(t, ctx, snapshotSingleton, "vndksp.libraries.txt", "vndksp.libraries.txt", snapshotConfigsPath, "") - checkSnapshot(t, ctx, snapshotSingleton, "vndkprivate.libraries.txt", "vndkprivate.libraries.txt", snapshotConfigsPath, "") + checkSnapshot(t, ctx, "vndk-snapshot", "llndk.libraries.txt", "llndk.libraries.txt", snapshotConfigsPath, "") + checkSnapshot(t, ctx, "vndk-snapshot", "vndkcore.libraries.txt", "vndkcore.libraries.txt", snapshotConfigsPath, "") + checkSnapshot(t, ctx, "vndk-snapshot", "vndksp.libraries.txt", "vndksp.libraries.txt", snapshotConfigsPath, "") + checkSnapshot(t, ctx, "vndk-snapshot", "vndkprivate.libraries.txt", "vndkprivate.libraries.txt", snapshotConfigsPath, "") checkVndkOutput(t, ctx, "vndk/vndk.libraries.txt", []string{ "LLNDK: libc.so", @@ -849,9 +849,6 @@ func TestVendorSnapshot(t *testing.T) { snapshotDir := "vendor-snapshot" snapshotVariantPath := filepath.Join(buildDir, snapshotDir, "arm64") - snapshotSingleton := ctx.SingletonForTests("vendor-snapshot") - - var jsonFiles []string for _, arch := range [][]string{ []string{"arm64", "armv8-a"}, @@ -864,42 +861,23 @@ func TestVendorSnapshot(t *testing.T) { // For shared libraries, only non-VNDK vendor_available modules are captured sharedVariant := fmt.Sprintf("android_vendor.VER_%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) - jsonFiles = append(jsonFiles, - filepath.Join(sharedDir, "libvendor.so.json"), - filepath.Join(sharedDir, "libvendor_available.so.json")) + checkSnapshot(t, ctx, "vendor-snapshot", "libvendor", "libvendor.so", sharedDir, sharedVariant) + checkSnapshot(t, ctx, "vendor-snapshot", "libvendor_available", "libvendor_available.so", sharedDir, sharedVariant) // For static libraries, all vendor:true and vendor_available modules (including VNDK) are captured. staticVariant := fmt.Sprintf("android_vendor.VER_%s_%s_static", archType, archVariant) staticDir := filepath.Join(snapshotVariantPath, archDir, "static") - checkSnapshot(t, ctx, snapshotSingleton, "libvndk", "libvndk.a", staticDir, staticVariant) - checkSnapshot(t, ctx, snapshotSingleton, "libvendor", "libvendor.a", staticDir, staticVariant) - checkSnapshot(t, ctx, snapshotSingleton, "libvendor_available", "libvendor_available.a", staticDir, staticVariant) - jsonFiles = append(jsonFiles, - filepath.Join(staticDir, "libvndk.a.json"), - filepath.Join(staticDir, "libvendor.a.json"), - filepath.Join(staticDir, "libvendor_available.a.json")) + checkSnapshot(t, ctx, "vendor-snapshot", "libvndk", "libvndk.a", staticDir, staticVariant) + checkSnapshot(t, ctx, "vendor-snapshot", "libvendor", "libvendor.a", staticDir, staticVariant) + checkSnapshot(t, ctx, "vendor-snapshot", "libvendor_available", "libvendor_available.a", staticDir, staticVariant) // For binary libraries, all vendor:true and vendor_available modules are captured. if archType == "arm64" { binaryVariant := fmt.Sprintf("android_vendor.VER_%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) - jsonFiles = append(jsonFiles, - filepath.Join(binaryDir, "vendor_bin.json"), - filepath.Join(binaryDir, "vendor_available_bin.json")) + checkSnapshot(t, ctx, "vendor-snapshot", "vendor_bin", "vendor_bin", binaryDir, binaryVariant) + checkSnapshot(t, ctx, "vendor-snapshot", "vendor_available_bin", "vendor_available_bin", binaryDir, binaryVariant) } - - // For header libraries, all vendor:true and vendor_available modules are captured. - headerDir := filepath.Join(snapshotVariantPath, archDir, "header") - jsonFiles = append(jsonFiles, filepath.Join(headerDir, "libvendor_headers.json")) - } - - for _, jsonFile := range jsonFiles { - // verify all json files exist - snapshotSingleton.Output(jsonFile) } } diff --git a/cc/vendor_snapshot.go b/cc/vendor_snapshot.go index 1ff617f73..5801fc76d 100644 --- a/cc/vendor_snapshot.go +++ b/cc/vendor_snapshot.go @@ -443,7 +443,7 @@ func isVendorSnapshotModule(m *Module, moduleDir string) bool { return false } // the module must be installed in /vendor - if !m.IsForPlatform() || m.isSnapshotPrebuilt() || !m.inVendor() { + if !m.installable() || m.isSnapshotPrebuilt() || !m.inVendor() { return false } // exclude test modules @@ -457,17 +457,12 @@ func isVendorSnapshotModule(m *Module, moduleDir string) bool { // Libraries if l, ok := m.linker.(snapshotLibraryInterface); ok { - // header libraries are not installable, but captured. - if (l.static() || l.shared()) && !m.installable() { - return false - } if l.static() { return proptools.BoolDefault(m.VendorProperties.Vendor_available, true) } if l.shared() { return !m.IsVndk() } - return true }