Revert^2 "Generate boot image profiles even if dexpreopt is disabled."
Revert submission 2580631-revert-2574032-XXTWCJDTDQ Reason for revert: Fixed build breakages Reverted changes: /q/submissionid:2580631-revert-2574032-XXTWCJDTDQ Bug: 280440941 Test: lunch aosp_cf_riscv64_minidroid-userdebug && m UNSAFE_DISABLE_HIDDENAPI_FLAGS=true dist Test: Disable dex2oat on host (to simulate macOS) and build Change-Id: I5f7f746ca1d4da660fe0c40115e6c71750dfdccc
This commit is contained in:
@@ -2681,7 +2681,7 @@ func apexBootclasspathFragmentFiles(ctx android.ModuleContext, module blueprint.
|
|||||||
}
|
}
|
||||||
|
|
||||||
pathInApex := bootclasspathFragmentInfo.ProfileInstallPathInApex()
|
pathInApex := bootclasspathFragmentInfo.ProfileInstallPathInApex()
|
||||||
if pathInApex != "" && !java.SkipDexpreoptBootJars(ctx) {
|
if pathInApex != "" {
|
||||||
pathOnHost := bootclasspathFragmentInfo.ProfilePathOnHost()
|
pathOnHost := bootclasspathFragmentInfo.ProfilePathOnHost()
|
||||||
tempPath := android.PathForModuleOut(ctx, "boot_image_profile", pathInApex)
|
tempPath := android.PathForModuleOut(ctx, "boot_image_profile", pathInApex)
|
||||||
|
|
||||||
|
@@ -497,6 +497,26 @@ func TestBootclasspathFragmentInArtApex(t *testing.T) {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
t.Run("generate boot image profile even if dexpreopt is disabled", func(t *testing.T) {
|
||||||
|
result := android.GroupFixturePreparers(
|
||||||
|
commonPreparer,
|
||||||
|
|
||||||
|
// Configure some libraries in the art bootclasspath_fragment that match the source
|
||||||
|
// bootclasspath_fragment's contents property.
|
||||||
|
java.FixtureConfigureBootJars("com.android.art:foo", "com.android.art:bar"),
|
||||||
|
addSource("foo", "bar"),
|
||||||
|
java.FixtureSetBootImageInstallDirOnDevice("art", "system/framework"),
|
||||||
|
dexpreopt.FixtureDisableDexpreoptBootImages(true),
|
||||||
|
).RunTest(t)
|
||||||
|
|
||||||
|
ensureExactContents(t, result.TestContext, "com.android.art", "android_common_com.android.art_image", []string{
|
||||||
|
"etc/boot-image.prof",
|
||||||
|
"etc/classpaths/bootclasspath.pb",
|
||||||
|
"javalib/bar.jar",
|
||||||
|
"javalib/foo.jar",
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
t.Run("boot image disable generate profile", func(t *testing.T) {
|
t.Run("boot image disable generate profile", func(t *testing.T) {
|
||||||
result := android.GroupFixturePreparers(
|
result := android.GroupFixturePreparers(
|
||||||
commonPreparer,
|
commonPreparer,
|
||||||
|
@@ -475,7 +475,16 @@ func RegisterToolDeps(ctx android.BottomUpMutatorContext) {
|
|||||||
ctx.AddFarVariationDependencies(v, Dex2oatDepTag, dex2oatBin)
|
ctx.AddFarVariationDependencies(v, Dex2oatDepTag, dex2oatBin)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func IsDex2oatNeeded(ctx android.PathContext) bool {
|
||||||
|
global := GetGlobalConfig(ctx)
|
||||||
|
return !global.DisablePreopt || !global.DisablePreoptBootImages
|
||||||
|
}
|
||||||
|
|
||||||
func dex2oatPathFromDep(ctx android.ModuleContext) android.Path {
|
func dex2oatPathFromDep(ctx android.ModuleContext) android.Path {
|
||||||
|
if !IsDex2oatNeeded(ctx) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
dex2oatBin := dex2oatModuleName(ctx.Config())
|
dex2oatBin := dex2oatModuleName(ctx.Config())
|
||||||
|
|
||||||
// Find the right dex2oat module, trying to follow PrebuiltDepTag from source
|
// Find the right dex2oat module, trying to follow PrebuiltDepTag from source
|
||||||
|
@@ -174,3 +174,10 @@ func FixtureDisableGenerateProfile(disable bool) android.FixturePreparer {
|
|||||||
dexpreoptConfig.DisableGenerateProfile = disable
|
dexpreoptConfig.DisableGenerateProfile = disable
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FixtureDisableDexpreoptBootImages sets the DisablePreoptBootImages property in the global config.
|
||||||
|
func FixtureDisableDexpreoptBootImages(disable bool) android.FixturePreparer {
|
||||||
|
return FixtureModifyGlobalConfig(func(_ android.PathContext, dexpreoptConfig *GlobalConfig) {
|
||||||
|
dexpreoptConfig.DisablePreoptBootImages = disable
|
||||||
|
})
|
||||||
|
}
|
||||||
|
@@ -506,7 +506,7 @@ func (b *BootclasspathFragmentModule) DepsMutator(ctx android.BottomUpMutatorCon
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if SkipDexpreoptBootJars(ctx) {
|
if !dexpreopt.IsDex2oatNeeded(ctx) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -901,10 +901,6 @@ func (b *BootclasspathFragmentModule) produceHiddenAPIOutput(ctx android.ModuleC
|
|||||||
|
|
||||||
// produceBootImageFiles builds the boot image files from the source if it is required.
|
// produceBootImageFiles builds the boot image files from the source if it is required.
|
||||||
func (b *BootclasspathFragmentModule) produceBootImageFiles(ctx android.ModuleContext, imageConfig *bootImageConfig) bootImageOutputs {
|
func (b *BootclasspathFragmentModule) produceBootImageFiles(ctx android.ModuleContext, imageConfig *bootImageConfig) bootImageOutputs {
|
||||||
if SkipDexpreoptBootJars(ctx) {
|
|
||||||
return bootImageOutputs{}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Only generate the boot image if the configuration does not skip it.
|
// Only generate the boot image if the configuration does not skip it.
|
||||||
return b.generateBootImageBuildActions(ctx, imageConfig)
|
return b.generateBootImageBuildActions(ctx, imageConfig)
|
||||||
}
|
}
|
||||||
@@ -929,6 +925,13 @@ func (b *BootclasspathFragmentModule) generateBootImageBuildActions(ctx android.
|
|||||||
// Build a profile for the image config and then use that to build the boot image.
|
// Build a profile for the image config and then use that to build the boot image.
|
||||||
profile := bootImageProfileRule(ctx, imageConfig)
|
profile := bootImageProfileRule(ctx, imageConfig)
|
||||||
|
|
||||||
|
// If dexpreopt of boot image jars should be skipped, generate only a profile.
|
||||||
|
if SkipDexpreoptBootJars(ctx) {
|
||||||
|
return bootImageOutputs{
|
||||||
|
profile: profile,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Build boot image files for the host variants.
|
// Build boot image files for the host variants.
|
||||||
buildBootImageVariantsForBuildOs(ctx, imageConfig, profile)
|
buildBootImageVariantsForBuildOs(ctx, imageConfig, profile)
|
||||||
|
|
||||||
|
@@ -500,9 +500,6 @@ func (d *dexpreoptBootJars) GenerateAndroidBuildActions(ctx android.ModuleContex
|
|||||||
|
|
||||||
// Generate build rules for boot images.
|
// Generate build rules for boot images.
|
||||||
func (d *dexpreoptBootJars) GenerateSingletonBuildActions(ctx android.SingletonContext) {
|
func (d *dexpreoptBootJars) GenerateSingletonBuildActions(ctx android.SingletonContext) {
|
||||||
if SkipDexpreoptBootJars(ctx) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if dexpreopt.GetCachedGlobalSoongConfig(ctx) == nil {
|
if dexpreopt.GetCachedGlobalSoongConfig(ctx) == nil {
|
||||||
// No module has enabled dexpreopting, so we assume there will be no boot image to make.
|
// No module has enabled dexpreopting, so we assume there will be no boot image to make.
|
||||||
return
|
return
|
||||||
@@ -1002,7 +999,7 @@ func writeGlobalConfigForMake(ctx android.SingletonContext, path android.Writabl
|
|||||||
// (make/core/dex_preopt_libart.mk) to generate install rules that copy boot image files to the
|
// (make/core/dex_preopt_libart.mk) to generate install rules that copy boot image files to the
|
||||||
// correct output directories.
|
// correct output directories.
|
||||||
func (d *dexpreoptBootJars) MakeVars(ctx android.MakeVarsContext) {
|
func (d *dexpreoptBootJars) MakeVars(ctx android.MakeVarsContext) {
|
||||||
if d.dexpreoptConfigForMake != nil {
|
if d.dexpreoptConfigForMake != nil && !SkipDexpreoptBootJars(ctx) {
|
||||||
ctx.Strict("DEX_PREOPT_CONFIG_FOR_MAKE", d.dexpreoptConfigForMake.String())
|
ctx.Strict("DEX_PREOPT_CONFIG_FOR_MAKE", d.dexpreoptConfigForMake.String())
|
||||||
ctx.Strict("DEX_PREOPT_SOONG_CONFIG_FOR_MAKE", android.PathForOutput(ctx, "dexpreopt_soong.config").String())
|
ctx.Strict("DEX_PREOPT_SOONG_CONFIG_FOR_MAKE", android.PathForOutput(ctx, "dexpreopt_soong.config").String())
|
||||||
}
|
}
|
||||||
@@ -1014,6 +1011,10 @@ func (d *dexpreoptBootJars) MakeVars(ctx android.MakeVarsContext) {
|
|||||||
ctx.Strict("DEXPREOPT_IMAGE_PROFILE_LICENSE_METADATA", image.profileLicenseMetadataFile.String())
|
ctx.Strict("DEXPREOPT_IMAGE_PROFILE_LICENSE_METADATA", image.profileLicenseMetadataFile.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if SkipDexpreoptBootJars(ctx) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
global := dexpreopt.GetGlobalConfig(ctx)
|
global := dexpreopt.GetGlobalConfig(ctx)
|
||||||
dexPaths, dexLocations := bcpForDexpreopt(ctx, global.PreoptWithUpdatableBcp)
|
dexPaths, dexLocations := bcpForDexpreopt(ctx, global.PreoptWithUpdatableBcp)
|
||||||
ctx.Strict("DEXPREOPT_BOOTCLASSPATH_DEX_FILES", strings.Join(dexPaths.Strings(), " "))
|
ctx.Strict("DEXPREOPT_BOOTCLASSPATH_DEX_FILES", strings.Join(dexPaths.Strings(), " "))
|
||||||
|
@@ -103,7 +103,7 @@ func (b *platformBootclasspathModule) OutputFiles(tag string) (android.Paths, er
|
|||||||
func (b *platformBootclasspathModule) DepsMutator(ctx android.BottomUpMutatorContext) {
|
func (b *platformBootclasspathModule) DepsMutator(ctx android.BottomUpMutatorContext) {
|
||||||
b.hiddenAPIDepsMutator(ctx)
|
b.hiddenAPIDepsMutator(ctx)
|
||||||
|
|
||||||
if SkipDexpreoptBootJars(ctx) {
|
if !dexpreopt.IsDex2oatNeeded(ctx) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -187,11 +187,6 @@ func (b *platformBootclasspathModule) GenerateAndroidBuildActions(ctx android.Mo
|
|||||||
bootDexJarByModule := b.generateHiddenAPIBuildActions(ctx, b.configuredModules, b.fragments)
|
bootDexJarByModule := b.generateHiddenAPIBuildActions(ctx, b.configuredModules, b.fragments)
|
||||||
buildRuleForBootJarsPackageCheck(ctx, bootDexJarByModule)
|
buildRuleForBootJarsPackageCheck(ctx, bootDexJarByModule)
|
||||||
|
|
||||||
// Nothing to do if skipping the dexpreopt of boot image jars.
|
|
||||||
if SkipDexpreoptBootJars(ctx) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
b.generateBootImageBuildActions(ctx, platformModules, apexModules)
|
b.generateBootImageBuildActions(ctx, platformModules, apexModules)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -429,6 +424,12 @@ func (b *platformBootclasspathModule) generateBootImage(ctx android.ModuleContex
|
|||||||
// Build a profile for the image config and then use that to build the boot image.
|
// Build a profile for the image config and then use that to build the boot image.
|
||||||
profile := bootImageProfileRule(ctx, imageConfig)
|
profile := bootImageProfileRule(ctx, imageConfig)
|
||||||
|
|
||||||
|
// If dexpreopt of boot image jars should be skipped, generate only a profile.
|
||||||
|
global := dexpreopt.GetGlobalConfig(ctx)
|
||||||
|
if global.DisablePreoptBootImages {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// Build boot image files for the android variants.
|
// Build boot image files for the android variants.
|
||||||
androidBootImageFiles := buildBootImageVariantsForAndroidOs(ctx, imageConfig, profile)
|
androidBootImageFiles := buildBootImageVariantsForAndroidOs(ctx, imageConfig, profile)
|
||||||
|
|
||||||
|
@@ -19,12 +19,14 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"android/soong/android"
|
"android/soong/android"
|
||||||
|
"android/soong/dexpreopt"
|
||||||
"android/soong/java"
|
"android/soong/java"
|
||||||
)
|
)
|
||||||
|
|
||||||
var prepareForSdkTestWithJava = android.GroupFixturePreparers(
|
var prepareForSdkTestWithJava = android.GroupFixturePreparers(
|
||||||
java.PrepareForTestWithJavaBuildComponents,
|
java.PrepareForTestWithJavaBuildComponents,
|
||||||
PrepareForTestWithSdkBuildComponents,
|
PrepareForTestWithSdkBuildComponents,
|
||||||
|
dexpreopt.PrepareForTestWithFakeDex2oatd,
|
||||||
|
|
||||||
// Ensure that all source paths are provided. This helps ensure that the snapshot generation is
|
// Ensure that all source paths are provided. This helps ensure that the snapshot generation is
|
||||||
// consistent and all files referenced from the snapshot's Android.bp file have actually been
|
// consistent and all files referenced from the snapshot's Android.bp file have actually been
|
||||||
|
Reference in New Issue
Block a user