Merge changes I177441bc,I32daefbd into main
* changes: Use BaseModuleName for LOCAL_MODULE Disable source javalib dexpreopt when using prebuilt apex
This commit is contained in:
commit
1c96fab7d0
2 changed files with 35 additions and 3 deletions
|
@ -691,9 +691,10 @@ func (a *AndroidAppImport) AndroidMkEntries() []android.AndroidMkEntries {
|
|||
return nil
|
||||
}
|
||||
return []android.AndroidMkEntries{android.AndroidMkEntries{
|
||||
Class: "APPS",
|
||||
OutputFile: android.OptionalPathForPath(a.outputFile),
|
||||
Include: "$(BUILD_SYSTEM)/soong_app_prebuilt.mk",
|
||||
Class: "APPS",
|
||||
OutputFile: android.OptionalPathForPath(a.outputFile),
|
||||
OverrideName: a.BaseModuleName(), // TODO (spandandas): Add a test
|
||||
Include: "$(BUILD_SYSTEM)/soong_app_prebuilt.mk",
|
||||
ExtraEntries: []android.AndroidMkExtraEntriesFunc{
|
||||
func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) {
|
||||
entries.SetBoolIfTrue("LOCAL_PRIVILEGED_MODULE", a.Privileged())
|
||||
|
|
|
@ -187,6 +187,33 @@ func forPrebuiltApex(ctx android.BaseModuleContext) bool {
|
|||
return apexInfo.ForPrebuiltApex
|
||||
}
|
||||
|
||||
// For apex variant of modules, this returns true on the source variant if the prebuilt apex
|
||||
// has been selected using apex_contributions.
|
||||
// The prebuilt apex will be responsible for generating the dexpreopt rules of the deapexed java lib.
|
||||
func disableSourceApexVariant(ctx android.BaseModuleContext) bool {
|
||||
if !isApexVariant(ctx) {
|
||||
return false // platform variant
|
||||
}
|
||||
apexInfo, _ := android.ModuleProvider(ctx, android.ApexInfoProvider)
|
||||
psi := android.PrebuiltSelectionInfoMap{}
|
||||
ctx.VisitDirectDepsWithTag(android.PrebuiltDepTag, func(am android.Module) {
|
||||
psi, _ = android.OtherModuleProvider(ctx, am, android.PrebuiltSelectionInfoProvider)
|
||||
})
|
||||
// Find the apex variant for this module
|
||||
_, apexVariantsWithoutTestApexes, _ := android.ListSetDifference(apexInfo.InApexVariants, apexInfo.TestApexes)
|
||||
disableSource := false
|
||||
// find the selected apexes
|
||||
for _, apexVariant := range apexVariantsWithoutTestApexes {
|
||||
for _, selected := range psi.GetSelectedModulesForApiDomain(apexVariant) {
|
||||
// If the apex_contribution for this api domain contains a prebuilt apex, disable the source variant
|
||||
if strings.HasPrefix(selected, "prebuilt_com.google.android") {
|
||||
disableSource = true
|
||||
}
|
||||
}
|
||||
}
|
||||
return disableSource
|
||||
}
|
||||
|
||||
// Returns whether dexpreopt is applicable to the module.
|
||||
// When it returns true, neither profile nor dexpreopt artifacts will be generated.
|
||||
func (d *dexpreopter) dexpreoptDisabled(ctx android.BaseModuleContext, libName string) bool {
|
||||
|
@ -216,6 +243,10 @@ func (d *dexpreopter) dexpreoptDisabled(ctx android.BaseModuleContext, libName s
|
|||
return true
|
||||
}
|
||||
|
||||
if disableSourceApexVariant(ctx) {
|
||||
return true
|
||||
}
|
||||
|
||||
if _, isApex := android.ModuleProvider(ctx, android.ApexBundleInfoProvider); isApex {
|
||||
// dexpreopt rules for system server jars can be generated in the ModuleCtx of prebuilt apexes
|
||||
return false
|
||||
|
|
Loading…
Reference in a new issue