diff options
author | Ian Lance Taylor <iant@golang.org> | 2021-06-21 14:48:54 -0700 |
---|---|---|
committer | Ian Lance Taylor <iant@golang.org> | 2021-06-22 16:59:10 +0000 |
commit | 0ebd5a8de05823109263bef31b38be8c29d2cd54 (patch) | |
tree | 622e3b567a603030b8b5606113f34c973eea5fd3 /src/cmd/go/internal/cfg/cfg.go | |
parent | 5bd09e5efccf0d3df89085c9f214f94017f6e969 (diff) | |
download | go-0ebd5a8de05823109263bef31b38be8c29d2cd54.tar.gz go-0ebd5a8de05823109263bef31b38be8c29d2cd54.zip |
cmd/go: update ToolTags based on GOARCH value
The build.Context ToolTags value is set based on the set of enabled
experiments, which in turn depends on GOARCH. Before this CL the set
of experiments was being set based on GOARCH in the environment.
That is normally fine, but fails with cmd/go when somebody has run
"go env -w GOARCH=val"; in that case cmd/go changes its GOARCH value
after initialization. The new GOARCH value was affect the set of
enabled experiments, which can affect the ToolTags value. With this
CL, we update ToolTags in cmd/go based on the GOARCH value it is using.
This is a pretty ugly fix. We should do something cleaner for 1.18.
Fixes #46815
Change-Id: Ie9416781a168248813c3da8afdc257acdd3fef7e
Reviewed-on: https://go-review.googlesource.com/c/go/+/329930
Trust: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Diffstat (limited to 'src/cmd/go/internal/cfg/cfg.go')
-rw-r--r-- | src/cmd/go/internal/cfg/cfg.go | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/cmd/go/internal/cfg/cfg.go b/src/cmd/go/internal/cfg/cfg.go index b47eb812b5..fc6989097e 100644 --- a/src/cmd/go/internal/cfg/cfg.go +++ b/src/cmd/go/internal/cfg/cfg.go @@ -77,6 +77,14 @@ func defaultContext() build.Context { ctxt.GOOS = envOr("GOOS", ctxt.GOOS) ctxt.GOARCH = envOr("GOARCH", ctxt.GOARCH) + // The experiments flags are based on GOARCH, so they may + // need to change. TODO: This should be cleaned up. + buildcfg.UpdateExperiments(ctxt.GOARCH) + ctxt.ToolTags = nil + for _, exp := range buildcfg.EnabledExperiments() { + ctxt.ToolTags = append(ctxt.ToolTags, "goexperiment."+exp) + } + // The go/build rule for whether cgo is enabled is: // 1. If $CGO_ENABLED is set, respect it. // 2. Otherwise, if this is a cross-compile, disable cgo. |