delve/_scripts/test_linux.sh
Alessandro Arzilli 1a1e215fac
TeamCity: speed up ppc64le CI (#3622)
The builder is currently spending 15 to 20 minutes installing gcc and
upgrading packages every time we run the tests.
Because of this the build fails sometimes by running out of time.
This change reduces that to 5 minutes by:

* switching from curl to wget (which seems to have fewer dependencies)
* not installing gcc on ppc64le
* skipping tests that depend on gcc or other binutils
2024-01-09 14:13:00 -08:00

89 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
set -e
set -x
version=$1
arch=$2
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
if [ "$arch" != "ppc64le" ]; then
apt-get install -y dwz
dwz --version
fi
function getgo {
export GOROOT=/usr/local/go/$1
if [ ! -d "$GOROOT" ]; then
wget -q https://dl.google.com/go/"$1".linux-"${arch}".tar.gz
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
getgo $(wget -q -O - https://go.dev/VERSION?m=text | head -1)
export GOROOT_BOOTSTRAP=$GOROOT
export GOROOT=/usr/local/go/go-tip
apt-get install -y git
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"
version=$(wget -q -O - 'https://go.dev/dl/?mode=json&include=all' | jq '.[].version' --raw-output | egrep ^$version'($|\.|beta|rc)' | sort -rV | head -1)
if [ "x$version" = "x" ]; then
version=$(wget -q -O - 'https://go.dev/dl/?mode=json&include=all' | jq '.[].version' --raw-output | egrep ^$version'($|\.)' | sort -rV | head -1)
fi
getgo $version
fi
GOPATH=$(pwd)/go
export GOPATH
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
go version
if [ "$arch" != "ppc64le" ]; then
go install honnef.co/go/tools/cmd/staticcheck@2023.1.6 || true
fi
uname -a
echo "$PATH"
echo "$GOROOT"
echo "$GOPATH"
cd delve
# 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
elif [ ${version:4:2} -gt 17 ]; then
export GOFLAGS=-buildvcs=false
fi
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
set +e
go run _scripts/make.go test
x=$?
if [ "$version" = "gotip" ]; then
exit 0
else
exit $x
fi