aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEhden Sinai <ehdens@gmail.com>2024-02-01 13:38:56 -0500
committerCarlos Amedee <carlos@golang.org>2024-07-10 19:27:29 +0000
commit49906f9575149afdf7e542fa24c7447c0ef78c49 (patch)
tree3b948935333ad523f317e15f85c21777b7fe3f9e
parentea96074191e2fdd435c7f38ce0283bb868336122 (diff)
downloadgo-49906f9575149afdf7e542fa24c7447c0ef78c49.tar.xz
[release-branch.go1.22] cmd/go: fix build config before creating actions for 'go list -cover'
When -covermode is set to atomic, instrumented packages need to import sync/atomic. If this is not already imported by a package being instrumented, the build needs to ensure that sync/atomic is compiled whenever 'go list' is run in a way that triggers package builds. The build config was already being made to ensure the import, but only after the action graph had been created, so there was no guarantee that sync/atomic would be built when needed. For #65264. For #68212 Fixes #68222 Change-Id: Ib3f1e102ce2ef554ea08330d9db69a8c98790ac5 Reviewed-on: https://go-review.googlesource.com/c/go/+/560236 Run-TryBot: Bryan Mills <bcmills@google.com> Auto-Submit: Bryan Mills <bcmills@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Bryan Mills <bcmills@google.com> Reviewed-by: Michael Matloob <matloob@golang.org> (cherry picked from commit ac08c05d4daa11957fcada6db33f2150936bac27) Reviewed-on: https://go-review.googlesource.com/c/go/+/595496 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Than McIntosh <thanm@google.com>
-rw-r--r--src/cmd/go/internal/list/list.go6
-rw-r--r--src/cmd/go/testdata/script/cover_list.txt4
2 files changed, 7 insertions, 3 deletions
diff --git a/src/cmd/go/internal/list/list.go b/src/cmd/go/internal/list/list.go
index d9b09077c1..3fd697f3df 100644
--- a/src/cmd/go/internal/list/list.go
+++ b/src/cmd/go/internal/list/list.go
@@ -723,6 +723,9 @@ func runList(ctx context.Context, cmd *base.Command, args []string) {
b.IsCmdList = true
b.NeedExport = *listExport
b.NeedCompiledGoFiles = *listCompiled
+ if cfg.Experiment.CoverageRedesign && cfg.BuildCover {
+ load.PrepareForCoverageBuild(pkgs)
+ }
a := &work.Action{}
// TODO: Use pkgsFilter?
for _, p := range pkgs {
@@ -730,9 +733,6 @@ func runList(ctx context.Context, cmd *base.Command, args []string) {
a.Deps = append(a.Deps, b.AutoAction(work.ModeInstall, work.ModeInstall, p))
}
}
- if cfg.Experiment.CoverageRedesign && cfg.BuildCover {
- load.PrepareForCoverageBuild(pkgs)
- }
b.Do(ctx, a)
}
diff --git a/src/cmd/go/testdata/script/cover_list.txt b/src/cmd/go/testdata/script/cover_list.txt
index 6b8aaf45d1..1b1f326662 100644
--- a/src/cmd/go/testdata/script/cover_list.txt
+++ b/src/cmd/go/testdata/script/cover_list.txt
@@ -38,6 +38,10 @@ cp stdout $WORK/toolbuildid.txt
# Build IDs should match here.
cmp $WORK/toolbuildid.txt $WORK/listbuildid.txt
+# Make sure that the build succeeds regardless of covermode.
+go list -export -covermode=atomic m/example
+go list -export -covermode=count m/example
+
-- go.mod --
module m