From b1639db53f1df445f08924c6414bba53d9cee512 Mon Sep 17 00:00:00 2001 From: Jiakai Zhang Date: Tue, 11 Jul 2023 15:03:13 +0100 Subject: [PATCH] Extract duplicate code to common helper functions. Also, fall back to using a default name for the dexpreopt directory if we are not building for Android. Bug: 290583827 Test: m nothing Change-Id: I3fc6ff9142a2dcdf995796f75891b242fe2848d0 --- android/configured_jars.go | 5 +++++ java/bootclasspath.go | 2 +- java/dexpreopt_bootjars.go | 3 +-- java/dexpreopt_config.go | 15 +++++++++------ java/hiddenapi_singleton.go | 2 +- 5 files changed, 17 insertions(+), 10 deletions(-) diff --git a/android/configured_jars.go b/android/configured_jars.go index 53fef052a..1281bae87 100644 --- a/android/configured_jars.go +++ b/android/configured_jars.go @@ -311,4 +311,9 @@ func EmptyConfiguredJarList() ConfiguredJarList { return ConfiguredJarList{} } +// IsConfiguredJarForPlatform returns true if the given apex name is a special name for the platform. +func IsConfiguredJarForPlatform(apex string) bool { + return apex == "platform" || apex == "system_ext" +} + var earlyBootJarsKey = NewOnceKey("earlyBootJars") diff --git a/java/bootclasspath.go b/java/bootclasspath.go index f4cef7fa6..29eed795d 100644 --- a/java/bootclasspath.go +++ b/java/bootclasspath.go @@ -77,7 +77,7 @@ func addDependencyOntoApexVariants(ctx android.BottomUpMutatorContext, propertyN // Use gatherApexModulePairDepsWithTag to retrieve the dependencies. func addDependencyOntoApexModulePair(ctx android.BottomUpMutatorContext, apex string, name string, tag blueprint.DependencyTag) { var variations []blueprint.Variation - if apex != "platform" && apex != "system_ext" { + if !android.IsConfiguredJarForPlatform(apex) { // Pick the correct apex variant. variations = []blueprint.Variation{ {Mutator: "apex", Variation: apex}, diff --git a/java/dexpreopt_bootjars.go b/java/dexpreopt_bootjars.go index 9057a1cb0..794bc4ae6 100644 --- a/java/dexpreopt_bootjars.go +++ b/java/dexpreopt_bootjars.go @@ -505,8 +505,7 @@ func (d *dexpreoptBootJars) GenerateSingletonBuildActions(ctx android.SingletonC // No module has enabled dexpreopting, so we assume there will be no boot image to make. return } - archType := ctx.Config().Targets[android.Android][0].Arch.ArchType - d.dexpreoptConfigForMake = android.PathForOutput(ctx, toDexpreoptDirName(archType), "dexpreopt.config") + d.dexpreoptConfigForMake = android.PathForOutput(ctx, getDexpreoptDirName(ctx), "dexpreopt.config") writeGlobalConfigForMake(ctx, d.dexpreoptConfigForMake) global := dexpreopt.GetGlobalConfig(ctx) diff --git a/java/dexpreopt_config.go b/java/dexpreopt_config.go index 9100e87c6..d9c474dc0 100644 --- a/java/dexpreopt_config.go +++ b/java/dexpreopt_config.go @@ -105,8 +105,7 @@ func genBootImageConfigRaw(ctx android.PathContext) map[string]*bootImageConfig func genBootImageConfigs(ctx android.PathContext) map[string]*bootImageConfig { return ctx.Config().Once(bootImageConfigKey, func() interface{} { targets := dexpreoptTargets(ctx) - archType := ctx.Config().Targets[android.Android][0].Arch.ArchType - deviceDir := android.PathForOutput(ctx, toDexpreoptDirName(archType)) + deviceDir := android.PathForOutput(ctx, getDexpreoptDirName(ctx)) configs := genBootImageConfigRaw(ctx) @@ -218,8 +217,7 @@ var updatableBootConfigKey = android.NewOnceKey("apexBootConfig") func GetApexBootConfig(ctx android.PathContext) apexBootConfig { return ctx.Config().Once(updatableBootConfigKey, func() interface{} { apexBootJars := dexpreopt.GetGlobalConfig(ctx).ApexBootJars - archType := ctx.Config().Targets[android.Android][0].Arch.ArchType - dir := android.PathForOutput(ctx, toDexpreoptDirName(archType), "apex_bootjars") + dir := android.PathForOutput(ctx, getDexpreoptDirName(ctx), "apex_bootjars") dexPaths := apexBootJars.BuildPaths(ctx, dir) dexPathsByModuleName := apexBootJars.BuildPathsByModule(ctx, dir) @@ -260,6 +258,11 @@ func dexpreoptConfigMakevars(ctx android.MakeVarsContext) { ctx.Strict("DEXPREOPT_BOOT_JARS_MODULES", strings.Join(defaultBootImageConfig(ctx).modules.CopyOfApexJarPairs(), ":")) } -func toDexpreoptDirName(arch android.ArchType) string { - return "dexpreopt_" + arch.String() +func getDexpreoptDirName(ctx android.PathContext) string { + prefix := "dexpreopt_" + targets := ctx.Config().Targets[android.Android] + if len(targets) > 0 { + return prefix+targets[0].Arch.ArchType.String() + } + return prefix+"unknown_target" } diff --git a/java/hiddenapi_singleton.go b/java/hiddenapi_singleton.go index d4ee4fc9f..714634f58 100644 --- a/java/hiddenapi_singleton.go +++ b/java/hiddenapi_singleton.go @@ -166,7 +166,7 @@ func isModuleInConfiguredList(ctx android.BaseModuleContext, module android.Modu // Now match the apex part of the boot image configuration. requiredApex := configuredBootJars.Apex(index) - if requiredApex == "platform" || requiredApex == "system_ext" { + if android.IsConfiguredJarForPlatform(requiredApex) { if len(apexInfo.InApexVariants) != 0 { // A platform variant is required but this is for an apex so ignore it. return false