Home | History | Annotate | Download | only in src
      1 #!/usr/bin/env bash
      2 # Copyright 2015 The Go Authors. All rights reserved.
      3 # Use of this source code is governed by a BSD-style
      4 # license that can be found in the LICENSE file.
      5 
      6 # Usage: buildall.sh [-e] [pattern]
      7 #
      8 # buildall.bash builds the standard library for all Go-supported
      9 # architectures. It is used by the "all-compile" trybot builder,
     10 # as a smoke test to quickly flag portability issues.
     11 #
     12 # Options:
     13 #   -e: stop at first failure
     14 
     15 if [ ! -f run.bash ]; then
     16 	echo 'buildall.bash must be run from $GOROOT/src' 1>&2
     17 	exit 1
     18 fi
     19 
     20 sete=false
     21 if [ "$1" = "-e" ]; then
     22 	sete=true
     23 	shift
     24 fi
     25 
     26 if [ "$sete" = true ]; then
     27 	set -e
     28 fi
     29 
     30 pattern="$1"
     31 if [ "$pattern" = "" ]; then
     32 	pattern=.
     33 fi
     34 
     35 ./make.bash || exit 1
     36 GOROOT="$(cd .. && pwd)"
     37 
     38 gettargets() {
     39 	../bin/go tool dist list | sed -e 's|/|-|'
     40 	echo linux-386-387
     41 	echo linux-arm-arm5
     42 }
     43 
     44 selectedtargets() {
     45 	gettargets | egrep -v 'android-arm|darwin-arm' | egrep "$pattern"
     46 }
     47 
     48 # put linux, nacl first in the target list to get all the architectures up front.
     49 linux_nacl_targets() {
     50 	selectedtargets | egrep 'linux|nacl' | sort
     51 }
     52 
     53 non_linux_nacl_targets() {
     54 	selectedtargets | egrep -v 'linux|nacl' | sort
     55 }
     56 
     57 # Note words in $targets are separated by both newlines and spaces.
     58 targets="$(linux_nacl_targets) $(non_linux_nacl_targets)"
     59 
     60 failed=false
     61 for target in $targets
     62 do
     63 	echo ""
     64 	echo "### Building $target"
     65 	export GOOS=$(echo $target | sed 's/-.*//')
     66 	export GOARCH=$(echo $target | sed 's/.*-//')
     67 	unset GO386 GOARM
     68 	if [ "$GOARCH" = "arm5" ]; then
     69 		export GOARCH=arm
     70 		export GOARM=5
     71 	fi
     72 	if [ "$GOARCH" = "387" ]; then
     73 		export GOARCH=386
     74 		export GO386=387
     75 	fi
     76 	if ! "$GOROOT/bin/go" build -a std cmd; then
     77 		failed=true
     78 		if $sete; then
     79 			exit 1
     80 		fi
     81 	fi
     82 done
     83 
     84 if [ "$failed" = "true" ]; then
     85 	echo "" 1>&2
     86 	echo "Build(s) failed." 1>&2
     87 	exit 1
     88 fi
     89