From 437634cab1f5e3ae40a49b84edefbc70d5192d04 Mon Sep 17 00:00:00 2001 From: Tycho Andersen Date: Tue, 7 Mar 2017 10:06:16 -0800 Subject: [PATCH] better debugging output in some error cases from: 2017/03/07 09:59:30 Failed to extract kernel image and tarball to 2017/03/07 10:06:04 Failed to extract kernel image and tarball: Unable to find image 'mobylinux/kernel:7fa748810d7866797fd807a5682d5cb3c9c98111' locally Signed-off-by: Tycho Andersen --- main.go | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/main.go b/main.go index 44b1075f3..33f92e677 100644 --- a/main.go +++ b/main.go @@ -4,6 +4,7 @@ import ( "archive/tar" "bytes" "errors" + "fmt" "io" "io/ioutil" "log" @@ -26,11 +27,38 @@ func dockerRun(args ...string) ([]byte, error) { } args = append([]string{"run", "--rm"}, args...) cmd := exec.Command(docker, args...) - out, err := cmd.Output() + + stderrPipe, err := cmd.StderrPipe() if err != nil { return []byte{}, err } - return out, nil + + stdoutPipe, err := cmd.StdoutPipe() + if err != nil { + return []byte{}, err + } + + err = cmd.Start() + if err != nil { + return []byte{}, err + } + + stdout, err := ioutil.ReadAll(stdoutPipe) + if err != nil { + return []byte{}, err + } + + stderr, err := ioutil.ReadAll(stderrPipe) + if err != nil { + return []byte{}, err + } + + err = cmd.Wait() + if err != nil { + return []byte{}, fmt.Errorf("%s: %s", err, stderr) + } + + return stdout, nil } func dockerRunInput(input io.Reader, args ...string) ([]byte, error) { @@ -122,7 +150,7 @@ func build(configfile string) { ) out, err := dockerRun(m.Kernel, "tar", "cf", "-", bzimageName, ktarName) if err != nil { - log.Fatalf("Failed to extract kernel image and tarball") + log.Fatalf("Failed to extract kernel image and tarball: %v", err) } buf := bytes.NewBuffer(out) bzimage, ktar, err := untarKernel(buf, bzimageName, ktarName)