mirror of
https://github.com/golang/go
synced 2024-11-23 20:30:04 -07:00
cmd/go/internal/modload: don't initialize build cache
modload.Init initialized the build cache with the intent of providing a better error message in Go 1.12, when the build cache became mandatory (in module mode, packages aren't installed outside the build cache). Unfortunately, this didn't provide a more descriptive error (the cache calls base.Fatalf with its own message), and it caused errors for commands that don't use the cache (like 'go mod edit'). This CL removes the cache initialization from modload.Init. The builder will initialize it when it's needed. For #39882 Change-Id: Ibc01ae4e59358dcd08a07ffc97bf556514d0366f Reviewed-on: https://go-review.googlesource.com/c/go/+/240548 Run-TryBot: Jay Conrod <jayconrod@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com> Reviewed-by: Michael Matloob <matloob@golang.org>
This commit is contained in:
parent
8766f96dd7
commit
02a7b4b4a7
@ -20,7 +20,6 @@ import (
|
||||
"strings"
|
||||
|
||||
"cmd/go/internal/base"
|
||||
"cmd/go/internal/cache"
|
||||
"cmd/go/internal/cfg"
|
||||
"cmd/go/internal/load"
|
||||
"cmd/go/internal/lockedfile"
|
||||
@ -162,12 +161,6 @@ func Init() {
|
||||
|
||||
// We're in module mode. Install the hooks to make it work.
|
||||
|
||||
if c := cache.Default(); c == nil {
|
||||
// With modules, there are no install locations for packages
|
||||
// other than the build cache.
|
||||
base.Fatalf("go: cannot use modules with build cache disabled")
|
||||
}
|
||||
|
||||
list := filepath.SplitList(cfg.BuildContext.GOPATH)
|
||||
if len(list) == 0 || list[0] == "" {
|
||||
base.Fatalf("missing $GOPATH")
|
||||
|
46
src/cmd/go/testdata/script/build_cache_disabled.txt
vendored
Normal file
46
src/cmd/go/testdata/script/build_cache_disabled.txt
vendored
Normal file
@ -0,0 +1,46 @@
|
||||
# The build cache is required to build anything. It also may be needed to
|
||||
# initialize the build system, which is needed for commands like 'go env'.
|
||||
# However, there are lots of commands the cache is not needed for, and we
|
||||
# shouldn't require it when it won't be used.
|
||||
#
|
||||
# TODO(golang.org/issue/39882): commands below should work, too.
|
||||
# * go clean -modcache
|
||||
# * go env
|
||||
# * go fix
|
||||
# * go fmt
|
||||
# * go generate
|
||||
# * go get -d
|
||||
# * go list (without -export or -compiled)
|
||||
|
||||
env GOCACHE=off
|
||||
|
||||
# Commands that don't completely load packages should work.
|
||||
go doc fmt
|
||||
stdout Printf
|
||||
|
||||
go fmt .
|
||||
|
||||
! go tool compile -h
|
||||
stderr usage:
|
||||
|
||||
go version
|
||||
stdout '^go version'
|
||||
|
||||
|
||||
# Module commands that don't load packages should work.
|
||||
go mod init m
|
||||
exists go.mod
|
||||
|
||||
go mod edit -require rsc.io/quote@v1.5.2
|
||||
|
||||
go mod download rsc.io/quote
|
||||
|
||||
go mod graph
|
||||
stdout rsc.io/quote
|
||||
|
||||
go mod verify
|
||||
|
||||
-- main.go --
|
||||
package main
|
||||
|
||||
func main() {}
|
Loading…
Reference in New Issue
Block a user