mirror of
				https://github.com/go-delve/delve.git
				synced 2025-10-31 10:47:27 +08:00 
			
		
		
		
	 1a1e215fac
			
		
	
	1a1e215fac
	
	
	
		
			
			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
		
			
				
	
	
		
			89 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			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
 |