Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0ba1a099 authored by Colin Cross's avatar Colin Cross Committed by android-build-merger
Browse files

Merge "Revert "Never strip and store dex files uncompressed when they are preopted on system.""

am: 8e41cdb2

Change-Id: I77cce8996ae0789d3b71b0902360877786476d18
parents 4c8f7984 8e41cdb2
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -47,7 +47,6 @@ type GlobalConfig struct {
	SystemServerCompilerFilter string // default compiler filter to pass to dex2oat for system server jars

	GenerateDMFiles bool // generate Dex Metadata files
	NeverAllowStripping bool // whether stripping should not be done - used as build time check to make sure dex files are always available

	NoDebugInfo                 bool // don't generate debug info by default
	AlwaysSystemServerDebugInfo bool // always generate mini debug info for system server modules (overrides NoDebugInfo=true)
+3 −10
Original line number Diff line number Diff line
@@ -68,9 +68,6 @@ func GenerateStripRule(global GlobalConfig, module ModuleConfig) (rule *android.
	strip := shouldStripDex(module, global)

	if strip {
		if global.NeverAllowStripping {
			panic(fmt.Errorf("Stripping requested on %q, though the product does not allow it", module.DexLocation))
		}
		// Only strips if the dex files are not already uncompressed
		rule.Command().
			Textf(`if (zipinfo %s '*.dex' 2>/dev/null | grep -v ' stor ' >/dev/null) ; then`, module.StripInputPath).
@@ -502,7 +499,7 @@ func shouldGenerateDM(module ModuleConfig, global GlobalConfig) bool {
		contains(module.PreoptFlags, "--compiler-filter=verify")
}

func OdexOnSystemOtherByName(name string, dexLocation string, global GlobalConfig) bool {
func odexOnSystemOther(module ModuleConfig, global GlobalConfig) bool {
	if !global.HasSystemOther {
		return false
	}
@@ -511,12 +508,12 @@ func OdexOnSystemOtherByName(name string, dexLocation string, global GlobalConfi
		return false
	}

	if contains(global.SpeedApps, name) || contains(global.SystemServerApps, name) {
	if contains(global.SpeedApps, module.Name) || contains(global.SystemServerApps, module.Name) {
		return false
	}

	for _, f := range global.PatternsOnSystemOther {
		if makefileMatch(filepath.Join(SystemPartition, f), dexLocation) {
		if makefileMatch(filepath.Join(SystemPartition, f), module.DexLocation) {
			return true
		}
	}
@@ -524,10 +521,6 @@ func OdexOnSystemOtherByName(name string, dexLocation string, global GlobalConfi
	return false
}

func odexOnSystemOther(module ModuleConfig, global GlobalConfig) bool {
	return OdexOnSystemOtherByName(module.Name, module.DexLocation, global)
}

func pathForLibrary(module ModuleConfig, lib string) string {
	path := module.LibraryPaths[lib]
	if path == "" {
+0 −18
Original line number Diff line number Diff line
@@ -36,7 +36,6 @@ var testGlobalConfig = GlobalConfig{
	DefaultCompilerFilter:              "",
	SystemServerCompilerFilter:         "",
	GenerateDMFiles:                    false,
	NeverAllowStripping:                false,
	NoDebugInfo:                        false,
	AlwaysSystemServerDebugInfo:        false,
	NeverSystemServerDebugInfo:         false,
@@ -111,23 +110,6 @@ func TestDexPreopt(t *testing.T) {
	}
}

func TestDexPreoptStrip(t *testing.T) {
	// Test that we panic if we strip in a configuration where stripping is not allowed.
	global, module := testGlobalConfig, testModuleConfig

	global.NeverAllowStripping = true
	module.NoStripping = false
	module.Name = "test"
	module.DexLocation = "/system/app/test/test.apk"
	module.BuildPath = "out/test/test.apk"
	module.Archs = []string{"arm"}

	_, err := GenerateStripRule(global, module)
	if err == nil {
		t.Errorf("Expected an error when calling GenerateStripRule on a stripped module")
	}
}

func TestDexPreoptSystemOther(t *testing.T) {
	global, module := testGlobalConfig, testModuleConfig

+3 −14
Original line number Diff line number Diff line
@@ -162,18 +162,9 @@ func (a *AndroidApp) shouldUncompressDex(ctx android.ModuleContext) bool {
	}

	// Uncompress dex in APKs of privileged apps, and modules used by privileged apps.
	if ctx.Config().UncompressPrivAppDex() &&
	return ctx.Config().UncompressPrivAppDex() &&
		(Bool(a.appProperties.Privileged) ||
			inList(ctx.ModuleName(), ctx.Config().ModulesLoadedByPrivilegedModules())) {
		return true
	}

	// Uncompress if the dex files is preopted on /system.
	if !a.dexpreopter.dexpreoptDisabled(ctx) && (ctx.Host() || !odexOnSystemOther(ctx, a.dexpreopter.installPath)) {
		return true
	}

	return false
			inList(ctx.ModuleName(), ctx.Config().ModulesLoadedByPrivilegedModules()))
}

func (a *AndroidApp) aaptBuildActions(ctx android.ModuleContext) {
@@ -232,6 +223,7 @@ func (a *AndroidApp) proguardBuildActions(ctx android.ModuleContext) {
}

func (a *AndroidApp) dexBuildActions(ctx android.ModuleContext) android.Path {
	a.deviceProperties.UncompressDex = a.shouldUncompressDex(ctx)

	var installDir string
	if ctx.ModuleName() == "framework-res" {
@@ -243,9 +235,6 @@ func (a *AndroidApp) dexBuildActions(ctx android.ModuleContext) android.Path {
		installDir = filepath.Join("app", a.installApkName)
	}
	a.dexpreopter.installPath = android.PathForModuleInstall(ctx, installDir, a.installApkName+".apk")
	a.dexpreopter.isInstallable = Bool(a.properties.Installable)
	a.dexpreopter.uncompressedDex = a.shouldUncompressDex(ctx)
	a.deviceProperties.UncompressDex = a.dexpreopter.uncompressedDex

	if ctx.ModuleName() != "framework-res" {
		a.Module.compile(ctx, a.aaptSrcJar)
+5 −14
Original line number Diff line number Diff line
@@ -83,7 +83,11 @@ func (d *dexpreopter) dexpreoptDisabled(ctx android.ModuleContext) bool {

var dexpreoptGlobalConfigKey = android.NewOnceKey("DexpreoptGlobalConfig")

func getGlobalConfig(ctx android.ModuleContext) dexpreopt.GlobalConfig {
func (d *dexpreopter) dexpreopt(ctx android.ModuleContext, dexJarFile android.ModuleOutPath) android.ModuleOutPath {
	if d.dexpreoptDisabled(ctx) {
		return dexJarFile
	}

	globalConfig := ctx.Config().Once(dexpreoptGlobalConfigKey, func() interface{} {
		if f := ctx.Config().DexpreoptGlobalConfig(); f != "" {
			ctx.AddNinjaFileDeps(f)
@@ -95,19 +99,6 @@ func getGlobalConfig(ctx android.ModuleContext) dexpreopt.GlobalConfig {
		}
		return dexpreopt.GlobalConfig{}
	}).(dexpreopt.GlobalConfig)
	return globalConfig
}

func odexOnSystemOther(ctx android.ModuleContext, installPath android.OutputPath) bool {
	return dexpreopt.OdexOnSystemOtherByName(ctx.ModuleName(), android.InstallPathToOnDevicePath(ctx, installPath), getGlobalConfig(ctx))
}

func (d *dexpreopter) dexpreopt(ctx android.ModuleContext, dexJarFile android.ModuleOutPath) android.ModuleOutPath {
	if d.dexpreoptDisabled(ctx) {
		return dexJarFile
	}

	globalConfig := getGlobalConfig(ctx)

	var archs []string
	for _, a := range ctx.MultiTargets() {
Loading