]> Cypherpunks.ru repositories - gostls13.git/commitdiff
cmd/go: fail with nice error message on bad GOOS/GOARCH pair
authorBrad Fitzpatrick <bradfitz@golang.org>
Fri, 6 May 2016 00:52:37 +0000 (17:52 -0700)
committerBrad Fitzpatrick <bradfitz@golang.org>
Fri, 6 May 2016 01:18:07 +0000 (01:18 +0000)
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>
.gitignore
src/cmd/dist/build.go
src/cmd/dist/buildgo.go
src/cmd/go/build.go

index 6851e147d338773bb39bf0c3b1cada656bb2450f..7173067a759c6f002a8e25510511d2e842c4dddb 100644 (file)
@@ -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
index 04a13b2365ce6ab89e684754300af9821dc65fc6..aa12aa9dc3da8c0e048b1cd582ba99118d93b930 100644 (file)
@@ -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},
 
index 2b68fc222460c89333b4a03d79c4c0ca7bd498bc..c367c70b043089c72f2a52cadb6a8933b7bc19ed 100644 (file)
@@ -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{}
index 0102b5e08a227273934c35d705b9fc3e29976e86..09e2122b0cc1db99922ad30cf349e0d272a378db 100644 (file)
@@ -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"
        }