]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/api: ignore GOARCH when building cmd/api.
authorBrad Fitzpatrick <bradfitz@golang.org>
Sat, 24 Aug 2013 14:51:42 +0000 (09:51 -0500)
committerBrad Fitzpatrick <bradfitz@golang.org>
Sat, 24 Aug 2013 14:51:42 +0000 (09:51 -0500)
This was breaking people setting GOARCH=386 before running
all.bash on amd64 machines.

cmd/go puts different architecture binaries where "go tool"
can't find them.

R=golang-dev, r, khr
CC=golang-dev
https://golang.org/cl/13139044

src/cmd/api/run.go

index d824651b814f642fb17431871bb2f06112574868..a13d9a5496e7e3c52674120830755b5b85e26eba 100644 (file)
@@ -21,6 +21,7 @@ import (
        "os/exec"
        "path/filepath"
        "strconv"
+       "strings"
 )
 
 // goToolsVersion is the hg revision of the go.tools subrepo we need
@@ -45,7 +46,7 @@ func main() {
        gopath := prepGoPath()
 
        cmd := exec.Command("go", "install", "--tags=api_tool", "cmd/api")
-       cmd.Env = append([]string{"GOPATH=" + gopath}, os.Environ()...)
+       cmd.Env = append([]string{"GOPATH=" + gopath}, filterOut(os.Environ(), "GOARCH")...)
        out, err := cmd.CombinedOutput()
        if err != nil {
                log.Fatalf("Error installing cmd/api: %v\n%s", err, out)
@@ -61,6 +62,22 @@ func main() {
        fmt.Print(string(out))
 }
 
+// filterOut returns a copy of the src environment without environment
+// variables from remove.
+// TODO: delete when issue 6201 is fixed.
+func filterOut(src []string, remove ...string) (out []string) {
+S:
+       for _, s := range src {
+               for _, r := range remove {
+                       if strings.HasPrefix(s, r) && strings.HasPrefix(s, r+"=") {
+                               continue S
+                       }
+               }
+               out = append(out, s)
+       }
+       return
+}
+
 // file expands s to $GOROOT/api/s.txt.
 // If there are more than 1, they're comma-separated.
 func file(s ...string) string {