diff options
author | 2025-02-01 14:10:29 -0800 | |
---|---|---|
committer | 2025-02-03 22:19:24 -0800 | |
commit | dcc6156dec64c41b872ebf48d28642e21372e747 (patch) | |
tree | 881c0b330153f198968910c98a3201642e04a8c6 | |
parent | 388c6618a8a4a5bedd42ffc4874e2f6663e01289 (diff) |
Store name of boot image profile providing module in config
The logic in getProfileProviderForApex depends on having a list of
all apexes that depend on the art-bootclasspath-fragment module,
which will no longer be available once the apex info top down
mutator is removed. Since only the art-bootclasspath-fragment
module needs to generate a boot image profile, put the name of
the module in the boot image config.
Bug: 372543712
Test: all soong tests pass
Change-Id: I920e3f1d85e8d74ff8e047310e10504bcdde06db
-rw-r--r-- | java/bootclasspath_fragment.go | 13 | ||||
-rw-r--r-- | java/dexpreopt_bootjars.go | 3 | ||||
-rw-r--r-- | java/dexpreopt_config.go | 19 |
3 files changed, 19 insertions, 16 deletions
diff --git a/java/bootclasspath_fragment.go b/java/bootclasspath_fragment.go index d6777e50e..8fb8ba9a4 100644 --- a/java/bootclasspath_fragment.go +++ b/java/bootclasspath_fragment.go @@ -527,19 +527,18 @@ func (b *BootclasspathFragmentModule) getProfileProviderApex(ctx android.BaseMod } // Bootclasspath fragment modules that are for the platform do not produce boot related files. - apexInfos, _ := android.ModuleProvider(ctx, android.AllApexInfoProvider) - if apexInfos == nil { + apexInfo, _ := android.ModuleProvider(ctx, android.ApexInfoProvider) + if apexInfo.IsForPlatform() { return "" } - for _, apexInfo := range apexInfos.ApexInfos { - for _, apex := range apexInfo.InApexVariants { - if isProfileProviderApex(ctx, apex) { - return apex + for _, config := range genBootImageConfigs(ctx) { + if config.profileProviderModule == b.BaseModuleName() { + if len(config.profileImports) > 0 { + return config.profileImports[0] } } } - return "" } diff --git a/java/dexpreopt_bootjars.go b/java/dexpreopt_bootjars.go index 8c60d2399..497facb4d 100644 --- a/java/dexpreopt_bootjars.go +++ b/java/dexpreopt_bootjars.go @@ -293,6 +293,9 @@ type bootImageConfig struct { // Profiles imported from APEXes, in addition to the profile at the default path. Each entry must // be the name of an APEX module. profileImports []string + + // The name of the module that provides boot image profiles, if any. + profileProviderModule string } // Target-dependent description of a boot image. diff --git a/java/dexpreopt_config.go b/java/dexpreopt_config.go index dc0973cdf..fb5c325d3 100644 --- a/java/dexpreopt_config.go +++ b/java/dexpreopt_config.go @@ -67,15 +67,16 @@ func genBootImageConfigRaw(ctx android.PathContext) map[string]*bootImageConfig // ART boot image for testing only. Do not rely on it to make any build-time decision. artCfg := bootImageConfig{ - name: artBootImageName, - enabledIfExists: "art-bootclasspath-fragment", - stem: bootImageStem, - installDir: "apex/art_boot_images/javalib", - modules: global.TestOnlyArtBootImageJars, - preloadedClassesFile: "art/build/boot/preloaded-classes", - compilerFilter: "speed-profile", - singleImage: false, - profileImports: profileImports, + name: artBootImageName, + enabledIfExists: "art-bootclasspath-fragment", + stem: bootImageStem, + installDir: "apex/art_boot_images/javalib", + modules: global.TestOnlyArtBootImageJars, + preloadedClassesFile: "art/build/boot/preloaded-classes", + compilerFilter: "speed-profile", + singleImage: false, + profileImports: profileImports, + profileProviderModule: "art-bootclasspath-fragment", } // Framework config for the boot image extension. |