Merge changes from topic "revert-2580631-revert-2574032-XXTWCJDTDQ-YJWXHQZNPJ"
* changes: Revert^2 "Generate app profiles even if dexpreopt is disabled." Revert^2 "Generate boot image profiles even if dexpreopt is disabled."
This commit is contained in:
@@ -506,7 +506,7 @@ func (b *BootclasspathFragmentModule) DepsMutator(ctx android.BottomUpMutatorCon
|
||||
}
|
||||
}
|
||||
|
||||
if SkipDexpreoptBootJars(ctx) {
|
||||
if !dexpreopt.IsDex2oatNeeded(ctx) {
|
||||
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.
|
||||
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.
|
||||
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.
|
||||
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.
|
||||
buildBootImageVariantsForBuildOs(ctx, imageConfig, profile)
|
||||
|
||||
|
@@ -23,7 +23,7 @@ import (
|
||||
)
|
||||
|
||||
func TestR8(t *testing.T) {
|
||||
result := PrepareForTestWithJavaDefaultModulesWithoutFakeDex2oatd.RunTestWithBp(t, `
|
||||
result := PrepareForTestWithJavaDefaultModules.RunTestWithBp(t, `
|
||||
android_app {
|
||||
name: "app",
|
||||
srcs: ["foo.java"],
|
||||
@@ -191,7 +191,7 @@ func TestR8TransitiveDeps(t *testing.T) {
|
||||
|
||||
for _, tc := range testcases {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
fixturePreparer := PrepareForTestWithJavaDefaultModulesWithoutFakeDex2oatd
|
||||
fixturePreparer := PrepareForTestWithJavaDefaultModules
|
||||
if tc.unbundled {
|
||||
fixturePreparer = android.GroupFixturePreparers(
|
||||
fixturePreparer,
|
||||
@@ -258,7 +258,7 @@ func TestR8TransitiveDeps(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestR8Flags(t *testing.T) {
|
||||
result := PrepareForTestWithJavaDefaultModulesWithoutFakeDex2oatd.RunTestWithBp(t, `
|
||||
result := PrepareForTestWithJavaDefaultModules.RunTestWithBp(t, `
|
||||
android_app {
|
||||
name: "app",
|
||||
srcs: ["foo.java"],
|
||||
@@ -287,7 +287,7 @@ func TestR8Flags(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestD8(t *testing.T) {
|
||||
result := PrepareForTestWithJavaDefaultModulesWithoutFakeDex2oatd.RunTestWithBp(t, `
|
||||
result := PrepareForTestWithJavaDefaultModules.RunTestWithBp(t, `
|
||||
java_library {
|
||||
name: "foo",
|
||||
srcs: ["foo.java"],
|
||||
@@ -328,7 +328,7 @@ func TestD8(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestProguardFlagsInheritance(t *testing.T) {
|
||||
result := PrepareForTestWithJavaDefaultModulesWithoutFakeDex2oatd.RunTestWithBp(t, `
|
||||
result := PrepareForTestWithJavaDefaultModules.RunTestWithBp(t, `
|
||||
android_app {
|
||||
name: "app",
|
||||
static_libs: [
|
||||
|
@@ -180,6 +180,8 @@ func moduleName(ctx android.BaseModuleContext) string {
|
||||
return android.RemoveOptionalPrebuiltPrefix(ctx.ModuleName())
|
||||
}
|
||||
|
||||
// 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) bool {
|
||||
if !ctx.Device() {
|
||||
return true
|
||||
@@ -205,14 +207,6 @@ func (d *dexpreopter) dexpreoptDisabled(ctx android.BaseModuleContext) bool {
|
||||
|
||||
global := dexpreopt.GetGlobalConfig(ctx)
|
||||
|
||||
if global.DisablePreopt {
|
||||
return true
|
||||
}
|
||||
|
||||
if inList(moduleName(ctx), global.DisablePreoptModules) {
|
||||
return true
|
||||
}
|
||||
|
||||
isApexSystemServerJar := global.AllApexSystemServerJars(ctx).ContainsJar(moduleName(ctx))
|
||||
if isApexVariant(ctx) {
|
||||
// Don't preopt APEX variant module unless the module is an APEX system server jar.
|
||||
@@ -232,7 +226,7 @@ func (d *dexpreopter) dexpreoptDisabled(ctx android.BaseModuleContext) bool {
|
||||
}
|
||||
|
||||
func dexpreoptToolDepsMutator(ctx android.BottomUpMutatorContext) {
|
||||
if d, ok := ctx.Module().(DexpreopterInterface); !ok || d.dexpreoptDisabled(ctx) {
|
||||
if d, ok := ctx.Module().(DexpreopterInterface); !ok || d.dexpreoptDisabled(ctx) || !dexpreopt.IsDex2oatNeeded(ctx) {
|
||||
return
|
||||
}
|
||||
dexpreopt.RegisterToolDeps(ctx)
|
||||
|
@@ -500,9 +500,6 @@ func (d *dexpreoptBootJars) GenerateAndroidBuildActions(ctx android.ModuleContex
|
||||
|
||||
// Generate build rules for boot images.
|
||||
func (d *dexpreoptBootJars) GenerateSingletonBuildActions(ctx android.SingletonContext) {
|
||||
if SkipDexpreoptBootJars(ctx) {
|
||||
return
|
||||
}
|
||||
if dexpreopt.GetCachedGlobalSoongConfig(ctx) == nil {
|
||||
// No module has enabled dexpreopting, so we assume there will be no boot image to make.
|
||||
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
|
||||
// correct output directories.
|
||||
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_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())
|
||||
}
|
||||
|
||||
if SkipDexpreoptBootJars(ctx) {
|
||||
return
|
||||
}
|
||||
|
||||
global := dexpreopt.GetGlobalConfig(ctx)
|
||||
dexPaths, dexLocations := bcpForDexpreopt(ctx, global.PreoptWithUpdatableBcp)
|
||||
ctx.Strict("DEXPREOPT_BOOTCLASSPATH_DEX_FILES", strings.Join(dexPaths.Strings(), " "))
|
||||
|
@@ -438,3 +438,28 @@ func TestAndroidMkEntriesForApex(t *testing.T) {
|
||||
|
||||
android.AssertIntEquals(t, "entries count", 0, len(entriesList))
|
||||
}
|
||||
|
||||
func TestGenerateProfileEvenIfDexpreoptIsDisabled(t *testing.T) {
|
||||
preparers := android.GroupFixturePreparers(
|
||||
PrepareForTestWithJavaDefaultModules,
|
||||
PrepareForTestWithFakeApexMutator,
|
||||
dexpreopt.FixtureDisableDexpreopt(true),
|
||||
)
|
||||
|
||||
result := preparers.RunTestWithBp(t, `
|
||||
java_library {
|
||||
name: "foo",
|
||||
installable: true,
|
||||
dex_preopt: {
|
||||
profile: "art-profile",
|
||||
},
|
||||
srcs: ["a.java"],
|
||||
}`)
|
||||
|
||||
ctx := result.TestContext
|
||||
dexpreopt := ctx.ModuleForTests("foo", "android_common").MaybeRule("dexpreopt")
|
||||
|
||||
expected := []string{"out/soong/.intermediates/foo/android_common/dexpreopt/profile.prof"}
|
||||
|
||||
android.AssertArrayString(t, "outputs", expected, dexpreopt.AllOutputs())
|
||||
}
|
||||
|
@@ -103,7 +103,7 @@ func (b *platformBootclasspathModule) OutputFiles(tag string) (android.Paths, er
|
||||
func (b *platformBootclasspathModule) DepsMutator(ctx android.BottomUpMutatorContext) {
|
||||
b.hiddenAPIDepsMutator(ctx)
|
||||
|
||||
if SkipDexpreoptBootJars(ctx) {
|
||||
if !dexpreopt.IsDex2oatNeeded(ctx) {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -187,11 +187,6 @@ func (b *platformBootclasspathModule) GenerateAndroidBuildActions(ctx android.Mo
|
||||
bootDexJarByModule := b.generateHiddenAPIBuildActions(ctx, b.configuredModules, b.fragments)
|
||||
buildRuleForBootJarsPackageCheck(ctx, bootDexJarByModule)
|
||||
|
||||
// Nothing to do if skipping the dexpreopt of boot image jars.
|
||||
if SkipDexpreoptBootJars(ctx) {
|
||||
return
|
||||
}
|
||||
|
||||
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.
|
||||
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.
|
||||
androidBootImageFiles := buildBootImageVariantsForAndroidOs(ctx, imageConfig, profile)
|
||||
|
||||
|
Reference in New Issue
Block a user