mirror of https://github.com/golang/go.git
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: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com>
This commit is contained in:
parent
ab51b1d63b
commit
bcc3447be5
|
|
@ -9,7 +9,6 @@ import (
|
|||
"io/ioutil"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"sync"
|
||||
)
|
||||
|
||||
|
|
@ -78,52 +77,19 @@ func defaultDir() (string, bool) {
|
|||
}
|
||||
|
||||
// Compute default location.
|
||||
// TODO(rsc): This code belongs somewhere else,
|
||||
// like maybe ioutil.CacheDir or os.CacheDir.
|
||||
showWarnings := true
|
||||
switch runtime.GOOS {
|
||||
case "windows":
|
||||
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
|
||||
// https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
||||
dir = os.Getenv("XDG_CACHE_HOME")
|
||||
if dir == "" {
|
||||
dir = os.Getenv("HOME")
|
||||
if dir == "" {
|
||||
return "off", true
|
||||
}
|
||||
if dir == "/" {
|
||||
// probably docker run with -u flag
|
||||
// https://golang.org/issue/26280
|
||||
showWarnings = false
|
||||
}
|
||||
dir += "/.cache"
|
||||
}
|
||||
dir, err := os.UserCacheDir()
|
||||
if err != nil {
|
||||
return "off", true
|
||||
}
|
||||
return filepath.Join(dir, "go-build"), showWarnings
|
||||
dir = filepath.Join(dir, "go-build")
|
||||
|
||||
// Do this after filepath.Join, so that the path has been cleaned.
|
||||
showWarnings := true
|
||||
switch dir {
|
||||
case "/.cache/go-build":
|
||||
// probably docker run with -u flag
|
||||
// https://golang.org/issue/26280
|
||||
showWarnings = false
|
||||
}
|
||||
return dir, showWarnings
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue