Respect '' received from aquery
GoCompilePkg action's aquery results contains ''. e.g (the interesting ones) ``` /bin/bulder ... -embedroot '' -gcflags '' -asmflags '' ``` strings.Join would cause it to appear as a whitespace and cause issues. (in ninja without this CL) ``` /bin/builder ... -embedroot -gcflags -asmflags ``` Convert the empty literal to '' before strings.Join To limit inadvertent side-effects, this limits it to GoCompilePkg mnemonic Test: TH Change-Id: I67161c194dabac6f857ff49b85d4b2471970a9b2
This commit is contained in:
parent
3b7411adc7
commit
da724863da
1 changed files with 25 additions and 1 deletions
|
@ -453,8 +453,32 @@ func (a *aqueryArtifactHandler) depsetContentHashes(inputDepsetIds []uint32) ([]
|
|||
return hashes, nil
|
||||
}
|
||||
|
||||
// escapes the args received from aquery and creates a command string
|
||||
func commandString(actionEntry *analysis_v2_proto.Action) string {
|
||||
switch actionEntry.Mnemonic {
|
||||
case "GoCompilePkg":
|
||||
argsEscaped := []string{}
|
||||
for _, arg := range actionEntry.Arguments {
|
||||
if arg == "" {
|
||||
// If this is an empty string, add ''
|
||||
// And not
|
||||
// 1. (literal empty)
|
||||
// 2. `''\'''\'''` (escaped version of '')
|
||||
//
|
||||
// If we had used (1), then this would appear as a whitespace when we strings.Join
|
||||
argsEscaped = append(argsEscaped, "''")
|
||||
} else {
|
||||
argsEscaped = append(argsEscaped, proptools.ShellEscapeIncludingSpaces(arg))
|
||||
}
|
||||
}
|
||||
return strings.Join(argsEscaped, " ")
|
||||
default:
|
||||
return strings.Join(proptools.ShellEscapeListIncludingSpaces(actionEntry.Arguments), " ")
|
||||
}
|
||||
}
|
||||
|
||||
func (a *aqueryArtifactHandler) normalActionBuildStatement(actionEntry *analysis_v2_proto.Action) (*BuildStatement, error) {
|
||||
command := strings.Join(proptools.ShellEscapeListIncludingSpaces(actionEntry.Arguments), " ")
|
||||
command := commandString(actionEntry)
|
||||
inputDepsetHashes, err := a.depsetContentHashes(actionEntry.InputDepSetIds)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
Loading…
Reference in a new issue