Merge "Fix missing NOTICE targets for static libs that aren't available to platform." am: e152ada4e7 am: b7c30e8a0c

Change-Id: If72192000b2eb215dec0f793db63fcec61fc9f49
This commit is contained in:
Treehugger Robot 2020-04-14 14:20:08 +00:00 committed by Automerger Merge Worker
commit 3f18c55cc0
5 changed files with 34 additions and 0 deletions

View file

@ -271,6 +271,10 @@ func (library *libraryDecorator) AndroidMkEntries(ctx AndroidMkContext, entries
entries.SubName = "." + library.stubsVersion()
}
entries.ExtraEntries = append(entries.ExtraEntries, func(entries *android.AndroidMkEntries) {
// Note library.skipInstall() has a special case to get here for static
// libraries that otherwise would have skipped installation and hence not
// have executed AndroidMkEntries at all. The reason is to ensure they get
// a NOTICE file make target which other libraries might depend on.
entries.SetBool("LOCAL_UNINSTALLABLE_MODULE", true)
if library.buildStubs() {
entries.SetBool("LOCAL_NO_NOTICE_FILE", true)

View file

@ -404,6 +404,7 @@ type installer interface {
inSanitizerDir() bool
hostToolPath() android.OptionalPath
relativeInstallPath() string
skipInstall(mod *Module)
}
type xref interface {
@ -2639,6 +2640,14 @@ func (c *Module) InstallInRecovery() bool {
return c.InRecovery()
}
func (c *Module) SkipInstall() {
if c.installer == nil {
c.ModuleBase.SkipInstall()
return
}
c.installer.skipInstall(c)
}
func (c *Module) HostToolPath() android.OptionalPath {
if c.installer == nil {
return android.OptionalPath{}

View file

@ -106,3 +106,7 @@ func (installer *baseInstaller) hostToolPath() android.OptionalPath {
func (installer *baseInstaller) relativeInstallPath() string {
return String(installer.Properties.Relative_install_path)
}
func (installer *baseInstaller) skipInstall(mod *Module) {
mod.ModuleBase.SkipInstall()
}

View file

@ -1329,6 +1329,18 @@ func (library *libraryDecorator) availableFor(what string) bool {
return android.CheckAvailableForApex(what, list)
}
func (library *libraryDecorator) skipInstall(mod *Module) {
if library.static() && library.buildStatic() && !library.buildStubs() {
// If we're asked to skip installation of a static library (in particular
// when it's not //apex_available:platform) we still want an AndroidMk entry
// for it to ensure we get the relevant NOTICE file targets (cf.
// notice_files.mk) that other libraries might depend on. AndroidMkEntries
// always sets LOCAL_UNINSTALLABLE_MODULE for these entries.
return
}
mod.ModuleBase.SkipInstall()
}
var versioningMacroNamesListKey = android.NewOnceKey("versioningMacroNamesList")
func versioningMacroNamesList(config android.Config) *map[string]string {

View file

@ -155,6 +155,10 @@ func (p *prebuiltLibraryLinker) disablePrebuilt() {
p.properties.Srcs = nil
}
func (p *prebuiltLibraryLinker) skipInstall(mod *Module) {
mod.ModuleBase.SkipInstall()
}
func NewPrebuiltLibrary(hod android.HostOrDeviceSupported) (*Module, *libraryDecorator) {
module, library := NewLibrary(hod)
module.compiler = nil
@ -163,6 +167,7 @@ func NewPrebuiltLibrary(hod android.HostOrDeviceSupported) (*Module, *libraryDec
libraryDecorator: library,
}
module.linker = prebuilt
module.installer = prebuilt
module.AddProperties(&prebuilt.properties)