Commit c604792d authored by Russ Cox's avatar Russ Cox

cmd/go: add "go env GOCACHE"

This lets users see the effective GOCACHE setting.

Change-Id: I0b6dd2945d54611be89ed68fe2fd99110b9a25f6
Reviewed-on: https://go-review.googlesource.com/75293Reviewed-by: default avatarDavid Crawshaw <crawshaw@golang.org>
parent b31162d8
...@@ -137,15 +137,16 @@ var builddeps = map[string][]string{ ...@@ -137,15 +137,16 @@ var builddeps = map[string][]string{
}, },
"cmd/go/internal/envcmd": { "cmd/go/internal/envcmd": {
"cmd/go/internal/base", // cmd/go/internal/envcmd "cmd/go/internal/base", // cmd/go/internal/envcmd
"cmd/go/internal/cfg", // cmd/go/internal/envcmd "cmd/go/internal/cache", // cmd/go/internal/envcmd
"cmd/go/internal/load", // cmd/go/internal/envcmd "cmd/go/internal/cfg", // cmd/go/internal/envcmd
"cmd/go/internal/work", // cmd/go/internal/envcmd "cmd/go/internal/load", // cmd/go/internal/envcmd
"encoding/json", // cmd/go/internal/envcmd "cmd/go/internal/work", // cmd/go/internal/envcmd
"fmt", // cmd/go/internal/envcmd "encoding/json", // cmd/go/internal/envcmd
"os", // cmd/go/internal/envcmd "fmt", // cmd/go/internal/envcmd
"runtime", // cmd/go/internal/envcmd "os", // cmd/go/internal/envcmd
"strings", // cmd/go/internal/envcmd "runtime", // cmd/go/internal/envcmd
"strings", // cmd/go/internal/envcmd
}, },
"cmd/go/internal/fix": { "cmd/go/internal/fix": {
......
...@@ -26,52 +26,61 @@ var ( ...@@ -26,52 +26,61 @@ var (
// initDefaultCache does the work of finding the default cache // initDefaultCache does the work of finding the default cache
// the first time Default is called. // the first time Default is called.
func initDefaultCache() { func initDefaultCache() {
dir := os.Getenv("GOCACHE") dir := DefaultDir()
if dir == "off" { if dir == "off" {
return return
} }
if dir == "" { if err := os.MkdirAll(dir, 0777); err != nil {
// Compute default location. base.Fatalf("initializing cache in $GOCACHE: %s", err)
// TODO(rsc): This code belongs somewhere else, }
// like maybe ioutil.CacheDir or os.CacheDir. c, err := Open(dir)
switch runtime.GOOS { if err != nil {
case "windows": base.Fatalf("initializing cache in $GOCACHE: %s", err)
dir = os.Getenv("LocalAppData") }
defaultCache = c
}
case "darwin": // DefaultDir returns the effective GOCACHE setting.
dir = os.Getenv("HOME") // It returns "off" if the cache is disabled.
if dir == "" { func DefaultDir() string {
return dir := os.Getenv("GOCACHE")
} if dir != "" {
dir += "/Library/Caches" return dir
}
case "plan9": // Compute default location.
dir = os.Getenv("home") // TODO(rsc): This code belongs somewhere else,
if dir == "" { // like maybe ioutil.CacheDir or os.CacheDir.
return switch runtime.GOOS {
} case "windows":
dir += "/lib/cache" dir = os.Getenv("LocalAppData")
default: // Unix case "darwin":
// https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html dir = os.Getenv("HOME")
dir = os.Getenv("XDG_CACHE_HOME") if dir == "" {
if dir == "" { return "off"
dir = os.Getenv("HOME")
if dir == "" {
return
}
dir += "/.cache"
}
} }
dir = filepath.Join(dir, "go-build") dir += "/Library/Caches"
if err := os.MkdirAll(dir, 0777); err != nil {
return case "plan9":
dir = os.Getenv("home")
if dir == "" {
return "off"
} }
} // 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"
c, err := Open(dir) default: // Unix
if err != nil { // https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
base.Fatalf("initializing cache in $GOCACHE: %s", err) dir = os.Getenv("XDG_CACHE_HOME")
if dir == "" {
dir = os.Getenv("HOME")
if dir == "" {
return "off"
}
dir += "/.cache"
}
} }
defaultCache = c return filepath.Join(dir, "go-build")
} }
...@@ -13,6 +13,7 @@ import ( ...@@ -13,6 +13,7 @@ import (
"strings" "strings"
"cmd/go/internal/base" "cmd/go/internal/base"
"cmd/go/internal/cache"
"cmd/go/internal/cfg" "cmd/go/internal/cfg"
"cmd/go/internal/load" "cmd/go/internal/load"
"cmd/go/internal/work" "cmd/go/internal/work"
...@@ -55,6 +56,7 @@ func MkEnv() []cfg.EnvVar { ...@@ -55,6 +56,7 @@ func MkEnv() []cfg.EnvVar {
{Name: "GORACE", Value: os.Getenv("GORACE")}, {Name: "GORACE", Value: os.Getenv("GORACE")},
{Name: "GOROOT", Value: cfg.GOROOT}, {Name: "GOROOT", Value: cfg.GOROOT},
{Name: "GOTOOLDIR", Value: base.ToolDir}, {Name: "GOTOOLDIR", Value: base.ToolDir},
{Name: "GOCACHE", Value: cache.DefaultDir()},
// disable escape codes in clang errors // disable escape codes in clang errors
{Name: "TERM", Value: "dumb"}, {Name: "TERM", Value: "dumb"},
......
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