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:
@@ -453,8 +453,32 @@ func (a *aqueryArtifactHandler) depsetContentHashes(inputDepsetIds []uint32) ([]
|
|||||||
return hashes, nil
|
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) {
|
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)
|
inputDepsetHashes, err := a.depsetContentHashes(actionEntry.InputDepSetIds)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
Reference in New Issue
Block a user