Merge "hostdex:true modules are available for platform"

This commit is contained in:
Treehugger Robot 2019-12-17 06:02:05 +00:00 committed by Gerrit Code Review
commit 7cf4b5de6b
3 changed files with 22 additions and 6 deletions

View File

@ -138,7 +138,7 @@ func (m *ApexModuleBase) IsInstallableToApex() bool {
}
const (
availableToPlatform = "//apex_available:platform"
AvailableToPlatform = "//apex_available:platform"
availableToAnyApex = "//apex_available:anyapex"
)
@ -149,7 +149,7 @@ func CheckAvailableForApex(what string, apex_available []string) bool {
return true
}
return InList(what, apex_available) ||
(what != availableToPlatform && InList(availableToAnyApex, apex_available))
(what != AvailableToPlatform && InList(availableToAnyApex, apex_available))
}
func (m *ApexModuleBase) AvailableFor(what string) bool {
@ -165,7 +165,7 @@ func (m *ApexModuleBase) DepIsInSameApex(ctx BaseModuleContext, dep Module) bool
func (m *ApexModuleBase) checkApexAvailableProperty(mctx BaseModuleContext) {
for _, n := range m.ApexProperties.Apex_available {
if n == availableToPlatform || n == availableToAnyApex {
if n == AvailableToPlatform || n == availableToAnyApex {
continue
}
if !mctx.OtherModuleExists(n) && !mctx.Config().AllowMissingDependencies() {
@ -179,7 +179,7 @@ func (m *ApexModuleBase) CreateApexVariations(mctx BottomUpMutatorContext) []Mod
m.checkApexAvailableProperty(mctx)
sort.Strings(m.apexVariations)
variations := []string{}
availableForPlatform := mctx.Module().(ApexModule).AvailableFor(availableToPlatform) || mctx.Host()
availableForPlatform := mctx.Module().(ApexModule).AvailableFor(AvailableToPlatform) || mctx.Host()
if availableForPlatform {
variations = append(variations, "") // Original variation for platform
}

View File

@ -24,7 +24,7 @@ import (
func (library *Library) AndroidMkEntriesHostDex() android.AndroidMkEntries {
hostDexNeeded := Bool(library.deviceProperties.Hostdex) && !library.Host()
if !library.IsForPlatform() {
// If the platform variant is available, don't emit hostdex modules from the APEX variants
// Don't emit hostdex modules from the APEX variants
hostDexNeeded = false
}
@ -62,8 +62,14 @@ func (library *Library) AndroidMkEntries() []android.AndroidMkEntries {
var entriesList []android.AndroidMkEntries
mainEntries := android.AndroidMkEntries{Disabled: true}
// For a java library built for an APEX, we don't need Make module
if library.IsForPlatform() {
hideFromMake := !library.IsForPlatform()
// If not available for platform, don't emit to make.
if !library.ApexModuleBase.AvailableFor(android.AvailableToPlatform) {
hideFromMake = true
}
if !hideFromMake {
mainEntries = android.AndroidMkEntries{
Class: "JAVA_LIBRARIES",
OutputFile: android.OptionalPathForPath(library.outputFile),

View File

@ -559,6 +559,16 @@ func (j *Module) targetSdkVersion() string {
return j.sdkVersion()
}
func (j *Module) AvailableFor(what string) bool {
if what == android.AvailableToPlatform && Bool(j.deviceProperties.Hostdex) {
// Exception: for hostdex: true libraries, the platform variant is created
// even if it's not marked as available to platform. In that case, the platform
// variant is used only for the hostdex and not installed to the device.
return true
}
return j.ApexModuleBase.AvailableFor(what)
}
func (j *Module) deps(ctx android.BottomUpMutatorContext) {
if ctx.Device() {
sdkDep := decodeSdkDep(ctx, sdkContext(j))