From 6b89194c28e6c4a26b8d917a8c3e158a7eb0c169 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Wed, 11 Jul 2018 14:31:17 -0400 Subject: [PATCH] cmd/dist: enable build cache always GOCACHE=off is not a reliable signal of user intent. At startup the go command fills in an empty GOCACHE with the effective setting. If $HOME is set, then GOCACHE ends up somewhere in $HOME/.cache. But if $HOME is unset, then the go command sets GOCACHE=off explicitly. That environment is used for invoking "go tool dist". So if the machine has no $HOME, then go tool dist ends up with the cache disabled even though the user was not trying to disable the cache. This affects the linux-ppc64le builder, which appears to be unique among builders in not having $HOME set. So that builder is running with no build cache. Now that there is a cmd/go test that needs the cache to be on, the linux-ppc64le builder is failing. In the next release we intend to force the use of the build cache always. This CL is not doing that: it's only forcing the use of the build cache during all.bash, which won't affect the majority of our users (they run pre-build binary releases). If this is a problem we can roll it back and fix the linux-ppc64le builders some other way. While we're here, print a few more useful variables in 'go tool dist env' and sort the output. Change-Id: I66548aa8990d0794cbc0f2069b739ab1834898dd Reviewed-on: https://go-review.googlesource.com/123297 Run-TryBot: Russ Cox TryBot-Result: Gobot Gobot Reviewed-by: Brad Fitzpatrick Reviewed-by: Ian Lance Taylor --- src/cmd/dist/build.go | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/cmd/dist/build.go b/src/cmd/dist/build.go index 2fdc4d3143..eed9866ce4 100644 --- a/src/cmd/dist/build.go +++ b/src/cmd/dist/build.go @@ -219,10 +219,7 @@ func xinit() { // Use a build cache separate from the default user one. // Also one that will be wiped out during startup, so that // make.bash really does start from a clean slate. - // But if the user has specified no caching, don't cache. - if os.Getenv("GOCACHE") != "off" { - os.Setenv("GOCACHE", pathf("%s/pkg/obj/go-build", goroot)) - } + os.Setenv("GOCACHE", pathf("%s/pkg/obj/go-build", goroot)) // Make the environment more predictable. os.Setenv("LANG", "C") @@ -1063,12 +1060,16 @@ func cmdenv() { format = "set %s=%s\r\n" } - xprintf(format, "GOROOT", goroot) - xprintf(format, "GOBIN", gobin) xprintf(format, "GOARCH", goarch) - xprintf(format, "GOOS", goos) + xprintf(format, "GOBIN", gobin) + xprintf(format, "GOCACHE", os.Getenv("GOCACHE")) + xprintf(format, "GODEBUG", os.Getenv("GODEBUG")) xprintf(format, "GOHOSTARCH", gohostarch) xprintf(format, "GOHOSTOS", gohostos) + xprintf(format, "GOOS", goos) + xprintf(format, "GOPROXY", os.Getenv("GOPROXY")) + xprintf(format, "GOROOT", goroot) + xprintf(format, "GOTMPDIR", os.Getenv("GOTMPDIR")) xprintf(format, "GOTOOLDIR", tooldir) if goarch == "arm" { xprintf(format, "GOARM", goarm) -- 2.50.0