Workaround bazel command too long
Write long bazel commands returned by aquery to a shell script before executing them to work around command line length limits. Bug: 261536423 Test: USE_HOST_MUSL=true build/bazel/ci/mixed_libc.sh Change-Id: Id98a07800df82d1538e6b16b733488a1b9943bf3
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).
|
||||
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.
|
||||
cmd.Text(fmt.Sprintf("cd '%s' &&", executionRoot))
|
||||
|
||||
@@ -1122,7 +1122,14 @@ func createCommand(cmd *RuleBuilderCommand, buildStatement bazel.BuildStatement,
|
||||
}
|
||||
|
||||
// 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 {
|
||||
cmd.ImplicitOutput(PathForBazelOut(ctx, outputPath))
|
||||
|
Reference in New Issue
Block a user