diff options
author | 2024-11-13 15:20:13 -0800 | |
---|---|---|
committer | 2024-11-15 21:18:15 +0000 | |
commit | 386afeb2ff3a29769b6ae2b46e049bde6b8a479e (patch) | |
tree | 36d9bcb2f7172f6d6df411fa37a79c572113f32d | |
parent | 4169898d8c9a6522ebf2c830bf677004583a5a31 (diff) |
Don't use ctx.directlyInAnyApex for bootstrap libraries
The check for directlyInAnyApex is redundant for bootstrap libraries,
they are already explicitly enumerated in InstallToBootstrap, and
they are all directly in an apex. Replace the check with
!ctx.isSdkVariant(), since ctx.directlyInAnyApex() was returning
false for the sdk variants.
Bug: 372543712
Test: no change to build.ninja
Test: all Soong tests pass
Change-Id: I00f63757bc93e50affcc54577393e34a5625154e
-rw-r--r-- | cc/binary.go | 2 | ||||
-rw-r--r-- | cc/cc.go | 5 | ||||
-rw-r--r-- | cc/library.go | 18 | ||||
-rw-r--r-- | filesystem/filesystem_test.go | 8 |
4 files changed, 14 insertions, 19 deletions
diff --git a/cc/binary.go b/cc/binary.go index 2ac9a45bc..4b77bea64 100644 --- a/cc/binary.go +++ b/cc/binary.go @@ -505,7 +505,7 @@ func (binary *binaryDecorator) install(ctx ModuleContext, file android.Path) { // The original path becomes a symlink to the corresponding file in the // runtime APEX. translatedArch := ctx.Target().NativeBridge == android.NativeBridgeEnabled - if InstallToBootstrap(ctx.baseModuleName(), ctx.Config()) && !ctx.Host() && ctx.directlyInAnyApex() && + if InstallToBootstrap(ctx.baseModuleName(), ctx.Config()) && !ctx.Host() && !ctx.isSdkVariant() && !translatedArch && ctx.apexVariationName() == "" && !ctx.inRamdisk() && !ctx.inRecovery() && !ctx.inVendorRamdisk() { @@ -548,7 +548,6 @@ type ModuleContextIntf interface { apexSdkVersion() android.ApiLevel bootstrap() bool nativeCoverage() bool - directlyInAnyApex() bool isPreventInstall() bool isCfiAssemblySupportEnabled() bool getSharedFlags() *SharedFlags @@ -1692,10 +1691,6 @@ func (ctx *moduleContextImpl) nativeCoverage() bool { return ctx.mod.nativeCoverage() } -func (ctx *moduleContextImpl) directlyInAnyApex() bool { - return ctx.mod.DirectlyInAnyApex() -} - func (ctx *moduleContextImpl) isPreventInstall() bool { return ctx.mod.Properties.PreventInstall } diff --git a/cc/library.go b/cc/library.go index 17f45a371..c97dbf922 100644 --- a/cc/library.go +++ b/cc/library.go @@ -1750,21 +1750,17 @@ func (library *libraryDecorator) installSymlinkToRuntimeApex(ctx ModuleContext, func (library *libraryDecorator) install(ctx ModuleContext, file android.Path) { if library.shared() { - if library.hasStubsVariants() && !ctx.Host() && ctx.directlyInAnyApex() { + translatedArch := ctx.Target().NativeBridge == android.NativeBridgeEnabled + if library.hasStubsVariants() && !ctx.Host() && !ctx.isSdkVariant() && + InstallToBootstrap(ctx.baseModuleName(), ctx.Config()) && !library.buildStubs() && + !translatedArch && !ctx.inRamdisk() && !ctx.inVendorRamdisk() && !ctx.inRecovery() { // Bionic libraries (e.g. libc.so) is installed to the bootstrap subdirectory. // The original path becomes a symlink to the corresponding file in the // runtime APEX. - translatedArch := ctx.Target().NativeBridge == android.NativeBridgeEnabled - if InstallToBootstrap(ctx.baseModuleName(), ctx.Config()) && !library.buildStubs() && - !translatedArch && !ctx.inRamdisk() && !ctx.inVendorRamdisk() && !ctx.inRecovery() { - if ctx.Device() { - library.installSymlinkToRuntimeApex(ctx, file) - } - library.baseInstaller.subDir = "bootstrap" + if ctx.Device() { + library.installSymlinkToRuntimeApex(ctx, file) } - } else if ctx.directlyInAnyApex() && ctx.IsLlndk() && !isBionic(ctx.baseModuleName()) { - // Skip installing LLNDK (non-bionic) libraries moved to APEX. - ctx.Module().HideFromMake() + library.baseInstaller.subDir = "bootstrap" } library.baseInstaller.install(ctx, file) diff --git a/filesystem/filesystem_test.go b/filesystem/filesystem_test.go index f325d96ef..7c342cc8c 100644 --- a/filesystem/filesystem_test.go +++ b/filesystem/filesystem_test.go @@ -666,7 +666,9 @@ func TestUseSharedVariationOfNativeLib(t *testing.T) { partition := result.ModuleForTests("myfilesystem", "android_common") fileList := android.ContentFromFileRuleForTests(t, result.TestContext, partition.Output("fileList")) - android.AssertDeepEquals(t, "cc_library listed in deps", "lib64/libc++.so\nlib64/libc.so\nlib64/libdl.so\nlib64/libfoo.so\nlib64/libm.so\n", fileList) + android.AssertDeepEquals(t, "cc_library listed in deps", + "lib64/bootstrap/libc.so\nlib64/bootstrap/libdl.so\nlib64/bootstrap/libm.so\nlib64/libc++.so\nlib64/libc.so\nlib64/libdl.so\nlib64/libfoo.so\nlib64/libm.so\n", + fileList) } // binfoo1 overrides binbar. transitive deps of binbar should not be installed. @@ -701,7 +703,9 @@ cc_library { partition := result.ModuleForTests("myfilesystem", "android_common") fileList := android.ContentFromFileRuleForTests(t, result.TestContext, partition.Output("fileList")) - android.AssertDeepEquals(t, "Shared library dep of overridden binary should not be installed", fileList, "bin/binfoo1\nlib64/libc++.so\nlib64/libc.so\nlib64/libdl.so\nlib64/libfoo2.so\nlib64/libm.so\n") + android.AssertDeepEquals(t, "Shared library dep of overridden binary should not be installed", + "bin/binfoo1\nlib64/bootstrap/libc.so\nlib64/bootstrap/libdl.so\nlib64/bootstrap/libm.so\nlib64/libc++.so\nlib64/libc.so\nlib64/libdl.so\nlib64/libfoo2.so\nlib64/libm.so\n", + fileList) } func TestInstallLinkerConfigFile(t *testing.T) { |