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

Commit 99be1a82 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Allow the user to explicitly set the java Uncompress_dex property."...

Merge "Allow the user to explicitly set the java Uncompress_dex property." into rvc-dev am: 6270b775 am: 984d9489 am: 5dd4c20c

Change-Id: Icd4cf97bd02ecd4aeb6bd7edd56dfb8b376888a6
parents bfa5dd41 5dd4c20c
Loading
Loading
Loading
Loading
+10 −0
Original line number Original line Diff line number Diff line
@@ -55,6 +55,7 @@ func init() {
	AddNeverAllowRules(createMediaRules()...)
	AddNeverAllowRules(createMediaRules()...)
	AddNeverAllowRules(createJavaDeviceForHostRules()...)
	AddNeverAllowRules(createJavaDeviceForHostRules()...)
	AddNeverAllowRules(createCcSdkVariantRules()...)
	AddNeverAllowRules(createCcSdkVariantRules()...)
	AddNeverAllowRules(createUncompressDexRules()...)
}
}


// Add a NeverAllow rule to the set of rules to apply.
// Add a NeverAllow rule to the set of rules to apply.
@@ -210,6 +211,15 @@ func createCcSdkVariantRules() []Rule {
	}
	}
}
}


func createUncompressDexRules() []Rule {
	return []Rule{
		NeverAllow().
			NotIn("art").
			WithMatcher("uncompress_dex", isSetMatcherInstance).
			Because("uncompress_dex is only allowed for certain jars for test in art."),
	}
}

func neverallowMutator(ctx BottomUpMutatorContext) {
func neverallowMutator(ctx BottomUpMutatorContext) {
	m, ok := ctx.Module().(Module)
	m, ok := ctx.Module().(Module)
	if !ok {
	if !ok {
+26 −2
Original line number Original line Diff line number Diff line
@@ -303,6 +303,29 @@ var neverallowTests = []struct {
			`module "outside_whitelist": violates neverallow`,
			`module "outside_whitelist": violates neverallow`,
		},
		},
	},
	},
	{
		name: "uncompress_dex inside art",
		fs: map[string][]byte{
			"art/Android.bp": []byte(`
				java_library {
					name: "inside_art_libraries",
					uncompress_dex: true,
				}`),
		},
	},
	{
		name: "uncompress_dex outside art",
		fs: map[string][]byte{
			"other/Android.bp": []byte(`
				java_library {
					name: "outside_art_libraries",
					uncompress_dex: true,
				}`),
		},
		expectedErrors: []string{
			"module \"outside_art_libraries\": violates neverallow",
		},
	},
}
}


