From 117ebe0f52efc5128a9c86722e07fe22cb65450d Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Wed, 16 Jun 2021 14:48:45 -0400 Subject: [PATCH] cmd/go: do not require the module cache to exist for 'go mod edit' Updates #46695 Change-Id: I4afbc1401ef4183d94c1ac6271394fac1fff95ae Reviewed-on: https://go-review.googlesource.com/c/go/+/328769 Trust: Bryan C. Mills Run-TryBot: Bryan C. Mills TryBot-Result: Go Bot Reviewed-by: Jay Conrod --- src/cmd/go/internal/modfetch/cache.go | 2 +- .../go/testdata/script/mod_edit_no_modcache.txt | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 src/cmd/go/testdata/script/mod_edit_no_modcache.txt diff --git a/src/cmd/go/internal/modfetch/cache.go b/src/cmd/go/internal/modfetch/cache.go index f3b58a172a6..b01b4674131 100644 --- a/src/cmd/go/internal/modfetch/cache.go +++ b/src/cmd/go/internal/modfetch/cache.go @@ -152,7 +152,7 @@ func lockVersion(mod module.Version) (unlock func(), err error) { // If err is nil, the caller MUST eventually call the unlock function. func SideLock() (unlock func(), err error) { if err := checkCacheDir(); err != nil { - base.Fatalf("go: %v", err) + return nil, err } path := filepath.Join(cfg.GOMODCACHE, "cache", "lock") diff --git a/src/cmd/go/testdata/script/mod_edit_no_modcache.txt b/src/cmd/go/testdata/script/mod_edit_no_modcache.txt new file mode 100644 index 00000000000..ced15bb3018 --- /dev/null +++ b/src/cmd/go/testdata/script/mod_edit_no_modcache.txt @@ -0,0 +1,15 @@ +# 'go mod edit' opportunistically locks the side-lock file in the module cache, +# for compatibility with older versions of the 'go' command. +# It does not otherwise depend on the module cache, so it should not +# fail if the module cache directory cannot be created. + +[root] skip + +mkdir $WORK/readonly +chmod 0555 $WORK/readonly +env GOPATH=$WORK/readonly/nonexist + +go mod edit -go=1.17 + +-- go.mod -- +module example.com/m