mirror of
https://github.com/golang/go
synced 2024-11-17 20:24:46 -07:00
07c57aff5d
Previously we used Go 1.17, but we realized thanks to tickling a pre-Go1.17.3 bug that if we are going to change the bootstrap toolchain that we should default to the latest available point release at the time we make the switch, not the initial major release, so as to avoid bugs that were fixed in the point releases. This CL updates the default search locations and the release notes. Users who run make.bash and depend on finding $HOME/sdk/go1.17 may need to run go install golang.org/dl/go1.17.13@latest go1.17.13 download to provide a Go 1.17.13 toolchain to their builds. Change-Id: I3a2511f088cf852470a7216a5a41ae775fb561b6 Reviewed-on: https://go-review.googlesource.com/c/go/+/439419 Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Russ Cox <rsc@golang.org> Reviewed-by: Ian Lance Taylor <iant@google.com> TryBot-Result: Gopher Robot <gobot@golang.org>
118 lines
3.8 KiB
Bash
Executable File
118 lines
3.8 KiB
Bash
Executable File
#!/bin/rc -e
|
|
# Copyright 2012 The Go Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style
|
|
# license that can be found in the LICENSE file.
|
|
|
|
# See golang.org/s/go15bootstrap for an overview of the build process.
|
|
|
|
# Environment variables that control make.rc:
|
|
#
|
|
# GOROOT_FINAL: The expected final Go root, baked into binaries.
|
|
# The default is the location of the Go tree during the build.
|
|
#
|
|
# GOHOSTARCH: The architecture for host tools (compilers and
|
|
# binaries). Binaries of this type must be executable on the current
|
|
# system, so the only common reason to set this is to set
|
|
# GOHOSTARCH=386 on an amd64 machine.
|
|
#
|
|
# GOARCH: The target architecture for installed packages and tools.
|
|
#
|
|
# GOOS: The target operating system for installed packages and tools.
|
|
#
|
|
# GO_GCFLAGS: Additional go tool compile arguments to use when
|
|
# building the packages and commands.
|
|
#
|
|
# GO_LDFLAGS: Additional go tool link arguments to use when
|
|
# building the commands.
|
|
#
|
|
# CGO_ENABLED: Controls cgo usage during the build. Set it to 1
|
|
# to include all cgo related files, .c and .go file with "cgo"
|
|
# build directive, in the build. Set it to 0 to ignore them.
|
|
|
|
rfork e
|
|
if(! test -f run.rc){
|
|
echo 'make.rc must be run from $GOROOT/src' >[1=2]
|
|
exit wrongdir
|
|
}
|
|
|
|
# Clean old generated file that will cause problems in the build.
|
|
rm -f ./runtime/runtime_defs.go
|
|
|
|
# Determine the host compiler toolchain.
|
|
eval `{grep '^(CC|LD|O)=' /$objtype/mkfile}
|
|
|
|
vflag=()
|
|
if(~ $1 -v) {
|
|
vflag=(-v)
|
|
shift
|
|
}
|
|
|
|
bootgo = 1.17.13
|
|
GOROOT = `{cd .. && pwd}
|
|
goroot_bootstrap_set = 'true'
|
|
if(! ~ $#GOROOT_BOOTSTRAP 1){
|
|
goroot_bootstrap_set = 'false'
|
|
GOROOT_BOOTSTRAP = $home/go1.4
|
|
for(d in sdk/go$bootgo go$bootgo)
|
|
if(test -d $home/$d)
|
|
GOROOT_BOOTSTRAP = $home/$d
|
|
}
|
|
for(p in $path){
|
|
if(! test -x $GOROOT_BOOTSTRAP/bin/go){
|
|
if(go_exe = `{path=$p whatis go}){
|
|
goroot = `{GOROOT='' $go_exe env GOROOT}
|
|
if(! ~ $goroot $GOROOT){
|
|
if(~ $goroot_bootstrap_set 'true'){
|
|
echo 'WARNING: '$GOROOT_BOOTSTRAP'/bin/go does not exist, found '$go_exe' from env' >[1=2]
|
|
echo 'WARNING: set '$goroot' as GOROOT_BOOTSTRAP' >[1=2]
|
|
}
|
|
GOROOT_BOOTSTRAP = $goroot
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if(! test -x $GOROOT_BOOTSTRAP/bin/go){
|
|
echo 'ERROR: Cannot find '$GOROOT_BOOTSTRAP'/bin/go.' >[1=2]
|
|
echo 'Set $GOROOT_BOOTSTRAP to a working Go tree >= Go '$bootgo'.' >[1=2]
|
|
exit bootstrap
|
|
}
|
|
if(~ $GOROOT_BOOTSTRAP $GOROOT){
|
|
echo 'ERROR: $GOROOT_BOOTSTRAP must not be set to $GOROOT' >[1=2]
|
|
echo 'Set $GOROOT_BOOTSTRAP to a working Go tree >= Go '$bootgo'.' >[1=2]
|
|
exit bootstrap
|
|
}
|
|
|
|
# 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 //'}
|
|
echo 'Building Go cmd/dist using '$GOROOT_BOOTSTRAP'. ('$"GOROOT_BOOTSTRAP_VERSION')'
|
|
if(~ $#vflag 1)
|
|
echo cmd/dist
|
|
GOROOT=$GOROOT_BOOTSTRAP GOOS='' GOARCH='' GOEXPERIMENT='' GO111MODULE=off GOENV=off GOFLAGS='' $GOROOT_BOOTSTRAP/bin/go build -o cmd/dist/dist ./cmd/dist
|
|
|
|
eval `{./cmd/dist/dist env -9}
|
|
if(~ $#vflag 1)
|
|
echo
|
|
|
|
if(~ $1 --dist-tool){
|
|
# Stop after building dist tool.
|
|
mkdir -p $GOTOOLDIR
|
|
if(! ~ $2 '')
|
|
cp cmd/dist/dist $2
|
|
mv cmd/dist/dist $GOTOOLDIR/dist
|
|
exit
|
|
}
|
|
|
|
# Run dist bootstrap to complete make.bash.
|
|
# Bootstrap installs a proper cmd/dist, built with the new toolchain.
|
|
# Throw ours, built with the bootstrap toolchain, away after bootstrap.
|
|
./cmd/dist/dist bootstrap -a $vflag $*
|
|
rm -f ./cmd/dist/dist
|
|
|
|
# DO NOT ADD ANY NEW CODE HERE.
|
|
# The bootstrap+rm above are the final step of make.rc.
|
|
# If something must be added, add it to cmd/dist's cmdbootstrap,
|
|
# to avoid needing three copies in three different shell languages
|
|
# (make.bash, make.bat, make.rc).
|