@@ -305,22 +305,53 @@ func (p *Platform) WriteSyso(sysof string, targz []byte) error {
305
305
306
306
func (p * Platform ) Gomote (ctx context.Context , args ... string ) ([]byte , error ) {
307
307
log .Printf ("%v: gomote %v" , p .Name (), args )
308
- output , err := exec .CommandContext (ctx , "gomote" , args ... ).CombinedOutput ()
309
308
310
- if err != nil {
309
+ cmd := exec .CommandContext (ctx , "gomote" , args ... )
310
+ outBuf := new (bytes.Buffer )
311
+
312
+ // Combine stderr and stdout for everything except gettar: gettar's output is
313
+ // huge, so we only want to log stderr for it.
314
+ errBuf := outBuf
315
+ if args [0 ] == "gettar" {
316
+ errBuf = new (bytes.Buffer )
317
+ }
318
+
319
+ cmd .Stdout = outBuf
320
+ cmd .Stderr = errBuf
321
+ run := cmd .Run
322
+ if len (platformEnabled ) == 1 {
323
+ // If building only one platform, stream gomote output to os.Stderr.
324
+ r , w := io .Pipe ()
325
+ errTee := io .TeeReader (r , cmd .Stderr )
326
+ if cmd .Stdout == cmd .Stderr {
327
+ cmd .Stdout = w
328
+ }
329
+ cmd .Stderr = w
330
+
331
+ run = func () (err error ) {
332
+ go func () {
333
+ err = cmd .Run ()
334
+ w .Close ()
335
+ }()
336
+ io .Copy (os .Stderr , errTee )
337
+ return
338
+ }
339
+ }
340
+
341
+ if err := run (); err != nil {
311
342
select {
312
343
case <- ctx .Done ():
313
344
return nil , ctx .Err ()
314
345
default :
315
346
}
316
- log .Printf ("%v: gomote %v failed:\n %s" , p .Name (), args , output )
347
+ log .Printf ("%v: gomote %v failed:\n %s" , p .Name (), args , errBuf )
317
348
return nil , err
318
349
}
319
350
320
- logData := output
321
- if args [0 ] == "gettar" {
322
- logData = []byte ("<output elided>" )
351
+ if errBuf .Len () == 0 {
352
+ log .Printf ("%v: gomote %v succeeded: <no output>" , p .Name (), args )
353
+ } else {
354
+ log .Printf ("%v: gomote %v succeeded:\n %s" , p .Name (), args , errBuf )
323
355
}
324
- log .Printf ("%v: gomote %v succeeded:\n %s" , p .Name (), args , logData )
325
- return output , nil
356
+ return outBuf .Bytes (), nil
326
357
}
0 commit comments