Commit bcc3447b authored by Daniel Martí's avatar Daniel Martí

cmd/go: use os.UserCacheDir for the default GOCACHE

This piece of code predates the addition of os.UserCacheDir, and it
looks like os.UserCacheDir was based on this piece of code.

The two behaved exactly the same, minus cmd/go's addition of AppData for
Windows XP in CL 87675. However, Go 1.11 dropped support for Windows XP,
so we can safely ignore that change now.

The only tweaks necessary are to return "off" if an error is
encountered, and to disable warnings if we're using "/.cache".

Change-Id: Ia00577d4575ce4870f7fb103eafaa4d2b630743e
Reviewed-on: https://go-review.googlesource.com/c/141538
Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
Run-TryBot: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: 's avatarBryan C. Mills <bcmills@google.com>
parent ab51b1d6
...@@ -9,7 +9,6 @@ import ( ...@@ -9,7 +9,6 @@ import (
"io/ioutil" "io/ioutil"
"os" "os"
"path/filepath" "path/filepath"
"runtime"
"sync" "sync"
) )
...@@ -78,52 +77,19 @@ func defaultDir() (string, bool) { ...@@ -78,52 +77,19 @@ func defaultDir() (string, bool) {
} }
// Compute default location. // Compute default location.
// TODO(rsc): This code belongs somewhere else, dir, err := os.UserCacheDir()
// like maybe ioutil.CacheDir or os.CacheDir. if err != nil {
showWarnings := true return "off", true
switch runtime.GOOS { }
case "windows": dir = filepath.Join(dir, "go-build")
dir = os.Getenv("LocalAppData")
if dir == "" {
// Fall back to %AppData%, the old name of
// %LocalAppData% on Windows XP.
dir = os.Getenv("AppData")
}
if dir == "" {
return "off", true
}
case "darwin":
dir = os.Getenv("HOME")
if dir == "" {
return "off", true
}
dir += "/Library/Caches"
case "plan9":
dir = os.Getenv("home")
if dir == "" {
return "off", true
}
// Plan 9 has no established per-user cache directory,
// but $home/lib/xyz is the usual equivalent of $HOME/.xyz on Unix.
dir += "/lib/cache"
default: // Unix // Do this after filepath.Join, so that the path has been cleaned.
// https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html showWarnings := true
dir = os.Getenv("XDG_CACHE_HOME") switch dir {
if dir == "" { case "/.cache/go-build":
dir = os.Getenv("HOME") // probably docker run with -u flag
if dir == "" { // https://golang.org/issue/26280
return "off", true showWarnings = false
}
if dir == "/" {
// probably docker run with -u flag
// https://golang.org/issue/26280
showWarnings = false
}
dir += "/.cache"
}
} }
return filepath.Join(dir, "go-build"), showWarnings return dir, showWarnings
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment