2021-01-18 15:48:06 +00:00
|
|
|
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
set -x
|
|
|
|
|
2021-01-26 04:48:27 +00:00
|
|
|
version=$1
|
2021-01-18 15:48:06 +00:00
|
|
|
arch=$2
|
|
|
|
|
2024-01-09 22:13:00 +00:00
|
|
|
apt-get -qq update
|
|
|
|
if [ "$arch" = "ppc64le" ]; then
|
|
|
|
apt-get install --no-upgrade -y wget jq
|
|
|
|
else
|
|
|
|
apt-get install --no-upgrade -y gcc wget jq lsof
|
|
|
|
fi
|
|
|
|
|
2023-08-22 16:24:25 +00:00
|
|
|
|
|
|
|
if [ "$arch" != "ppc64le" ]; then
|
|
|
|
apt-get install -y dwz
|
|
|
|
dwz --version
|
|
|
|
fi
|
|
|
|
|
2021-01-26 04:48:27 +00:00
|
|
|
function getgo {
|
|
|
|
export GOROOT=/usr/local/go/$1
|
|
|
|
if [ ! -d "$GOROOT" ]; then
|
2024-01-09 22:13:00 +00:00
|
|
|
wget -q https://dl.google.com/go/"$1".linux-"${arch}".tar.gz
|
2021-01-26 04:48:27 +00:00
|
|
|
mkdir -p /usr/local/go
|
|
|
|
tar -C /usr/local/go -xzf "$1".linux-"${arch}".tar.gz
|
|
|
|
mv -f /usr/local/go/go "$GOROOT"
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
if [ "$version" = "gotip" ]; then
|
|
|
|
echo Building Go from tip
|
2024-01-09 22:13:00 +00:00
|
|
|
getgo $(wget -q -O - https://go.dev/VERSION?m=text | head -1)
|
2021-01-26 04:48:27 +00:00
|
|
|
export GOROOT_BOOTSTRAP=$GOROOT
|
|
|
|
export GOROOT=/usr/local/go/go-tip
|
2023-08-22 16:24:25 +00:00
|
|
|
apt-get install -y git
|
2021-01-26 04:48:27 +00:00
|
|
|
git clone https://go.googlesource.com/go /usr/local/go/go-tip
|
|
|
|
cd /usr/local/go/go-tip/src
|
|
|
|
./make.bash
|
|
|
|
cd -
|
|
|
|
else
|
|
|
|
echo Finding latest patch version for $version
|
|
|
|
echo "Go $version on $arch"
|
2024-01-09 22:13:00 +00:00
|
|
|
version=$(wget -q -O - 'https://go.dev/dl/?mode=json&include=all' | jq '.[].version' --raw-output | egrep ^$version'($|\.|beta|rc)' | sort -rV | head -1)
|
2022-12-12 16:36:48 +00:00
|
|
|
if [ "x$version" = "x" ]; then
|
2024-01-09 22:13:00 +00:00
|
|
|
version=$(wget -q -O - 'https://go.dev/dl/?mode=json&include=all' | jq '.[].version' --raw-output | egrep ^$version'($|\.)' | sort -rV | head -1)
|
2022-12-12 16:36:48 +00:00
|
|
|
fi
|
2021-01-26 04:48:27 +00:00
|
|
|
getgo $version
|
2021-01-18 15:48:06 +00:00
|
|
|
fi
|
|
|
|
|
2021-01-26 04:48:27 +00:00
|
|
|
|
2021-01-18 15:48:06 +00:00
|
|
|
GOPATH=$(pwd)/go
|
|
|
|
export GOPATH
|
|
|
|
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
|
|
|
|
go version
|
2023-08-22 16:24:25 +00:00
|
|
|
if [ "$arch" != "ppc64le" ]; then
|
2024-10-23 19:40:35 +00:00
|
|
|
go install honnef.co/go/tools/cmd/staticcheck@2024.1.1 || true
|
2023-08-22 16:24:25 +00:00
|
|
|
fi
|
2021-01-18 15:48:06 +00:00
|
|
|
|
|
|
|
uname -a
|
|
|
|
echo "$PATH"
|
|
|
|
echo "$GOROOT"
|
|
|
|
echo "$GOPATH"
|
|
|
|
cd delve
|
2021-08-24 12:53:27 +00:00
|
|
|
|
2021-10-18 20:17:47 +00:00
|
|
|
# Starting with go1.18 'go build' and 'go run' will try to stamp the build
|
|
|
|
# with the current VCS revision, which does not work with TeamCity
|
|
|
|
if [ "$version" = "gotip" ]; then
|
|
|
|
export GOFLAGS=-buildvcs=false
|
2021-11-24 21:44:49 +00:00
|
|
|
elif [ ${version:4:2} -gt 17 ]; then
|
2021-10-18 20:17:47 +00:00
|
|
|
export GOFLAGS=-buildvcs=false
|
|
|
|
fi
|
|
|
|
|
2022-08-15 16:40:25 +00:00
|
|
|
if [ "$arch" = "386" ]; then
|
|
|
|
ver=$(go version)
|
|
|
|
if [ "$ver" = "go version go1.19 linux/386" ]; then
|
|
|
|
export CGO_CFLAGS='-g -O0 -fno-stack-protector'
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2022-05-03 17:35:24 +00:00
|
|
|
set +e
|
2023-08-22 16:24:25 +00:00
|
|
|
go run _scripts/make.go test
|
2022-05-03 17:35:24 +00:00
|
|
|
x=$?
|
|
|
|
if [ "$version" = "gotip" ]; then
|
|
|
|
exit 0
|
|
|
|
else
|
|
|
|
exit $x
|
|
|
|
fi
|