// 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
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