Do not install prebuilt stubs from module_sdk

This is a rework of commit 5bdf2d589c
which made implementation variant of prebuilts with stubs as not
installable except libclangrt. This change narrows the affected modules
to prebuilts/module_sdk because cc_prebuilt_library_shared with stub
implementation is a special case only used there. It's typical for
cc_prebuilt_library_shared to have implementation, not stub.

Bug: 220898484
Test: ART_MODULE_BUILD_FROM_SOURCE=false m nothing
Change-Id: I99e5213da8cc473901e23942b50f06c023d91f60
This commit is contained in:
Jooyung Han
2023-03-23 14:31:19 +09:00
parent 8fdb210be2
commit e5f063e85f
2 changed files with 68 additions and 31 deletions

View File

@@ -16,7 +16,6 @@ package cc
import (
"path/filepath"
"strings"
"android/soong/android"
"android/soong/bazel"
@@ -208,12 +207,13 @@ func (p *prebuiltLibraryLinker) link(ctx ModuleContext,
})
// TODO(b/220898484): Mainline module sdk prebuilts of stub libraries use a stub
// library as their source and must not be installed, but libclang_rt.* libraries
// have stubs because they are LLNDK libraries, but use an implementation library
// as their source and need to be installed. This discrepancy should be resolved
// without the prefix hack below.
if p.hasStubsVariants() && !p.buildStubs() && !ctx.Host() &&
!strings.HasPrefix(ctx.baseModuleName(), "libclang_rt.") {
// library as their source and must not be installed, but other prebuilts like
// libclang_rt.* libraries set `stubs` property because they are LLNDK libraries,
// but use an implementation library as their source and need to be installed.
// This discrepancy should be resolved without the prefix hack below.
isModuleSdkPrebuilts := android.HasAnyPrefix(ctx.ModuleDir(), []string{
"prebuilts/runtime/mainline/", "prebuilts/module_sdk/"})
if p.hasStubsVariants() && !p.buildStubs() && !ctx.Host() && isModuleSdkPrebuilts {
ctx.Module().MakeUninstallable()
}