Don't forward apex dependencies to platform when they are added later
IncomingApexTransition normally returns "" for modules that have
no apex variation so that apex variations can depend on non-apex
variations, for example for NDK libraries.
addDependencyOntoApexModulePair uses OtherModuleDependencyVariantExists
to decide whether to add a dependency on a module in an apex. If
IncomingApexTransition returns "" then OtherModuleDependencyVariantExists
will always return true. Return the incoming variation when addding
dependencies after the apex transition mutator has already run.
Bug: 319288033
Flag: EXEMPT bugfix
Test: all soong tests pass with later patches applied
Change-Id: Iec40c3be2ed04dca16a9fa6fa0a1c31056b536a8
diff --git a/android/apex.go b/android/apex.go
index 683e501..ecab8e3 100644
--- a/android/apex.go
+++ b/android/apex.go
@@ -610,9 +610,15 @@
return ""
}
- // If this module has no apex variations the use the platform variation.
if len(apexInfos) == 0 {
- return ""
+ if ctx.IsAddingDependency() {
+ // If this module has no apex variations we can't do any mapping on the incoming variation, just return it
+ // and let the caller get a "missing variant" error.
+ return incomingVariation
+ } else {
+ // If this module has no apex variations the use the platform variation.
+ return ""
+ }
}
// Convert the list of apex infos into from the AllApexInfoProvider into the merged list