summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> 2024-08-16 22:16:41 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2024-08-16 22:16:41 +0000
commit08e76d9591e95b15a2cbb7fd2a933a7d238514d6 (patch)
treec351e1e3ee56b7d7ff67c9c9c9b6ccaf52f38e67
parentfb995a1e3ce88044dc245dfbf9cfd24a84ae5394 (diff)
parent7ded3827a4b4dda895d2bb0b2dc3063a59ad32f7 (diff)
Merge "Run "ravenizer" on ravenwood jars" into main
-rw-r--r--java/base.go28
-rw-r--r--java/builder.go18
-rw-r--r--java/ravenwood.go3
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