Loading java/droiddoc.go +0 −4 Original line number Diff line number Diff line Loading @@ -98,10 +98,6 @@ type JavadocProperties struct { // names of the output files used in args that will be generated Out []string // If set, metalava is sandboxed to only read files explicitly specified on the command // line. Defaults to false. Sandbox *bool } type ApiToCheck struct { Loading java/droidstubs.go +16 −74 Original line number Diff line number Diff line Loading @@ -383,7 +383,7 @@ func (d *Droidstubs) apiLevelsAnnotationsFlags(ctx android.ModuleContext, cmd *a func metalavaCmd(ctx android.ModuleContext, rule *android.RuleBuilder, javaVersion javaVersion, srcs android.Paths, srcJarList android.Path, bootclasspath, classpath classpath, sourcepaths android.Paths, implicitsRsp, homeDir android.WritablePath, sandbox bool) *android.RuleBuilderCommand { homeDir android.WritablePath) *android.RuleBuilderCommand { rule.Command().Text("rm -rf").Flag(homeDir.String()) rule.Command().Text("mkdir -p").Flag(homeDir.String()) Loading @@ -392,7 +392,6 @@ func metalavaCmd(ctx android.ModuleContext, rule *android.RuleBuilder, javaVersi if ctx.Config().UseRBE() && ctx.Config().IsEnvTrue("RBE_METALAVA") { rule.Remoteable(android.RemoteRuleSupports{RBE: true}) if sandbox { execStrategy := ctx.Config().GetenvWithDefault("RBE_METALAVA_EXEC_STRATEGY", remoteexec.LocalExecStrategy) labels := map[string]string{"type": "tool", "name": "metalava"} // TODO: metalava pool rejects these jobs Loading @@ -403,28 +402,6 @@ func metalavaCmd(ctx android.ModuleContext, rule *android.RuleBuilder, javaVersi ToolchainInputs: []string{config.JavaCmd(ctx).String()}, Platform: map[string]string{remoteexec.PoolKey: pool}, }) } else { execStrategy := remoteexec.LocalExecStrategy labels := map[string]string{"type": "compile", "lang": "java", "compiler": "metalava", "shallow": "true"} pool := ctx.Config().GetenvWithDefault("RBE_METALAVA_POOL", "metalava") inputs := []string{ ctx.Config().HostJavaToolPath(ctx, "metalava").String(), homeDir.String(), } if v := ctx.Config().Getenv("RBE_METALAVA_INPUTS"); v != "" { inputs = append(inputs, strings.Split(v, ",")...) } cmd.Text((&remoteexec.REParams{ Labels: labels, ExecStrategy: execStrategy, Inputs: inputs, RSPFiles: []string{implicitsRsp.String()}, ToolchainInputs: []string{config.JavaCmd(ctx).String()}, Platform: map[string]string{remoteexec.PoolKey: pool}, EnvironmentVariables: []string{"ANDROID_PREFS_ROOT"}, }).NoVarTemplate(ctx.Config().RBEWrapper())) } } cmd.BuiltTool("metalava").ImplicitTool(ctx.Config().HostJavaToolPath(ctx, "metalava.jar")). Loading @@ -435,18 +412,6 @@ func metalavaCmd(ctx android.ModuleContext, rule *android.RuleBuilder, javaVersi FlagWithRspFileInputList("@", android.PathForModuleOut(ctx, "metalava.rsp"), srcs). FlagWithInput("@", srcJarList) if !sandbox { if javaHome := ctx.Config().Getenv("ANDROID_JAVA_HOME"); javaHome != "" { cmd.Implicit(android.PathForSource(ctx, javaHome)) } cmd.FlagWithOutput("--strict-input-files:warn ", android.PathForModuleOut(ctx, ctx.ModuleName()+"-"+"violations.txt")) if implicitsRsp != nil { cmd.FlagWithArg("--strict-input-files-exempt ", "@"+implicitsRsp.String()) } } if len(bootclasspath) > 0 { cmd.FlagWithInputList("-bootclasspath ", bootclasspath.Paths(), ":") } Loading Loading @@ -482,12 +447,9 @@ func (d *Droidstubs) GenerateAndroidBuildActions(ctx android.ModuleContext) { rule := android.NewRuleBuilder(pctx, ctx) sandbox := proptools.BoolDefault(d.Javadoc.properties.Sandbox, true) if sandbox { rule.Sbox(android.PathForModuleOut(ctx, "metalava"), android.PathForModuleOut(ctx, "metalava.sbox.textproto")). SandboxInputs() } if BoolDefault(d.properties.High_mem, false) { // This metalava run uses lots of memory, restrict the number of metalava jobs that can run in parallel. Loading @@ -505,11 +467,9 @@ func (d *Droidstubs) GenerateAndroidBuildActions(ctx android.ModuleContext) { srcJarList := zipSyncCmd(ctx, rule, srcJarDir, d.Javadoc.srcJars) implicitsRsp := android.PathForModuleOut(ctx, ctx.ModuleName()+"-"+"implicits.rsp") homeDir := android.PathForModuleOut(ctx, "metalava", "home") cmd := metalavaCmd(ctx, rule, javaVersion, d.Javadoc.srcFiles, srcJarList, deps.bootClasspath, deps.classpath, d.Javadoc.sourcepaths, implicitsRsp, homeDir, sandbox) deps.bootClasspath, deps.classpath, d.Javadoc.sourcepaths, homeDir) cmd.Implicits(d.Javadoc.implicits) d.stubsFlags(ctx, cmd, stubsDir) Loading Loading @@ -628,22 +588,6 @@ func (d *Droidstubs) GenerateAndroidBuildActions(ctx android.ModuleContext) { cmd.FlagWithArg("--error-message:compatibility:released ", msg) } if !sandbox { // When sandboxing is enabled RuleBuilder tracks all the inputs needed for remote execution. // Without it we have to do it manually. impRule := android.NewRuleBuilder(pctx, ctx) impCmd := impRule.Command() // An action that copies the ninja generated rsp file to a new location. This allows us to // add a large number of inputs to a file without exceeding bash command length limits (which // would happen if we use the WriteFile rule). The cp is needed because RuleBuilder sets the // rsp file to be ${output}.rsp. impCmd.Text("cp"). FlagWithRspFileInputList("", android.PathForModuleOut(ctx, "metalava-implicits.rsp"), cmd.GetImplicits()). Output(implicitsRsp) impRule.Build("implicitsGen", "implicits generation") cmd.Implicit(implicitsRsp) } if generateStubs { rule.Command(). BuiltTool("soong_zip"). Loading Loading @@ -675,9 +619,7 @@ func (d *Droidstubs) GenerateAndroidBuildActions(ctx android.ModuleContext) { } // TODO(b/183630617): rewrapper doesn't support restat rules if !sandbox { rule.Restat() } // rule.Restat() zipSyncCleanupCmd(rule, srcJarDir) Loading java/droidstubs_test.go +5 −6 Original line number Diff line number Diff line Loading @@ -34,7 +34,6 @@ func TestDroidstubs(t *testing.T) { srcs: ["bar-doc/a.java"], api_levels_annotations_dirs: ["droiddoc-templates-sdk"], api_levels_annotations_enabled: true, sandbox: false, } droidstubs { Loading @@ -44,7 +43,6 @@ func TestDroidstubs(t *testing.T) { api_levels_annotations_dirs: ["droiddoc-templates-sdk"], api_levels_annotations_enabled: true, api_levels_jar_filename: "android.other.jar", sandbox: false, } `, map[string][]byte{ Loading @@ -68,13 +66,15 @@ func TestDroidstubs(t *testing.T) { } for _, c := range testcases { m := ctx.ModuleForTests(c.moduleName, "android_common") metalava := m.Rule("metalava") rp := metalava.RuleParams manifest := m.Output("metalava.sbox.textproto") sboxProto := android.RuleBuilderSboxProtoForTests(t, manifest) expected := "--android-jar-pattern ./%/public/" + c.expectedJarFilename if actual := rp.Command; !strings.Contains(actual, expected) { if actual := String(sboxProto.Commands[0].Command); !strings.Contains(actual, expected) { t.Errorf("For %q, expected metalava argument %q, but was not found %q", c.moduleName, expected, actual) } metalava := m.Rule("metalava") rp := metalava.RuleParams if actual := rp.Pool != nil && strings.Contains(rp.Pool.String(), "highmem"); actual != c.high_mem { t.Errorf("Expected %q high_mem to be %v, was %v", c.moduleName, c.high_mem, actual) } Loading @@ -92,7 +92,6 @@ func TestDroidstubsSandbox(t *testing.T) { droidstubs { name: "bar-stubs", srcs: ["bar-doc/a.java"], sandbox: true, args: "--reference $(location :foo)", arg_files: [":foo"], Loading Loading
java/droiddoc.go +0 −4 Original line number Diff line number Diff line Loading @@ -98,10 +98,6 @@ type JavadocProperties struct { // names of the output files used in args that will be generated Out []string // If set, metalava is sandboxed to only read files explicitly specified on the command // line. Defaults to false. Sandbox *bool } type ApiToCheck struct { Loading
java/droidstubs.go +16 −74 Original line number Diff line number Diff line Loading @@ -383,7 +383,7 @@ func (d *Droidstubs) apiLevelsAnnotationsFlags(ctx android.ModuleContext, cmd *a func metalavaCmd(ctx android.ModuleContext, rule *android.RuleBuilder, javaVersion javaVersion, srcs android.Paths, srcJarList android.Path, bootclasspath, classpath classpath, sourcepaths android.Paths, implicitsRsp, homeDir android.WritablePath, sandbox bool) *android.RuleBuilderCommand { homeDir android.WritablePath) *android.RuleBuilderCommand { rule.Command().Text("rm -rf").Flag(homeDir.String()) rule.Command().Text("mkdir -p").Flag(homeDir.String()) Loading @@ -392,7 +392,6 @@ func metalavaCmd(ctx android.ModuleContext, rule *android.RuleBuilder, javaVersi if ctx.Config().UseRBE() && ctx.Config().IsEnvTrue("RBE_METALAVA") { rule.Remoteable(android.RemoteRuleSupports{RBE: true}) if sandbox { execStrategy := ctx.Config().GetenvWithDefault("RBE_METALAVA_EXEC_STRATEGY", remoteexec.LocalExecStrategy) labels := map[string]string{"type": "tool", "name": "metalava"} // TODO: metalava pool rejects these jobs Loading @@ -403,28 +402,6 @@ func metalavaCmd(ctx android.ModuleContext, rule *android.RuleBuilder, javaVersi ToolchainInputs: []string{config.JavaCmd(ctx).String()}, Platform: map[string]string{remoteexec.PoolKey: pool}, }) } else { execStrategy := remoteexec.LocalExecStrategy labels := map[string]string{"type": "compile", "lang": "java", "compiler": "metalava", "shallow": "true"} pool := ctx.Config().GetenvWithDefault("RBE_METALAVA_POOL", "metalava") inputs := []string{ ctx.Config().HostJavaToolPath(ctx, "metalava").String(), homeDir.String(), } if v := ctx.Config().Getenv("RBE_METALAVA_INPUTS"); v != "" { inputs = append(inputs, strings.Split(v, ",")...) } cmd.Text((&remoteexec.REParams{ Labels: labels, ExecStrategy: execStrategy, Inputs: inputs, RSPFiles: []string{implicitsRsp.String()}, ToolchainInputs: []string{config.JavaCmd(ctx).String()}, Platform: map[string]string{remoteexec.PoolKey: pool}, EnvironmentVariables: []string{"ANDROID_PREFS_ROOT"}, }).NoVarTemplate(ctx.Config().RBEWrapper())) } } cmd.BuiltTool("metalava").ImplicitTool(ctx.Config().HostJavaToolPath(ctx, "metalava.jar")). Loading @@ -435,18 +412,6 @@ func metalavaCmd(ctx android.ModuleContext, rule *android.RuleBuilder, javaVersi FlagWithRspFileInputList("@", android.PathForModuleOut(ctx, "metalava.rsp"), srcs). FlagWithInput("@", srcJarList) if !sandbox { if javaHome := ctx.Config().Getenv("ANDROID_JAVA_HOME"); javaHome != "" { cmd.Implicit(android.PathForSource(ctx, javaHome)) } cmd.FlagWithOutput("--strict-input-files:warn ", android.PathForModuleOut(ctx, ctx.ModuleName()+"-"+"violations.txt")) if implicitsRsp != nil { cmd.FlagWithArg("--strict-input-files-exempt ", "@"+implicitsRsp.String()) } } if len(bootclasspath) > 0 { cmd.FlagWithInputList("-bootclasspath ", bootclasspath.Paths(), ":") } Loading Loading @@ -482,12 +447,9 @@ func (d *Droidstubs) GenerateAndroidBuildActions(ctx android.ModuleContext) { rule := android.NewRuleBuilder(pctx, ctx) sandbox := proptools.BoolDefault(d.Javadoc.properties.Sandbox, true) if sandbox { rule.Sbox(android.PathForModuleOut(ctx, "metalava"), android.PathForModuleOut(ctx, "metalava.sbox.textproto")). SandboxInputs() } if BoolDefault(d.properties.High_mem, false) { // This metalava run uses lots of memory, restrict the number of metalava jobs that can run in parallel. Loading @@ -505,11 +467,9 @@ func (d *Droidstubs) GenerateAndroidBuildActions(ctx android.ModuleContext) { srcJarList := zipSyncCmd(ctx, rule, srcJarDir, d.Javadoc.srcJars) implicitsRsp := android.PathForModuleOut(ctx, ctx.ModuleName()+"-"+"implicits.rsp") homeDir := android.PathForModuleOut(ctx, "metalava", "home") cmd := metalavaCmd(ctx, rule, javaVersion, d.Javadoc.srcFiles, srcJarList, deps.bootClasspath, deps.classpath, d.Javadoc.sourcepaths, implicitsRsp, homeDir, sandbox) deps.bootClasspath, deps.classpath, d.Javadoc.sourcepaths, homeDir) cmd.Implicits(d.Javadoc.implicits) d.stubsFlags(ctx, cmd, stubsDir) Loading Loading @@ -628,22 +588,6 @@ func (d *Droidstubs) GenerateAndroidBuildActions(ctx android.ModuleContext) { cmd.FlagWithArg("--error-message:compatibility:released ", msg) } if !sandbox { // When sandboxing is enabled RuleBuilder tracks all the inputs needed for remote execution. // Without it we have to do it manually. impRule := android.NewRuleBuilder(pctx, ctx) impCmd := impRule.Command() // An action that copies the ninja generated rsp file to a new location. This allows us to // add a large number of inputs to a file without exceeding bash command length limits (which // would happen if we use the WriteFile rule). The cp is needed because RuleBuilder sets the // rsp file to be ${output}.rsp. impCmd.Text("cp"). FlagWithRspFileInputList("", android.PathForModuleOut(ctx, "metalava-implicits.rsp"), cmd.GetImplicits()). Output(implicitsRsp) impRule.Build("implicitsGen", "implicits generation") cmd.Implicit(implicitsRsp) } if generateStubs { rule.Command(). BuiltTool("soong_zip"). Loading Loading @@ -675,9 +619,7 @@ func (d *Droidstubs) GenerateAndroidBuildActions(ctx android.ModuleContext) { } // TODO(b/183630617): rewrapper doesn't support restat rules if !sandbox { rule.Restat() } // rule.Restat() zipSyncCleanupCmd(rule, srcJarDir) Loading
java/droidstubs_test.go +5 −6 Original line number Diff line number Diff line Loading @@ -34,7 +34,6 @@ func TestDroidstubs(t *testing.T) { srcs: ["bar-doc/a.java"], api_levels_annotations_dirs: ["droiddoc-templates-sdk"], api_levels_annotations_enabled: true, sandbox: false, } droidstubs { Loading @@ -44,7 +43,6 @@ func TestDroidstubs(t *testing.T) { api_levels_annotations_dirs: ["droiddoc-templates-sdk"], api_levels_annotations_enabled: true, api_levels_jar_filename: "android.other.jar", sandbox: false, } `, map[string][]byte{ Loading @@ -68,13 +66,15 @@ func TestDroidstubs(t *testing.T) { } for _, c := range testcases { m := ctx.ModuleForTests(c.moduleName, "android_common") metalava := m.Rule("metalava") rp := metalava.RuleParams manifest := m.Output("metalava.sbox.textproto") sboxProto := android.RuleBuilderSboxProtoForTests(t, manifest) expected := "--android-jar-pattern ./%/public/" + c.expectedJarFilename if actual := rp.Command; !strings.Contains(actual, expected) { if actual := String(sboxProto.Commands[0].Command); !strings.Contains(actual, expected) { t.Errorf("For %q, expected metalava argument %q, but was not found %q", c.moduleName, expected, actual) } metalava := m.Rule("metalava") rp := metalava.RuleParams if actual := rp.Pool != nil && strings.Contains(rp.Pool.String(), "highmem"); actual != c.high_mem { t.Errorf("Expected %q high_mem to be %v, was %v", c.moduleName, c.high_mem, actual) } Loading @@ -92,7 +92,6 @@ func TestDroidstubsSandbox(t *testing.T) { droidstubs { name: "bar-stubs", srcs: ["bar-doc/a.java"], sandbox: true, args: "--reference $(location :foo)", arg_files: [":foo"], Loading