diff options
author | Brad Fitzpatrick <bradfitz@golang.org> | 2016-05-05 17:52:37 -0700 |
---|---|---|
committer | Brad Fitzpatrick <bradfitz@golang.org> | 2016-05-06 01:18:07 +0000 |
commit | b90cb3f4716d3fede57bf8e798d27406fba5c294 (patch) | |
tree | 245a6a4be581fc25d756215c870a04a8469e618c | |
parent | 30bfafc319288e8cfe54111664e3f2f259998a0a (diff) | |
download | go-git-b90cb3f4716d3fede57bf8e798d27406fba5c294.tar.gz |
cmd/go: fail with nice error message on bad GOOS/GOARCH pair
Fixes #12272
Change-Id: I2115ec62ed4061084c482eb385a583a1c1909888
Reviewed-on: https://go-review.googlesource.com/22838
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Minux Ma <minux@golang.org>
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | src/cmd/dist/build.go | 2 | ||||
-rw-r--r-- | src/cmd/dist/buildgo.go | 15 | ||||
-rw-r--r-- | src/cmd/go/build.go | 6 |
4 files changed, 20 insertions, 4 deletions
diff --git a/.gitignore b/.gitignore index 6851e147d3..7173067a75 100644 --- a/.gitignore +++ b/.gitignore @@ -26,6 +26,7 @@ misc/cgo/stdio/run.out misc/cgo/testso/main src/cmd/cgo/zdefaultcc.go src/cmd/go/zdefaultcc.go +src/cmd/go/zosarch.go src/cmd/internal/obj/zbootstrap.go src/go/build/zcgo.go src/go/doc/headscan diff --git a/src/cmd/dist/build.go b/src/cmd/dist/build.go index 04a13b2365..aa12aa9dc3 100644 --- a/src/cmd/dist/build.go +++ b/src/cmd/dist/build.go @@ -464,6 +464,7 @@ var deptab = []struct { }{ {"cmd/go", []string{ "zdefaultcc.go", + "zosarch.go", }}, {"runtime/internal/sys", []string{ "zversion.go", @@ -485,6 +486,7 @@ var gentab = []struct { gen func(string, string) }{ {"zdefaultcc.go", mkzdefaultcc}, + {"zosarch.go", mkzosarch}, {"zversion.go", mkzversion}, {"zcgo.go", mkzcgo}, diff --git a/src/cmd/dist/buildgo.go b/src/cmd/dist/buildgo.go index 2b68fc2224..c367c70b04 100644 --- a/src/cmd/dist/buildgo.go +++ b/src/cmd/dist/buildgo.go @@ -23,9 +23,7 @@ import ( // It is invoked to write cmd/go/zdefaultcc.go // but we also write cmd/cgo/zdefaultcc.go func mkzdefaultcc(dir, file string) { - var out string - - out = fmt.Sprintf( + out := fmt.Sprintf( "// auto generated by go tool dist\n"+ "\n"+ "package main\n"+ @@ -42,7 +40,16 @@ func mkzdefaultcc(dir, file string) { writefile(out, file, writeSkipSame) } -// mkzcgo writes zcgo.go for go/build package: +// mkzcgo writes zosarch.go for cmd/go. +func mkzosarch(dir, file string) { + var buf bytes.Buffer + buf.WriteString("// auto generated by go tool dist\n\n") + buf.WriteString("package main\n\n") + fmt.Fprintf(&buf, "var osArchSupportsCgo = %#v", cgoEnabled) + writefile(buf.String(), file, writeSkipSame) +} + +// mkzcgo writes zcgo.go for the go/build package: // // package build // var cgoEnabled = map[string]bool{} diff --git a/src/cmd/go/build.go b/src/cmd/go/build.go index 0102b5e08a..09e2122b0c 100644 --- a/src/cmd/go/build.go +++ b/src/cmd/go/build.go @@ -669,6 +669,12 @@ var ( func init() { goarch = buildContext.GOARCH goos = buildContext.GOOS + + if _, ok := osArchSupportsCgo[goos+"/"+goarch]; !ok { + fmt.Fprintf(os.Stderr, "cmd/go: unsupported GOOS/GOARCH pair %s/%s\n", goos, goarch) + os.Exit(2) + } + if goos == "windows" { exeSuffix = ".exe" } |