Run "ravenizer" on ravenwood jars

Ravenizer is a new tool to preprocess ravenwood tests.

It can optionally be applied to other java targets (for analyzing them,
etc).

The actual tool is being implemented internally, so in AOSP, we just
use a script that copies the jar file as a replacement.

Test: manual -- run `m RavenwoodBivalentTest` and make sure the ravenizer
    log message shows up.
Flag: EXEMPT host test change only
Bug: 360390999
Change-Id: I6d1f81e7c425397b16c37e7c30267957097387fd
This commit is contained in:
Makoto Onuki
2024-03-28 14:42:20 -07:00
parent dd00f2de3c
commit 7ded3827a4
3 changed files with 48 additions and 1 deletions

View File

@@ -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)
@@ -1113,7 +1124,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 {
@@ -1130,6 +1140,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)
@@ -1568,6 +1582,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.