From 0fcadd89e24fe8fa555650137ac65ee164f9c060 Mon Sep 17 00:00:00 2001 From: Kiyoung Kim Date: Wed, 31 Jan 2024 17:20:17 +0900 Subject: [PATCH] Build VNDK with VNDK prebuilts without BOARD_VNDK_VERSION Current VNDK prebuilts are disabled if BOARD_VNDK_VERSION is not set, but VNDK prebuilts should be enabled even BOARD_VNDK_VERSION is not set because VNDK APEXes should be available from VNDK deprecation. This change removes some restrictions on VNDK prebuilts to enable those from VNDK deprecation. Bug: 316829758 Test: AOSP Cuttlefish build succeeded without BOARD_VNDK_VERSION Change-Id: Id780811dab26f2125097c3efc5b2b4a59416b826 --- apex/apex_test.go | 7 ------ apex/vndk_test.go | 60 --------------------------------------------- cc/vndk.go | 19 ++++++-------- cc/vndk_prebuilt.go | 21 ++++++---------- 4 files changed, 15 insertions(+), 92 deletions(-) diff --git a/apex/apex_test.go b/apex/apex_test.go index 7e67c0f9d..0733b01b5 100644 --- a/apex/apex_test.go +++ b/apex/apex_test.go @@ -3768,13 +3768,6 @@ func TestVndkApexCurrent(t *testing.T) { "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) { diff --git a/apex/vndk_test.go b/apex/vndk_test.go index e2aee96e7..894aece9d 100644 --- a/apex/vndk_test.go +++ b/apex/vndk_test.go @@ -8,66 +8,6 @@ import ( "android/soong/android" ) -func TestVndkApexForVndkLite(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"), - android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { - variables.DeviceVndkVersion = proptools.StringPtr("") - variables.KeepVndk = proptools.BoolPtr(true) - }), - ) - // VNDK-Lite contains only core variants of VNDK-Sp libraries - ensureExactContents(t, ctx, "com.android.vndk.current", "android_common", []string{ - "lib/libvndksp.so", - "lib/libc++.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", - }) -} - func TestVndkApexUsesVendorVariant(t *testing.T) { bp := ` apex_vndk { diff --git a/cc/vndk.go b/cc/vndk.go index 0e0dba934..2b2ea6458 100644 --- a/cc/vndk.go +++ b/cc/vndk.go @@ -377,22 +377,17 @@ func IsForVndkApex(mctx android.BottomUpMutatorContext, m *Module) bool { return false } - // ignore prebuilt vndk modules that are newer than or equal to the platform vndk version - platformVndkApiLevel := android.ApiLevelOrPanic(mctx, mctx.DeviceConfig().PlatformVndkVersion()) - if platformVndkApiLevel.LessThanOrEqualTo(android.ApiLevelOrPanic(mctx, p.Version())) { - return false + platformVndkVersion := mctx.DeviceConfig().PlatformVndkVersion() + if platformVndkVersion != "" { + // ignore prebuilt vndk modules that are newer than or equal to the platform vndk version + platformVndkApiLevel := android.ApiLevelOrPanic(mctx, platformVndkVersion) + if platformVndkApiLevel.LessThanOrEqualTo(android.ApiLevelOrPanic(mctx, p.Version())) { + return false + } } } if lib, ok := m.linker.(libraryInterface); ok { - // VNDK APEX for VNDK-Lite devices will have VNDK-SP libraries from core variants - if mctx.DeviceConfig().VndkVersion() == "" { - // b/73296261: filter out libz.so because it is considered as LLNDK for VNDK-lite devices - if mctx.ModuleName() == "libz" { - return false - } - return m.ImageVariation().Variation == android.CoreVariation && lib.shared() && m.IsVndkSp() && !m.IsVndkExt() - } // VNDK APEX doesn't need stub variants if lib.buildStubs() { return false diff --git a/cc/vndk_prebuilt.go b/cc/vndk_prebuilt.go index eb1790f58..801e5f0b7 100644 --- a/cc/vndk_prebuilt.go +++ b/cc/vndk_prebuilt.go @@ -131,11 +131,14 @@ func (p *vndkPrebuiltLibraryDecorator) singleSourcePath(ctx ModuleContext) andro func (p *vndkPrebuiltLibraryDecorator) link(ctx ModuleContext, flags Flags, deps PathDeps, objs Objects) android.Path { - platformVndkApiLevel := android.ApiLevelOrPanic(ctx, ctx.DeviceConfig().PlatformVndkVersion()) - if platformVndkApiLevel.LessThanOrEqualTo(android.ApiLevelOrPanic(ctx, p.Version())) { - // This prebuilt VNDK module is not required for the current build - ctx.Module().HideFromMake() - return nil + platformVndkVersion := ctx.DeviceConfig().PlatformVndkVersion() + if platformVndkVersion != "" { + platformVndkApiLevel := android.ApiLevelOrPanic(ctx, platformVndkVersion) + if platformVndkApiLevel.LessThanOrEqualTo(android.ApiLevelOrPanic(ctx, p.Version())) { + // This prebuilt VNDK module is not required for the current build + ctx.Module().HideFromMake() + return nil + } } if !p.MatchesWithDevice(ctx.DeviceConfig()) { @@ -246,14 +249,6 @@ func vndkPrebuiltSharedLibrary() *Module { &prebuilt.properties, ) - android.AddLoadHook(module, func(ctx android.LoadHookContext) { - // empty BOARD_VNDK_VERSION implies that the device won't support - // system only OTA. In this case, VNDK snapshots aren't needed. - if ctx.DeviceConfig().VndkVersion() == "" { - ctx.Module().Disable() - } - }) - return module }