]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: only print GOCACHE value in env -changed if it's not the default
authorqiulaidongfeng <2645477756@qq.com>
Wed, 23 Oct 2024 14:45:58 +0000 (22:45 +0800)
committerGopher Robot <gobot@golang.org>
Wed, 9 Apr 2025 20:56:45 +0000 (13:56 -0700)
When other environment variables are set to default values,
we will not print it in go env -changed,
GOCACHE should do the same.

For #69994

Change-Id: I16661803cf1f56dd132b4db1c2d5cb4823fc0e58
Reviewed-on: https://go-review.googlesource.com/c/go/+/621997
Reviewed-by: Sean Liao <sean@liao.dev>
Auto-Submit: Sean Liao <sean@liao.dev>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Michael Matloob <matloob@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
src/cmd/go/internal/cache/default.go
src/cmd/go/testdata/script/env_changed.txt

index eec2be9fa0a5f611c7b9154f0c3160beeec5017c..b2dd69edc539a2552670d771dff068e6a5592a36 100644 (file)
@@ -78,26 +78,27 @@ func DefaultDir() (string, bool, error) {
        // otherwise distinguish between an explicit "off" and a UserCacheDir error.
 
        defaultDirOnce.Do(func() {
-               defaultDir = cfg.Getenv("GOCACHE")
-               if defaultDir != "" {
-                       defaultDirChanged = true
-                       if filepath.IsAbs(defaultDir) || defaultDir == "off" {
-                               return
-                       }
-                       defaultDir = "off"
-                       defaultDirErr = fmt.Errorf("GOCACHE is not an absolute path")
-                       return
-               }
-
                // Compute default location.
                dir, err := os.UserCacheDir()
                if err != nil {
                        defaultDir = "off"
-                       defaultDirChanged = true
                        defaultDirErr = fmt.Errorf("GOCACHE is not defined and %v", err)
+               } else {
+                       defaultDir = filepath.Join(dir, "go-build")
+               }
+
+               newDir := cfg.Getenv("GOCACHE")
+               if newDir != "" {
+                       defaultDirErr = nil
+                       defaultDirChanged = newDir != defaultDir
+                       defaultDir = newDir
+                       if filepath.IsAbs(defaultDir) || defaultDir == "off" {
+                               return
+                       }
+                       defaultDir = "off"
+                       defaultDirErr = fmt.Errorf("GOCACHE is not an absolute path")
                        return
                }
-               defaultDir = filepath.Join(dir, "go-build")
        })
 
        return defaultDir, defaultDirChanged, defaultDirErr
index 10db76540706158dc150a97c916c6d16b73c462a..5ba13b4dbfa0851a4360abe493cfc9a72ce6400f 100644 (file)
@@ -67,6 +67,11 @@ env GOROOT=./b
 go env -changed
 ! stdout 'GOTOOLCHAIN=''?local''?'
 
+[GOOS:windows] env LocalAppData=C:\
+[GOOS:windows] env GOCACHE=C:\go-build
+[GOOS:windows] go env -changed
+[GOOS:windows] ! stdout 'GOCACHE'
+
 --  a/go.env --
 GOPROXY=s
 GOAMD64=v1