mirror of
https://github.com/golang/go
synced 2024-11-21 23:14:40 -07:00
gobuilder: number of fixes
1) runLog to return err==nil if program runs, but returns exitcode!=0; 2) runLog to return err!=nil when fails to create log file; 3) print failed program name, not just "all.bash". R=golang-dev, adg CC=golang-dev https://golang.org/cl/4532117
This commit is contained in:
parent
60a4b5e4db
commit
548e3d0342
@ -27,8 +27,11 @@ func run(envv []string, dir string, argv ...string) os.Error {
|
||||
}
|
||||
|
||||
// runLog runs a process and returns the combined stdout/stderr,
|
||||
// as well as writing it to logfile (if specified).
|
||||
func runLog(envv []string, logfile, dir string, argv ...string) (output string, exitStatus int, err os.Error) {
|
||||
// as well as writing it to logfile (if specified). It returns
|
||||
// process combined stdout and stderr output, exit status and error.
|
||||
// The error returned is nil, if process is started successfully,
|
||||
// even if exit status is not 0.
|
||||
func runLog(envv []string, logfile, dir string, argv ...string) (string, int, os.Error) {
|
||||
if *verbose {
|
||||
log.Println("runLog", argv)
|
||||
}
|
||||
@ -39,7 +42,7 @@ func runLog(envv []string, logfile, dir string, argv ...string) (output string,
|
||||
if logfile != "" {
|
||||
f, err := os.OpenFile(logfile, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666)
|
||||
if err != nil {
|
||||
return
|
||||
return "", 0, err
|
||||
}
|
||||
defer f.Close()
|
||||
w = io.MultiWriter(f, b)
|
||||
@ -51,15 +54,13 @@ func runLog(envv []string, logfile, dir string, argv ...string) (output string,
|
||||
cmd.Stdout = w
|
||||
cmd.Stderr = w
|
||||
|
||||
err = cmd.Run()
|
||||
output = b.String()
|
||||
err := cmd.Run()
|
||||
if err != nil {
|
||||
if ws, ok := err.(*os.Waitmsg); ok {
|
||||
exitStatus = ws.ExitStatus()
|
||||
return b.String(), ws.ExitStatus(), nil
|
||||
}
|
||||
return
|
||||
}
|
||||
return
|
||||
return b.String(), 0, nil
|
||||
}
|
||||
|
||||
// useBash prefixes a list of args with 'bash' if the first argument
|
||||
|
@ -294,7 +294,7 @@ func (b *Builder) buildHash(hash string) (err os.Error) {
|
||||
logfile := path.Join(workpath, "build.log")
|
||||
buildLog, status, err := runLog(b.envv(), logfile, srcDir, *buildCmd)
|
||||
if err != nil {
|
||||
return fmt.Errorf("all.bash: %s", err)
|
||||
return fmt.Errorf("%s: %s", *buildCmd, err)
|
||||
}
|
||||
|
||||
// if we're in external mode, build all packages and return
|
||||
|
Loading…
Reference in New Issue
Block a user