From b459bc8152210c14b66e23351690ff774cd68d2c Mon Sep 17 00:00:00 2001 From: Jay Conrod Date: Fri, 11 Sep 2020 09:31:30 -0400 Subject: [PATCH] cmd/go: make 'go mod download' update go.sum after downloads are complete 'go mod download' calls WriteGoMod once via modload.ListModules when it loads the build list. This saves sums for go.mod files needed by MVS, but the write occurs before any zip files are downloaded. With this change, 'go mod download' calls WriteGoMod again (and thus, modfetch.WriteGoSum) after downloading and verifying module zip files, so the sums of the zip files will be saved, too. Fixes #41341 Change-Id: I7d56754aa255256ed45fd93cb154c2e6ea5f45a9 Reviewed-on: https://go-review.googlesource.com/c/go/+/254357 Run-TryBot: Jay Conrod TryBot-Result: Gobot Gobot Reviewed-by: Bryan C. Mills --- src/cmd/go/internal/modcmd/download.go | 3 +++ src/cmd/go/testdata/script/mod_download.txt | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/src/cmd/go/internal/modcmd/download.go b/src/cmd/go/internal/modcmd/download.go index 0ea5638e70..6227fd9f33 100644 --- a/src/cmd/go/internal/modcmd/download.go +++ b/src/cmd/go/internal/modcmd/download.go @@ -187,4 +187,7 @@ func runDownload(ctx context.Context, cmd *base.Command, args []string) { } base.ExitIfErrors() } + + // Update go.mod and especially go.sum if needed. + modload.WriteGoMod() } diff --git a/src/cmd/go/testdata/script/mod_download.txt b/src/cmd/go/testdata/script/mod_download.txt index b9bf67cad5..c53bbe4567 100644 --- a/src/cmd/go/testdata/script/mod_download.txt +++ b/src/cmd/go/testdata/script/mod_download.txt @@ -107,6 +107,14 @@ stderr '^go mod download: skipping argument m that resolves to the main module\n go mod download m@latest stderr '^go mod download: skipping argument m@latest that resolves to the main module\n' +# download updates go.mod and populates go.sum +cd update +! exists go.sum +go mod download +grep '^rsc.io/sampler v1.3.0 ' go.sum +go list -m rsc.io/sampler +stdout '^rsc.io/sampler v1.3.0$' + # allow go mod download without go.mod env GO111MODULE=auto rm go.mod @@ -122,3 +130,13 @@ stderr 'get '$GOPROXY -- go.mod -- module m + +-- update/go.mod -- +module m + +go 1.16 + +require ( + rsc.io/quote v1.5.2 + rsc.io/sampler v1.2.1 // older version than in build list +) -- 2.48.1