From: Bryan C. Mills Date: Tue, 17 Mar 2020 14:22:39 +0000 (-0400) Subject: run.{bash,bat,rc}: use ../bin/go instead of the go binary in $PATH X-Git-Tag: go1.15beta1~740 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=f9197a7043e48b6d2caa5ea1b0a969495f998d48;p=gostls13.git run.{bash,bat,rc}: use ../bin/go instead of the go binary in $PATH https://golang.org/doc/contribute.html#quick_test currently suggests running 'make.bash' and 'run.bash' separately, but 'run.bash' potentially uses a 'go' command resolved from the wrong GOROOT, which in turn sets the wrong GOROOT for further commands. Updates #32674 Updates #17896 Change-Id: I4925d478d0fc7351c4f6d40830ab17d4d688348d Reviewed-on: https://go-review.googlesource.com/c/go/+/223741 Run-TryBot: Bryan C. Mills TryBot-Result: Gobot Gobot Reviewed-by: Dmitri Shuralyov Reviewed-by: Katie Hockman --- diff --git a/src/run.bash b/src/run.bash index e18540c990..706b4b60ee 100755 --- a/src/run.bash +++ b/src/run.bash @@ -16,8 +16,13 @@ set -e -eval $(go env) -export GOROOT # the api test requires GOROOT to be set. +if [ ! -f ../bin/go ]; then + echo 'run.bash must be run from $GOROOT/src after installing cmd/go' 1>&2 + exit 1 +fi + +eval $(../bin/go env) +export GOROOT # The api test requires GOROOT to be set, so set it to match ../bin/go. # We disallow local import for non-local packages, if $GOROOT happens # to be under $GOPATH, then some tests below will fail. $GOPATH needs @@ -56,4 +61,4 @@ if ulimit -T &> /dev/null; then [ "$(ulimit -H -T)" = "unlimited" ] || ulimit -S -T $(ulimit -H -T) fi -exec go tool dist test -rebuild "$@" +exec ../bin/go tool dist test -rebuild "$@" diff --git a/src/run.bat b/src/run.bat index 25ee58001e..46858f8fa0 100644 --- a/src/run.bat +++ b/src/run.bat @@ -4,6 +4,11 @@ @echo off +if exist ..\bin\go goto ok +echo Must run run.bat from Go src directory after installing cmd/go. +goto fail +:ok + :: Keep environment variables within this script :: unless invoked with --no-local. if x%1==x--no-local goto nolocal @@ -36,13 +41,13 @@ echo. set GOROOT_FINAL= :: get CGO_ENABLED -go env > env.bat +..\bin\go env > env.bat if errorlevel 1 goto fail call env.bat del env.bat echo. -go tool dist test +..\bin\go tool dist test if errorlevel 1 goto fail echo. diff --git a/src/run.rc b/src/run.rc index c346f5cf5c..ab7abfa991 100755 --- a/src/run.rc +++ b/src/run.rc @@ -5,7 +5,12 @@ rfork e -eval `{go env} +if(! test -f ../bin/go){ + echo 'run.rc must be run from $GOROOT/src after installing cmd/go' >[1=2] + exit wrongdir +} + +eval `{../bin/go env} GOPATH = () # we disallow local import for non-local packages, if $GOROOT happens # to be under $GOPATH, then some tests below will fail @@ -13,4 +18,4 @@ GOBIN = () # Issue 14340 GOFLAGS = () GO111MODULE = () -exec go tool dist test -rebuild $* +exec ../bin/go tool dist test -rebuild $*