From a4eafddc41d81d066650618eae24792cb66064c9 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Wed, 24 Mar 2021 14:09:28 -0700 Subject: [PATCH] Support multiple rsp files in REParams rewrapper supports a comma separate list of rsp files, replace REParams.RSPFile with REParmas.RSPFiles. Test: remoteexec_test.go Change-Id: I7850c071c23d368d6fad4480dd527d146c13c6d3 --- android/rule_builder.go | 2 +- cc/builder.go | 4 ++-- java/builder.go | 6 +++--- java/droiddoc.go | 2 +- remoteexec/remoteexec.go | 9 ++++----- remoteexec/remoteexec_test.go | 4 ++-- 6 files changed, 13 insertions(+), 14 deletions(-) diff --git a/android/rule_builder.go b/android/rule_builder.go index 0d8e2b7c9..4b356fa1f 100644 --- a/android/rule_builder.go +++ b/android/rule_builder.go @@ -654,7 +654,7 @@ func (r *RuleBuilder) Build(name string, desc string) { inputs = append(inputs, inputsListFile) r.rbeParams.OutputFiles = outputs.Strings() - r.rbeParams.RSPFile = inputsListFile.String() + r.rbeParams.RSPFiles = []string{inputsListFile.String()} rewrapperCommand := r.rbeParams.NoVarTemplate(r.ctx.Config().RBEWrapper()) commandString = rewrapperCommand + " bash -c '" + strings.ReplaceAll(commandString, `'`, `'\''`) + "'" } diff --git a/cc/builder.go b/cc/builder.go index 273cdd3f4..4771b8932 100644 --- a/cc/builder.go +++ b/cc/builder.go @@ -73,7 +73,7 @@ var ( Labels: map[string]string{"type": "link", "tool": "clang"}, ExecStrategy: "${config.RECXXLinksExecStrategy}", Inputs: []string{"${out}.rsp", "$implicitInputs"}, - RSPFile: "${out}.rsp", + RSPFiles: []string{"${out}.rsp"}, OutputFiles: []string{"${out}", "$implicitOutputs"}, ToolchainInputs: []string{"$ldCmd"}, Platform: map[string]string{remoteexec.PoolKey: "${config.RECXXLinksPool}"}, @@ -256,7 +256,7 @@ var ( Labels: map[string]string{"type": "tool", "name": "abi-linker"}, ExecStrategy: "${config.REAbiLinkerExecStrategy}", Inputs: []string{"$sAbiLinkerLibs", "${out}.rsp", "$implicitInputs"}, - RSPFile: "${out}.rsp", + RSPFiles: []string{"${out}.rsp"}, OutputFiles: []string{"$out"}, ToolchainInputs: []string{"$sAbiLinker"}, Platform: map[string]string{remoteexec.PoolKey: "${config.RECXXPool}"}, diff --git a/java/builder.go b/java/builder.go index fc740a831..cde87310f 100644 --- a/java/builder.go +++ b/java/builder.go @@ -150,7 +150,7 @@ var ( &remoteexec.REParams{Labels: map[string]string{"type": "tool", "name": "turbine"}, ExecStrategy: "${config.RETurbineExecStrategy}", Inputs: []string{"${config.TurbineJar}", "${out}.rsp", "$implicits"}, - RSPFile: "${out}.rsp", + RSPFiles: []string{"${out}.rsp"}, OutputFiles: []string{"$out.tmp"}, OutputDirectories: []string{"$outDir"}, ToolchainInputs: []string{"${config.JavaCmd}"}, @@ -167,7 +167,7 @@ var ( &remoteexec.REParams{ ExecStrategy: "${config.REJarExecStrategy}", Inputs: []string{"${config.SoongZipCmd}", "${out}.rsp"}, - RSPFile: "${out}.rsp", + RSPFiles: []string{"${out}.rsp"}, OutputFiles: []string{"$out"}, Platform: map[string]string{remoteexec.PoolKey: "${config.REJavaPool}"}, }, []string{"jarArgs"}, nil) @@ -182,7 +182,7 @@ var ( &remoteexec.REParams{ ExecStrategy: "${config.REZipExecStrategy}", Inputs: []string{"${config.SoongZipCmd}", "${out}.rsp", "$implicits"}, - RSPFile: "${out}.rsp", + RSPFiles: []string{"${out}.rsp"}, OutputFiles: []string{"$out"}, Platform: map[string]string{remoteexec.PoolKey: "${config.REJavaPool}"}, }, []string{"jarArgs"}, []string{"implicits"}) diff --git a/java/droiddoc.go b/java/droiddoc.go index a892b363e..34f017dc5 100644 --- a/java/droiddoc.go +++ b/java/droiddoc.go @@ -1231,7 +1231,7 @@ func metalavaCmd(ctx android.ModuleContext, rule *android.RuleBuilder, javaVersi Labels: labels, ExecStrategy: execStrategy, Inputs: inputs, - RSPFile: implicitsRsp.String(), + RSPFiles: []string{implicitsRsp.String()}, ToolchainInputs: []string{config.JavaCmd(ctx).String()}, Platform: map[string]string{remoteexec.PoolKey: pool}, EnvironmentVariables: []string{"ANDROID_SDK_HOME"}, diff --git a/remoteexec/remoteexec.go b/remoteexec/remoteexec.go index 166f68c54..ef4672a73 100644 --- a/remoteexec/remoteexec.go +++ b/remoteexec/remoteexec.go @@ -64,9 +64,8 @@ type REParams struct { ExecStrategy string // Inputs is a list of input paths or ninja variables. Inputs []string - // RSPFile is the name of the ninja variable used by the rule as a placeholder for an rsp - // input. - RSPFile string + // RSPFiles is the name of the files used by the rule as a placeholder for an rsp input. + RSPFiles []string // OutputFiles is a list of output file paths or ninja variables as placeholders for rule // outputs. OutputFiles []string @@ -134,8 +133,8 @@ func (r *REParams) wrapperArgs() string { args += " --inputs=" + strings.Join(r.Inputs, ",") } - if r.RSPFile != "" { - args += " --input_list_paths=" + r.RSPFile + if len(r.RSPFiles) > 0 { + args += " --input_list_paths=" + strings.Join(r.RSPFiles, ",") } if len(r.OutputFiles) > 0 { diff --git a/remoteexec/remoteexec_test.go b/remoteexec/remoteexec_test.go index 875aa6ae7..b117b8915 100644 --- a/remoteexec/remoteexec_test.go +++ b/remoteexec/remoteexec_test.go @@ -45,14 +45,14 @@ func TestTemplate(t *testing.T) { Inputs: []string{"$in"}, OutputFiles: []string{"$out"}, ExecStrategy: "remote", - RSPFile: "$out.rsp", + RSPFiles: []string{"$out.rsp", "out2.rsp"}, ToolchainInputs: []string{"clang++"}, Platform: map[string]string{ ContainerImageKey: DefaultImage, PoolKey: "default", }, }, - want: fmt.Sprintf("${android.RBEWrapper} --labels=compiler=clang,lang=cpp,type=compile --platform=\"Pool=default,container-image=%s\" --exec_strategy=remote --inputs=$in --input_list_paths=$out.rsp --output_files=$out --toolchain_inputs=clang++ -- ", DefaultImage), + want: fmt.Sprintf("${android.RBEWrapper} --labels=compiler=clang,lang=cpp,type=compile --platform=\"Pool=default,container-image=%s\" --exec_strategy=remote --inputs=$in --input_list_paths=$out.rsp,out2.rsp --output_files=$out --toolchain_inputs=clang++ -- ", DefaultImage), }, } for _, test := range tests {