From e6fc5072343ad2c49eaf3d761b2046e1d55abd74 Mon Sep 17 00:00:00 2001 From: Przemyslaw Szczepaniak Date: Fri, 12 Jul 2019 14:06:23 +0100 Subject: [PATCH] Do not install LLNDK libs moved APEX on /system Export LLNDK_MOVED_TO_APEX_LIBRARIES which is used by make to filter out LLNDK libs that been migrated to an APEX. It's used by the ld.config.txt generaton, and to filter out the vndk_package dependencies. Test: Build&flashed crosshatch image Bug: 137320025 Change-Id: I1449dad79edf36a628fa1ac15c35f163dbd8ee2a --- cc/library.go | 4 ++++ cc/makevars.go | 17 +++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/cc/library.go b/cc/library.go index cb31979e9..24985dff5 100644 --- a/cc/library.go +++ b/cc/library.go @@ -959,7 +959,11 @@ func (library *libraryDecorator) install(ctx ModuleContext, file android.Path) { } library.baseInstaller.subDir = "bootstrap" } + } else if android.DirectlyInAnyApex(ctx, ctx.ModuleName()) && ctx.isLlndk(ctx.Config()) && !isBionic(ctx.baseModuleName()) { + // Skip installing LLNDK (non-bionic) libraries moved to APEX. + ctx.Module().SkipInstall() } + library.baseInstaller.install(ctx, file) } diff --git a/cc/makevars.go b/cc/makevars.go index 78a32c8b3..8f4aa0111 100644 --- a/cc/makevars.go +++ b/cc/makevars.go @@ -63,6 +63,13 @@ func makeStringOfWarningAllowedProjects() string { } } +type notOnHostContext struct { +} + +func (c *notOnHostContext) Host() bool { + return false +} + func makeVarsProvider(ctx android.MakeVarsContext) { vendorPublicLibraries := vendorPublicLibraries(ctx.Config()) @@ -102,13 +109,23 @@ func makeVarsProvider(ctx android.MakeVarsContext) { // Therefore, by removing the library here, we cause it to only be installed if libc // depends on it. installedLlndkLibraries := []string{} + + // Make uses LLNDK_MOVED_TO_APEX_LIBRARIES to avoid installing libraries on /system if + // they been moved to an apex. + movedToApexLlndkLibraries := []string{} for _, lib := range *llndkLibraries(ctx.Config()) { if strings.HasPrefix(lib, "libclang_rt.hwasan-") { continue } installedLlndkLibraries = append(installedLlndkLibraries, lib) + + // Skip bionic libs, they are handled in different manner + if android.DirectlyInAnyApex(¬OnHostContext{}, lib) && !isBionic(lib) { + movedToApexLlndkLibraries = append(movedToApexLlndkLibraries, lib) + } } ctx.Strict("LLNDK_LIBRARIES", strings.Join(installedLlndkLibraries, " ")) + ctx.Strict("LLNDK_MOVED_TO_APEX_LIBRARIES", strings.Join(movedToApexLlndkLibraries, " ")) ctx.Strict("VNDK_PRIVATE_LIBRARIES", strings.Join(*vndkPrivateLibraries(ctx.Config()), " ")) ctx.Strict("VNDK_USING_CORE_VARIANT_LIBRARIES", strings.Join(*vndkUsingCoreVariantLibraries(ctx.Config()), " "))