Return false in DirectlyInAnyApex for host libraries.

Host doesn't have apexes.

Bug: 122947954
Test: build dex2oat, check that libnativebridge is installed.
Change-Id: I3548e3f155a200e56d71e88631b71511bad84161
This commit is contained in:
Nicolas Geoffray 2019-01-15 19:53:23 +00:00
parent 63d91fad6a
commit c22c1bf130
3 changed files with 18 additions and 6 deletions

View file

@ -178,8 +178,16 @@ func DirectlyInApex(apexName string, moduleName string) bool {
return false
}
type hostContext interface {
Host() bool
}
// Tests whether a module named moduleName is directly depended on by any APEX.
func DirectlyInAnyApex(moduleName string) bool {
func DirectlyInAnyApex(ctx hostContext, moduleName string) bool {
if ctx.Host() {
// Host has no APEX.
return false
}
apexNamesMapMutex.Lock()
defer apexNamesMapMutex.Unlock()
if apexNames, ok := apexNamesMap()[moduleName]; ok {

View file

@ -32,6 +32,9 @@ type AndroidMkContext interface {
Name() string
Target() android.Target
subAndroidMk(*android.AndroidMkData, interface{})
Arch() android.Arch
Os() android.OsType
Host() bool
useVndk() bool
static() bool
inRecovery() bool
@ -189,9 +192,9 @@ func (library *libraryDecorator) AndroidMk(ctx AndroidMkContext, ret *android.An
}
})
}
if len(library.Properties.Stubs.Versions) > 0 && android.DirectlyInAnyApex(ctx.Name()) &&
!ctx.inRecovery() && !ctx.useVndk() && !ctx.static() {
if len(library.Properties.Stubs.Versions) > 0 &&
android.DirectlyInAnyApex(ctx, ctx.Name()) && !ctx.inRecovery() && !ctx.useVndk() &&
!ctx.static() {
if !library.buildStubs() {
ret.SubName = ".bootstrap"
}

View file

@ -874,7 +874,8 @@ func (c *Module) GenerateAndroidBuildActions(actx android.ModuleContext) {
// force anything in the make world to link against the stubs library.
// (unless it is explicitly referenced via .bootstrap suffix or the
// module is marked with 'bootstrap: true').
if c.HasStubsVariants() && android.DirectlyInAnyApex(ctx.baseModuleName()) &&
if c.HasStubsVariants() &&
android.DirectlyInAnyApex(ctx, ctx.baseModuleName()) &&
!c.inRecovery() && !c.useVndk() && !c.static() && c.IsStubs() {
c.Properties.HideFromMake = false // unhide
// Note: this is still non-installable
@ -1456,7 +1457,7 @@ func (c *Module) depsToPaths(ctx android.ModuleContext) PathDeps {
depIsStubs := dependentLibrary.buildStubs()
depHasStubs := ccDep.HasStubsVariants()
depInSameApex := android.DirectlyInApex(c.ApexName(), depName)
depInPlatform := !android.DirectlyInAnyApex(depName)
depInPlatform := !android.DirectlyInAnyApex(ctx, depName)
var useThisDep bool
if depIsStubs && explicitlyVersioned {