]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/dist: set GOPATH to internal directory during build
authorJay Conrod <jayconrod@google.com>
Thu, 21 Mar 2019 19:18:04 +0000 (15:18 -0400)
committerJay Conrod <jayconrod@google.com>
Mon, 25 Mar 2019 17:58:46 +0000 (17:58 +0000)
Since GO111MODULE=on by default, the Go command needs a location for
the module cache, even though it doesn't need to be written when
building std and cmd. If GOROOT is checked out to $HOME/go, which is
also the default location for GOPATH, this causes unnecessary problems
late in the build.

With this change, dist sets GOPATH to $GOROOT/pkg/obj/go-path. This is
next to the temporary GOCACHE, $GOROOT/pkg/obj/go-build.

Fixes #30960

Change-Id: I60771ee7f7c67ced1d2dc7c66b5885703fad1b63
Reviewed-on: https://go-review.googlesource.com/c/go/+/168697
Run-TryBot: Jay Conrod <jayconrod@google.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/cmd/dist/build.go

index b3e9ad33e919ab08bc302b2d18f5738a30b2a64f..b724d16456a106b74c983e29973ed60fa7ea7e8e 100644 (file)
@@ -235,6 +235,13 @@ func xinit() {
        // make.bash really does start from a clean slate.
        os.Setenv("GOCACHE", pathf("%s/pkg/obj/go-build", goroot))
 
+       // Set GOPATH to an internal directory. We shouldn't actually
+       // need to store files here, since the toolchain won't
+       // depend on modules outside of vendor directories, but if
+       // GOPATH points somewhere else (e.g., to GOROOT), the
+       // go tool may complain.
+       os.Setenv("GOPATH", pathf("%s/pkg/obj/gopath", goroot))
+
        // Make the environment more predictable.
        os.Setenv("LANG", "C")
        os.Setenv("LANGUAGE", "en_US.UTF8")