diff options
| author | Russ Cox <rsc@golang.org> | 2022-12-09 15:09:46 -0500 |
|---|---|---|
| committer | Gopher Robot <gobot@golang.org> | 2023-01-17 22:30:56 +0000 |
| commit | dbe327a640b5ac4d6c55b5d966224d3095f1cdde (patch) | |
| tree | dedead79d4b5839be5ef1860a4076006f7c8aa9c /src/make.bash | |
| parent | 627765a861c6762d15cfdfeb2f7e4872523edbe4 (diff) | |
| download | go-dbe327a640b5ac4d6c55b5d966224d3095f1cdde.tar.xz | |
make.bash, make.rc: fix GOROOT detection when GOEXPERIMENT is set
We need to clear GOEXPERIMENT any time we are invoking a bootstrap
toolchain. One line missed the clearing of GOEXPERIMENT.
There were three different lines using different syntaxes and subtly
different sets of variables being cleared, so hoist them into a function
so it's all in one place.
Also quote $GOROOT_BOOTSTRAP consistently.
Change-Id: I6c5a5d70c694c24705bbc61298b28ae906c0cf6c
Reviewed-on: https://go-review.googlesource.com/c/go/+/456635
Reviewed-by: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Russ Cox <rsc@golang.org>
Auto-Submit: Russ Cox <rsc@golang.org>
Diffstat (limited to 'src/make.bash')
| -rwxr-xr-x | src/make.bash | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/make.bash b/src/make.bash index c07f39bb40..755b3b0b9e 100755 --- a/src/make.bash +++ b/src/make.bash @@ -162,16 +162,20 @@ if [ -z "$GOROOT_BOOTSTRAP" ]; then fi export GOROOT_BOOTSTRAP +nogoenv() { + GO111MODULE=off GOENV=off GOOS= GOARCH= GOEXPERIMENT= GOFLAGS= "$@" +} + export GOROOT="$(cd .. && pwd)" IFS=$'\n'; for go_exe in $(type -ap go); do if [ ! -x "$GOROOT_BOOTSTRAP/bin/go" ]; then - goroot=$(GOROOT='' GOOS='' GOARCH='' "$go_exe" env GOROOT) + goroot=$(GOROOT= nogoenv "$go_exe" env GOROOT) if [ "$goroot" != "$GOROOT" ]; then if [ "$goroot_bootstrap_set" = "true" ]; then printf 'WARNING: %s does not exist, found %s from env\n' "$GOROOT_BOOTSTRAP/bin/go" "$go_exe" >&2 printf 'WARNING: set %s as GOROOT_BOOTSTRAP\n' "$goroot" >&2 fi - GOROOT_BOOTSTRAP=$goroot + GOROOT_BOOTSTRAP="$goroot" fi fi done; unset IFS @@ -183,7 +187,7 @@ fi # Get the exact bootstrap toolchain version to help with debugging. # We clear GOOS and GOARCH to avoid an ominous but harmless warning if # the bootstrap doesn't support them. -GOROOT_BOOTSTRAP_VERSION=$(GOOS= GOARCH= GOEXPERIMENT= $GOROOT_BOOTSTRAP/bin/go version | sed 's/go version //') +GOROOT_BOOTSTRAP_VERSION=$(nogoenv "$GOROOT_BOOTSTRAP/bin/go" version | sed 's/go version //') echo "Building Go cmd/dist using $GOROOT_BOOTSTRAP. ($GOROOT_BOOTSTRAP_VERSION)" if $verbose; then echo cmd/dist @@ -194,7 +198,7 @@ if [ "$GOROOT_BOOTSTRAP" = "$GOROOT" ]; then exit 1 fi rm -f cmd/dist/dist -GOROOT="$GOROOT_BOOTSTRAP" GOOS="" GOARCH="" GO111MODULE=off GOEXPERIMENT="" GOENV=off GOFLAGS="" "$GOROOT_BOOTSTRAP/bin/go" build -o cmd/dist/dist ./cmd/dist +GOROOT="$GOROOT_BOOTSTRAP" nogoenv "$GOROOT_BOOTSTRAP/bin/go" build -o cmd/dist/dist ./cmd/dist # -e doesn't propagate out of eval, so check success by hand. eval $(./cmd/dist/dist env -p || echo FAIL=true) |
