sweet: don't send cockroachdb build output to stdout/stderr Currently the build for CockroachDB always sends its output to stdout/stderr, and bazel absolutely loves to produce a firehose of output. This is very annoying when just trying to run sweet yourself. This change captures the output instead and only dumps it on error. Change-Id: I445731d3169d02bcdcc6e6d2ba02c0b510e9b64f Reviewed-on: https://go-review.googlesource.com/c/benchmarks/+/613935 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Auto-Submit: Michael Knyszek <mknyszek@google.com> Reviewed-by: Michael Pratt <mpratt@google.com>
diff --git a/sweet/harnesses/cockroachdb.go b/sweet/harnesses/cockroachdb.go index 3053791..2782bcd 100644 --- a/sweet/harnesses/cockroachdb.go +++ b/sweet/harnesses/cockroachdb.go
@@ -6,7 +6,6 @@ import ( "fmt" - "os" "os/exec" "path/filepath" "runtime" @@ -66,11 +65,12 @@ defer func() { cmd := exec.Command(bazel(), "clean", "--expunge") cmd.Dir = bcfg.SrcDir - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr // Cleanup is best effort, there might not be anything to clean up // if we fail early enough in the build process. - _ = cmd.Run() + out, err := cmd.CombinedOutput() + if err != nil { + log.Printf("failed to run %q: %v: output:\n%s", cmd, err, out) + } }() // Configure the build env. @@ -82,20 +82,16 @@ cmd := exec.Command(bazel(), "run", "//pkg/gen:code") cmd.Dir = bcfg.SrcDir cmd.Env = env.Collapse() - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - if err := cmd.Run(); err != nil { - return err + if out, err := cmd.CombinedOutput(); err != nil { + return fmt.Errorf("failed to run %q: %v: output:\n%s", cmd, err, out) } // Build the c-deps needed. cmd = exec.Command(bazel(), "run", "//pkg/cmd/generate-cgo:generate-cgo", "--run_under", fmt.Sprintf("cd %s && ", bcfg.SrcDir)) cmd.Dir = bcfg.SrcDir cmd.Env = env.Collapse() - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - if err := cmd.Run(); err != nil { - return err + if out, err := cmd.CombinedOutput(); err != nil { + return fmt.Errorf("failed to run %q: %v: output:\n%s", cmd, err, out) } // Get the Go version. Then, finall build the cockroach binary with `go build`.