From: Alexander Menzhinsky Date: Mon, 10 Apr 2017 18:12:51 +0000 (-0500) Subject: cmd/go: add better error message when gccgo is missing X-Git-Tag: go1.9beta1~739 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=20edbda5ea38a690d3260e5396c25135afc80069;p=gostls13.git cmd/go: add better error message when gccgo is missing Fixes #19628 Change-Id: I19baf694c66aaca8e0d95297c97aacb40db24c47 Reviewed-on: https://go-review.googlesource.com/40250 Reviewed-by: Ian Lance Taylor Run-TryBot: Ian Lance Taylor --- diff --git a/src/cmd/go/internal/work/build.go b/src/cmd/go/internal/work/build.go index 870e4d7762..462f495b5f 100644 --- a/src/cmd/go/internal/work/build.go +++ b/src/cmd/go/internal/work/build.go @@ -2499,23 +2499,34 @@ func (gcToolchain) cc(b *Builder, p *load.Package, objdir, ofile, cfile string) type gccgoToolchain struct{} var GccgoName, GccgoBin string +var gccgoErr error func init() { GccgoName = os.Getenv("GCCGO") if GccgoName == "" { GccgoName = "gccgo" } - GccgoBin, _ = exec.LookPath(GccgoName) + GccgoBin, gccgoErr = exec.LookPath(GccgoName) } func (gccgoToolchain) compiler() string { + checkGccgoBin() return GccgoBin } func (gccgoToolchain) linker() string { + checkGccgoBin() return GccgoBin } +func checkGccgoBin() { + if gccgoErr == nil { + return + } + fmt.Fprintf(os.Stderr, "cmd/go: gccgo: %s\n", gccgoErr) + os.Exit(2) +} + func (tools gccgoToolchain) gc(b *Builder, p *load.Package, archive, obj string, asmhdr bool, importArgs []string, gofiles []string) (ofile string, output []byte, err error) { out := "_go_.o" ofile = obj + out