Merge "Workaround bazel command too long"
This commit is contained in:
@@ -1103,7 +1103,7 @@ func (c *bazelSingleton) GenerateBuildActions(ctx SingletonContext) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Register bazel-owned build statements (obtained from the aquery invocation).
|
// Register bazel-owned build statements (obtained from the aquery invocation).
|
||||||
func createCommand(cmd *RuleBuilderCommand, buildStatement bazel.BuildStatement, executionRoot string, bazelOutDir string, ctx PathContext) {
|
func createCommand(cmd *RuleBuilderCommand, buildStatement bazel.BuildStatement, executionRoot string, bazelOutDir string, ctx BuilderContext) {
|
||||||
// executionRoot is the action cwd.
|
// executionRoot is the action cwd.
|
||||||
cmd.Text(fmt.Sprintf("cd '%s' &&", executionRoot))
|
cmd.Text(fmt.Sprintf("cd '%s' &&", executionRoot))
|
||||||
|
|
||||||
@@ -1122,7 +1122,14 @@ func createCommand(cmd *RuleBuilderCommand, buildStatement bazel.BuildStatement,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// The actual Bazel action.
|
// The actual Bazel action.
|
||||||
cmd.Text(buildStatement.Command)
|
if len(buildStatement.Command) > 16*1024 {
|
||||||
|
commandFile := PathForBazelOut(ctx, buildStatement.OutputPaths[0]+".sh")
|
||||||
|
WriteFileRule(ctx, commandFile, buildStatement.Command)
|
||||||
|
|
||||||
|
cmd.Text("bash").Text(buildStatement.OutputPaths[0] + ".sh").Implicit(commandFile)
|
||||||
|
} else {
|
||||||
|
cmd.Text(buildStatement.Command)
|
||||||
|
}
|
||||||
|
|
||||||
for _, outputPath := range buildStatement.OutputPaths {
|
for _, outputPath := range buildStatement.OutputPaths {
|
||||||
cmd.ImplicitOutput(PathForBazelOut(ctx, outputPath))
|
cmd.ImplicitOutput(PathForBazelOut(ctx, outputPath))
|
||||||
|
@@ -129,7 +129,8 @@ func TestInvokeBazelPopulatesBuildStatements(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
cmd := RuleBuilderCommand{}
|
cmd := RuleBuilderCommand{}
|
||||||
createCommand(&cmd, got[0], "test/exec_root", "test/bazel_out", PathContextForTesting(TestConfig("out", nil, "", nil)))
|
ctx := builderContextForTests{PathContextForTesting(TestConfig("out", nil, "", nil))}
|
||||||
|
createCommand(&cmd, got[0], "test/exec_root", "test/bazel_out", ctx)
|
||||||
if actual, expected := cmd.buf.String(), testCase.command; expected != actual {
|
if actual, expected := cmd.buf.String(), testCase.command; expected != actual {
|
||||||
t.Errorf("expected: [%s], actual: [%s]", expected, actual)
|
t.Errorf("expected: [%s], actual: [%s]", expected, actual)
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user