func TestNeverallow(t *testing.T) {
func TestNeverallow(t *testing.T) {
@@ -398,6 +421,7 @@ func (p *mockCcLibraryModule) GenerateAndroidBuildActions(ModuleContext) {
type mockJavaLibraryProperties struct {
type mockJavaLibraryProperties struct {
	Libs           []string
	Libs           []string
	Sdk_version    *string
	Sdk_version    *string
	Uncompress_dex *bool
}
}


type mockJavaLibraryModule struct {
type mockJavaLibraryModule struct {
+5 −4
Original line number Original line Diff line number Diff line
@@ -568,16 +568,17 @@ func (a *AndroidApp) dexBuildActions(ctx android.ModuleContext) android.Path {
		installDir = filepath.Join("app", a.installApkName)
		installDir = filepath.Join("app", a.installApkName)
	}
	}
	a.dexpreopter.installPath = android.PathForModuleInstall(ctx, installDir, a.installApkName+".apk")
	a.dexpreopter.installPath = android.PathForModuleInstall(ctx, installDir, a.installApkName+".apk")
	a.dexpreopter.uncompressedDex = a.shouldUncompressDex(ctx)
	if a.deviceProperties.Uncompress_dex == nil {

		// If the value was not force-set by the user, use reasonable default based on the module.
		a.deviceProperties.Uncompress_dex = proptools.BoolPtr(a.shouldUncompressDex(ctx))
	}
	a.dexpreopter.uncompressedDex = *a.deviceProperties.Uncompress_dex
	a.dexpreopter.enforceUsesLibs = a.usesLibrary.enforceUsesLibraries()
	a.dexpreopter.enforceUsesLibs = a.usesLibrary.enforceUsesLibraries()
	a.dexpreopter.usesLibs = a.usesLibrary.usesLibraryProperties.Uses_libs
	a.dexpreopter.usesLibs = a.usesLibrary.usesLibraryProperties.Uses_libs
	a.dexpreopter.optionalUsesLibs = a.usesLibrary.presentOptionalUsesLibs(ctx)
	a.dexpreopter.optionalUsesLibs = a.usesLibrary.presentOptionalUsesLibs(ctx)
	a.dexpreopter.libraryPaths = a.usesLibrary.usesLibraryPaths(ctx)
	a.dexpreopter.libraryPaths = a.usesLibrary.usesLibraryPaths(ctx)
	a.dexpreopter.manifestFile = a.mergedManifestFile
	a.dexpreopter.manifestFile = a.mergedManifestFile


	a.deviceProperties.UncompressDex = a.dexpreopter.uncompressedDex

	if ctx.ModuleName() != "framework-res" {
	if ctx.ModuleName() != "framework-res" {
		a.Module.compile(ctx, a.aaptSrcJar)
		a.Module.compile(ctx, a.aaptSrcJar)
	}
	}
+26 −0
Original line number Original line Diff line number Diff line
@@ -2866,6 +2866,32 @@ func TestUncompressDex(t *testing.T) {
			uncompressedPlatform:  true,
			uncompressedPlatform:  true,
			uncompressedUnbundled: true,
			uncompressedUnbundled: true,
		},
		},
		{
			name: "normal_uncompress_dex_true",
			bp: `
				android_app {
					name: "foo",
					srcs: ["a.java"],
					sdk_version: "current",
					uncompress_dex: true,
				}
			`,
			uncompressedPlatform:  true,
			uncompressedUnbundled: true,
		},
		{
			name: "normal_uncompress_dex_false",
			bp: `
				android_app {
					name: "foo",
					srcs: ["a.java"],
					sdk_version: "current",
					uncompress_dex: false,
				}
			`,
			uncompressedPlatform:  false,
			uncompressedUnbundled: false,
		},
	}
	}


	test := func(t *testing.T, bp string, want bool, unbundled bool) {
	test := func(t *testing.T, bp string, want bool, unbundled bool) {
+3 −2
Original line number Original line Diff line number Diff line
@@ -18,6 +18,7 @@ import (
	"strings"
	"strings"


	"github.com/google/blueprint"
	"github.com/google/blueprint"
	"github.com/google/blueprint/proptools"


	"android/soong/android"
	"android/soong/android"
	"android/soong/remoteexec"
	"android/soong/remoteexec"
@@ -188,7 +189,7 @@ func (j *Module) compileDex(ctx android.ModuleContext, flags javaBuilderFlags,
	outDir := android.PathForModuleOut(ctx, "dex")
	outDir := android.PathForModuleOut(ctx, "dex")


	zipFlags := "--ignore_missing_files"
	zipFlags := "--ignore_missing_files"
	if j.deviceProperties.UncompressDex {
	if proptools.Bool(j.deviceProperties.Uncompress_dex) {
		zipFlags += " -L 0"
		zipFlags += " -L 0"
	}
	}


@@ -235,7 +236,7 @@ func (j *Module) compileDex(ctx android.ModuleContext, flags javaBuilderFlags,
			},
			},
		})
		})
	}
	}
	if j.deviceProperties.UncompressDex {
	if proptools.Bool(j.deviceProperties.Uncompress_dex) {
		alignedJavalibJar := android.PathForModuleOut(ctx, "aligned", jarName)
		alignedJavalibJar := android.PathForModuleOut(ctx, "aligned", jarName)
		TransformZipAlign(ctx, alignedJavalibJar, javalibJar)
		TransformZipAlign(ctx, alignedJavalibJar, javalibJar)
		javalibJar = alignedJavalibJar
		javalibJar = alignedJavalibJar
Loading