From c22c1bf130a7c60c193aece472eab2ae648a1fcb Mon Sep 17 00:00:00 2001 From: Nicolas Geoffray Date: Tue, 15 Jan 2019 19:53:23 +0000 Subject: [PATCH] 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 --- android/apex.go | 10 +++++++++- cc/androidmk.go | 9 ++++++--- cc/cc.go | 5 +++-- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/android/apex.go b/android/apex.go index 8d99d56f4..a93baf6d4 100644 --- a/android/apex.go +++ b/android/apex.go @@ -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 { diff --git a/cc/androidmk.go b/cc/androidmk.go index 784475612..fa0017d96 100644 --- a/cc/androidmk.go +++ b/cc/androidmk.go @@ -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" } diff --git a/cc/cc.go b/cc/cc.go index 4717b726d..46ce841fd 100644 --- a/cc/cc.go +++ b/cc/cc.go @@ -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 {