diff options
author | Spandan Das <spandandas@google.com> | 2024-03-04 07:59:06 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2024-03-04 07:59:06 +0000 |
commit | 1c96fab7d06699d2c14a8ee1e67a01674b4007cf (patch) | |
tree | 738bdcb3eb2c8153867f709b4efcde091375412d | |
parent | 0684c5fc1140190e70fee99d51f12c1d31b859ea (diff) | |
parent | 614a6f2b41af284e6238ff8005ffc39c9049128e (diff) | |
download | soong-1c96fab7d06699d2c14a8ee1e67a01674b4007cf.tar.gz |
Merge changes I177441bc,I32daefbd into main
* changes:
Use BaseModuleName for LOCAL_MODULE
Disable source javalib dexpreopt when using prebuilt apex
-rw-r--r-- | java/androidmk.go | 7 | ||||
-rw-r--r-- | java/dexpreopt.go | 31 |
2 files changed, 35 insertions, 3 deletions
diff --git a/java/androidmk.go b/java/androidmk.go index b7df9bf9e..498962f88 100644 --- a/java/androidmk.go +++ b/java/androidmk.go @@ -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()) diff --git a/java/dexpreopt.go b/java/dexpreopt.go index 1cfa64245..38ed856ee 100644 --- a/java/dexpreopt.go +++ b/java/dexpreopt.go @@ -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 |