aboutsummaryrefslogtreecommitdiff
path: root/src/make.bash
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2022-12-09 15:09:46 -0500
committerGopher Robot <gobot@golang.org>2023-01-17 22:30:56 +0000
commitdbe327a640b5ac4d6c55b5d966224d3095f1cdde (patch)
treededead79d4b5839be5ef1860a4076006f7c8aa9c /src/make.bash
parent627765a861c6762d15cfdfeb2f7e4872523edbe4 (diff)
downloadgo-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-xsrc/make.bash12
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)