From 7d6e79bc63b6431ae19f7a833905a06ede6d948d Mon Sep 17 00:00:00 2001 From: Jooyung Han Date: Thu, 24 Jun 2021 01:53:43 +0900 Subject: [PATCH] VNDK APEX: skips VNDK-Ext In legacy VNDK mode (DeviceVndkVesion=""), the check was missing. We don't want VNDK-Ext in VNDK APEX in any case. Bug: 191770320 Test: m nothing Change-Id: I08f36a4c1696bf82d25d629841e172d2716a366d --- apex/apex_test.go | 143 +++++++++++++++++++++++++++++++--------------- cc/vndk.go | 2 +- 2 files changed, 97 insertions(+), 48 deletions(-) diff --git a/apex/apex_test.go b/apex/apex_test.go index 88da21bdc..f146a260d 100644 --- a/apex/apex_test.go +++ b/apex/apex_test.go @@ -3338,60 +3338,109 @@ func ensureExactContents(t *testing.T, ctx *android.TestContext, moduleName, var } func TestVndkApexCurrent(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" ], - } - `+vndkLibrariesTxtFiles("current")) - - ensureExactContents(t, ctx, "com.android.vndk.current", "android_common_image", []string{ - "lib/libvndk.so", - "lib/libvndksp.so", + commonFiles := []string{ "lib/libc++.so", - "lib64/libvndk.so", - "lib64/libvndksp.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"), + }, + { + vndkVersion: "", + expectedFiles: append(commonFiles, + // Legacy VNDK APEX contains only VNDK-SP files (of core variant) + "lib/libvndksp.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) + })) + ensureExactContents(t, ctx, "com.android.vndk.current", "android_common_image", tc.expectedFiles) + }) + } } func TestVndkApexWithPrebuilt(t *testing.T) { diff --git a/cc/vndk.go b/cc/vndk.go index dd1c3e14b..0b4007605 100644 --- a/cc/vndk.go +++ b/cc/vndk.go @@ -371,7 +371,7 @@ func IsForVndkApex(mctx android.BottomUpMutatorContext, m *Module) bool { if mctx.ModuleName() == "libz" { return false } - return m.ImageVariation().Variation == android.CoreVariation && lib.shared() && m.IsVndkSp() + return m.ImageVariation().Variation == android.CoreVariation && lib.shared() && m.IsVndkSp() && !m.IsVndkExt() } useCoreVariant := m.VndkVersion() == mctx.DeviceConfig().PlatformVndkVersion() &&