From d96a60685a3147d6d6f15daf4a5cad419e737430 Mon Sep 17 00:00:00 2001 From: Sam Delmerico Date: Thu, 14 Sep 2023 21:34:13 +0000 Subject: [PATCH] conditionally escape rule builder command For rules which use RuleBuilder with Ninja variables (using the BuildWithUnescapedNinjaVars function) but are not sandboxed, the command output by RuleBuilder must not be escaped, or else Ninja variables will not be evaluated until they are run on the command line. Test: m libnum_traits liboid_registry crosvm droid Change-Id: I81611368ab1975220f7f517df2f57646deac2af8 --- android/rule_builder.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/android/rule_builder.go b/android/rule_builder.go index 97582db2c..245b759ca 100644 --- a/android/rule_builder.go +++ b/android/rule_builder.go @@ -756,9 +756,13 @@ func (r *RuleBuilder) build(name string, desc string, ninjaEscapeCommandString b pool = localPool } + if ninjaEscapeCommandString { + commandString = proptools.NinjaEscape(commandString) + } + r.ctx.Build(r.pctx, BuildParams{ Rule: r.ctx.Rule(r.pctx, name, blueprint.RuleParams{ - Command: proptools.NinjaEscape(commandString), + Command: commandString, CommandDeps: proptools.NinjaEscapeList(tools.Strings()), Restat: r.restat, Rspfile: proptools.NinjaEscape(rspFile),