Quote aquery commands.

Bazel run shell actions begin `bin/bash -c <command>`, without escaping,
the command can be treated as an argument to `bin/bash`.

Test: build/bazel/mixed_droid.sh
Change-Id: I423cb393da2e6ac97448ec77b2596f12670dfd31
This commit is contained in:
Liz Kammer
2021-11-16 17:01:11 -05:00
parent ddeab21340
commit c31929962b
3 changed files with 7 additions and 4 deletions

View File

@@ -334,6 +334,9 @@ var (
mixedBuildsDisabledList = []string{ mixedBuildsDisabledList = []string{
"libbrotli", // http://b/198585397, ld.lld: error: bionic/libc/arch-arm64/generic/bionic/memmove.S:95:(.text+0x10): relocation R_AARCH64_CONDBR19 out of range: -1404176 is not in [-1048576, 1048575]; references __memcpy "libbrotli", // http://b/198585397, ld.lld: error: bionic/libc/arch-arm64/generic/bionic/memmove.S:95:(.text+0x10): relocation R_AARCH64_CONDBR19 out of range: -1404176 is not in [-1048576, 1048575]; references __memcpy
"minijail_constants_json", // http://b/200899432, bazel-built cc_genrule does not work in mixed build when it is a dependency of another soong module. "minijail_constants_json", // http://b/200899432, bazel-built cc_genrule does not work in mixed build when it is a dependency of another soong module.
"cap_names.h", // TODO(b/204913827) runfiles need to be handled in mixed builds
"libcap", // TODO(b/204913827) runfiles need to be handled in mixed builds
} }
// Used for quicker lookups // Used for quicker lookups

View File

@@ -271,7 +271,7 @@ func AqueryBuildStatements(aqueryJsonProto []byte) ([]BuildStatement, error) {
} }
buildStatement := BuildStatement{ buildStatement := BuildStatement{
Command: strings.Join(proptools.ShellEscapeList(actionEntry.Arguments), " "), Command: strings.Join(proptools.ShellEscapeListIncludingSpaces(actionEntry.Arguments), " "),
Depfile: depfile, Depfile: depfile,
OutputPaths: outputPaths, OutputPaths: outputPaths,
InputPaths: inputPaths, InputPaths: inputPaths,

View File

@@ -709,7 +709,7 @@ func TestTransitiveInputDepsets(t *testing.T) {
} }
expectedBuildStatements := []BuildStatement{ expectedBuildStatements := []BuildStatement{
BuildStatement{ BuildStatement{
Command: "/bin/bash -c touch bazel-out/sourceroot/k8-fastbuild/bin/testpkg/test_out", Command: "/bin/bash -c 'touch bazel-out/sourceroot/k8-fastbuild/bin/testpkg/test_out'",
OutputPaths: []string{"bazel-out/sourceroot/k8-fastbuild/bin/testpkg/test_out"}, OutputPaths: []string{"bazel-out/sourceroot/k8-fastbuild/bin/testpkg/test_out"},
InputPaths: inputPaths, InputPaths: inputPaths,
Mnemonic: "Action", Mnemonic: "Action",
@@ -1378,7 +1378,7 @@ func assertError(t *testing.T, err error, expected string) {
func assertBuildStatements(t *testing.T, expected []BuildStatement, actual []BuildStatement) { func assertBuildStatements(t *testing.T, expected []BuildStatement, actual []BuildStatement) {
t.Helper() t.Helper()
if len(expected) != len(actual) { if len(expected) != len(actual) {
t.Errorf("expected %d build statements, but got %d,\n expected: %v,\n actual: %v", t.Errorf("expected %d build statements, but got %d,\n expected: %#v,\n actual: %#v",
len(expected), len(actual), expected, actual) len(expected), len(actual), expected, actual)
return return
} }
@@ -1389,7 +1389,7 @@ ACTUAL_LOOP:
continue ACTUAL_LOOP continue ACTUAL_LOOP
} }
} }
t.Errorf("unexpected build statement %v.\n expected: %v", t.Errorf("unexpected build statement %#v.\n expected: %#v",
actualStatement, expected) actualStatement, expected)
return return
} }