diff options
author | 2024-08-16 22:16:41 +0000 | |
---|---|---|
committer | 2024-08-16 22:16:41 +0000 | |
commit | 08e76d9591e95b15a2cbb7fd2a933a7d238514d6 (patch) | |
tree | c351e1e3ee56b7d7ff67c9c9c9b6ccaf52f38e67 | |
parent | fb995a1e3ce88044dc245dfbf9cfd24a84ae5394 (diff) | |
parent | 7ded3827a4b4dda895d2bb0b2dc3063a59ad32f7 (diff) |
Merge "Run "ravenizer" on ravenwood jars" into main
-rw-r--r-- | java/base.go | 28 | ||||
-rw-r--r-- | java/builder.go | 18 | ||||
-rw-r--r-- | java/ravenwood.go | 3 |
3 files changed, 48 insertions, 1 deletions
diff --git a/java/base.go b/java/base.go index 070d35538..c601cf536 100644 --- a/java/base.go +++ b/java/base.go @@ -222,6 +222,13 @@ type CommonProperties struct { // the stubs via libs, but should be set to true when the module depends on // the stubs via static libs. Is_stubs_module *bool + + // If true, enable the "Ravenizer" tool on the output jar. + // "Ravenizer" is a tool for Ravenwood tests, but it can also be enabled on other kinds + // of java targets. + Ravenizer struct { + Enabled *bool + } } // Properties that are specific to device modules. Host module factories should not add these when @@ -558,6 +565,10 @@ type Module struct { // List of soong module dependencies required to compile the current module. // This information is printed out to `Dependencies` field in module_bp_java_deps.json compileDepNames []string + + ravenizer struct { + enabled bool + } } var _ android.InstallableModule = (*Module)(nil) @@ -1116,7 +1127,6 @@ func (j *Module) addGeneratedSrcJars(path android.Path) { } func (j *Module) compile(ctx android.ModuleContext, extraSrcJars, extraClasspathJars, extraCombinedJars android.Paths) { - // Auto-propagating jarjar rules jarjarProviderData := j.collectJarJarRules(ctx) if jarjarProviderData != nil { @@ -1133,6 +1143,10 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars, extraClasspath j.exportAidlIncludeDirs = android.PathsForModuleSrc(ctx, j.deviceProperties.Aidl.Export_include_dirs) + if re := proptools.Bool(j.properties.Ravenizer.Enabled); re { + j.ravenizer.enabled = re + } + deps := j.collectDeps(ctx) flags := j.collectBuilderFlags(ctx, deps) @@ -1555,6 +1569,18 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars, extraClasspath return } + if j.ravenizer.enabled { + ravenizerInput := outputFile + ravenizerOutput := android.PathForModuleOut(ctx, "ravenizer", jarName) + ctx.Build(pctx, android.BuildParams{ + Rule: ravenizer, + Description: "ravenizer", + Input: ravenizerInput, + Output: ravenizerOutput, + }) + outputFile = ravenizerOutput + } + // Check package restrictions if necessary. if len(j.properties.Permitted_packages) > 0 { // Time stamp file created by the package check rule. diff --git a/java/builder.go b/java/builder.go index 591523545..49207e535 100644 --- a/java/builder.go +++ b/java/builder.go @@ -258,6 +258,13 @@ var ( }, ) + ravenizer = pctx.AndroidStaticRule("ravenizer", + blueprint.RuleParams{ + Command: "rm -f $out && ${ravenizer} --in-jar $in --out-jar $out", + CommandDeps: []string{"${ravenizer}"}, + }, + ) + zipalign = pctx.AndroidStaticRule("zipalign", blueprint.RuleParams{ Command: "if ! ${config.ZipAlign} -c -p 4 $in > /dev/null; then " + @@ -307,6 +314,7 @@ func init() { pctx.Import("android/soong/java/config") pctx.HostBinToolVariable("aconfig", "aconfig") + pctx.HostBinToolVariable("ravenizer", "ravenizer") pctx.HostBinToolVariable("keep-flagged-apis", "keep-flagged-apis") } @@ -765,6 +773,16 @@ func TransformJetifier(ctx android.ModuleContext, outputFile android.WritablePat }) } +func TransformRavenizer(ctx android.ModuleContext, outputFile android.WritablePath, + inputFile android.Path) { + ctx.Build(pctx, android.BuildParams{ + Rule: ravenizer, + Description: "ravenizer", + Output: outputFile, + Input: inputFile, + }) +} + func GenerateMainClassManifest(ctx android.ModuleContext, outputFile android.WritablePath, mainClass string) { android.WriteFileRule(ctx, outputFile, "Main-Class: "+mainClass+"\n") } diff --git a/java/ravenwood.go b/java/ravenwood.go index 4905755f4..bb136cf6e 100644 --- a/java/ravenwood.go +++ b/java/ravenwood.go @@ -143,6 +143,9 @@ func (r *ravenwoodTest) GenerateAndroidBuildActions(ctx android.ModuleContext) { HostTemplate: "${RavenwoodTestConfigTemplate}", }) + // Always enable Ravenizer for ravenwood tests. + r.Library.ravenizer.enabled = true + r.Library.GenerateAndroidBuildActions(ctx) // Start by depending on all files installed by dependencies |