Merge "Stop requiring apex_available on java_library members of sdks" am: f76c64018e am: c8c4a962d4

Change-Id: I8655a0889bb8bb089e16107ec29a1c559cb290b0
This commit is contained in:
Paul Duffin
2020-04-08 14:59:16 +00:00
committed by Automerger Merge Worker
5 changed files with 34 additions and 36 deletions

View File

@@ -875,13 +875,23 @@ func apexDepsMutator(mctx android.TopDownMutatorContext) {
mctx.VisitDirectDeps(func(child android.Module) {
depName := mctx.OtherModuleName(child)
if am, ok := child.(android.ApexModule); ok && am.CanHaveApexVariants() &&
cur.DepIsInSameApex(mctx, child) {
(cur.DepIsInSameApex(mctx, child) || inAnySdk(child)) {
android.UpdateApexDependency(apexBundles, depName, directDep)
am.BuildForApexes(apexBundles)
}
})
}
// If a module in an APEX depends on a module from an SDK then it needs an APEX
// specific variant created for it. Refer to sdk.sdkDepsReplaceMutator.
func inAnySdk(module android.Module) bool {
if sa, ok := module.(android.SdkAware); ok {
return sa.IsInAnySdk()
}
return false
}
// Create apex variations if a module is included in APEX(s).
func apexMutator(mctx android.BottomUpMutatorContext) {
if am, ok := mctx.Module().(android.ApexModule); ok && am.CanHaveApexVariants() {
@@ -1851,6 +1861,14 @@ func (a *apexBundle) checkApexAvailability(ctx android.ModuleContext) {
apexName := ctx.ModuleName()
fromName := ctx.OtherModuleName(from)
toName := ctx.OtherModuleName(to)
// If `to` is not actually in the same APEX as `from` then it does not need apex_available and neither
// do any of its dependencies.
if am, ok := from.(android.DepIsInSameApex); ok && !am.DepIsInSameApex(ctx, to) {
// As soon as the dependency graph crosses the APEX boundary, don't go further.
return false
}
if to.AvailableFor(apexName) || whitelistedApexAvailable(apexName, toName) {
return true
}