From bcc3447be56271a28484a8c8c9d71326355d13a5 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Daniel=20Mart=C3=AD?= Date: Thu, 11 Oct 2018 15:13:22 +0100 Subject: [PATCH] cmd/go: use os.UserCacheDir for the default GOCACHE MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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í Run-TryBot: Bryan C. Mills TryBot-Result: Gobot Gobot Reviewed-by: Brad Fitzpatrick Reviewed-by: Bryan C. Mills --- src/cmd/go/internal/cache/default.go | 60 ++++++---------------------- 1 file changed, 13 insertions(+), 47 deletions(-) diff --git a/src/cmd/go/internal/cache/default.go b/src/cmd/go/internal/cache/default.go index 02fc1e896f..4a69bf2a44 100644 --- a/src/cmd/go/internal/cache/default.go +++ b/src/cmd/go/internal/cache/default.go @@ -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" + dir, err := os.UserCacheDir() + if err != nil { + return "off", true + } + dir = filepath.Join(dir, "go-build") - 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" - } + // 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 filepath.Join(dir, "go-build"), showWarnings + return dir, showWarnings } -- 2.50.0