| #!/usr/bin/env bash | 
 | # Copyright 2015 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. | 
 |  | 
 | # For testing darwin/arm{,64} on iOS. | 
 |  | 
 | set -e | 
 | ulimit -c 0 # no core files | 
 |  | 
 | if [ ! -f make.bash ]; then | 
 | 	echo 'iostest.bash must be run from $GOROOT/src' 1>&2 | 
 | 	exit 1 | 
 | fi | 
 |  | 
 | if [ -z $GOOS ]; then | 
 | 	export GOOS=darwin | 
 | fi | 
 | if [ "$GOOS" != "darwin" ]; then | 
 | 	echo "iostest.bash requires GOOS=darwin, got GOOS=$GOOS" 1>&2 | 
 | 	exit 1 | 
 | fi | 
 | if [ "$GOARCH" != "arm" ] && [ "$GOARCH" != "arm64" ]; then | 
 | 	echo "iostest.bash requires GOARCH=arm or GOARCH=arm64, got GOARCH=$GOARCH" 1>&2 | 
 | 	exit 1 | 
 | fi | 
 | if [ "$GOARCH" = "arm" ]; then | 
 | 	export GOARM=7 | 
 | fi | 
 |  | 
 | if [ "$1" = "-restart" ]; then | 
 | 	# Reboot to make sure previous runs do not interfere with the current run. | 
 | 	# It is reasonably easy for a bad program leave an iOS device in an | 
 | 	# almost unusable state. | 
 | 	IDEVARGS= | 
 | 	if [ -n "$GOIOS_DEVICE_ID" ]; then | 
 | 		IDEVARGS="-u $GOIOS_DEVICE_ID" | 
 | 	fi | 
 | 	idevicediagnostics $IDEVARGS restart | 
 | 	# Initial sleep to make sure we are restarting before we start polling. | 
 | 	sleep 30 | 
 | 	# Poll until the device has restarted. | 
 | 	until idevicediagnostics $IDEVARGS diagnostics; do | 
 | 		# TODO(crawshaw): replace with a test app using go_darwin_arm_exec. | 
 | 		echo "waiting for idevice to come online" | 
 | 		sleep 10 | 
 | 	done | 
 | 	# Diagnostics are reported during boot before the device can start an | 
 | 	# app. Wait a little longer before trying to use the device. | 
 | 	sleep 30 | 
 | fi | 
 |  | 
 | unset GOBIN | 
 | export GOROOT=$(dirname $(pwd)) | 
 | export PATH=$GOROOT/bin:$PATH | 
 | export CGO_ENABLED=1 | 
 | export CC_FOR_TARGET=$GOROOT/misc/ios/clangwrap.sh | 
 |  | 
 | # Run the build for the host bootstrap, so we can build go_darwin_arm_exec. | 
 | # Also lets us fail early before the (slow) ios-deploy if the build is broken. | 
 | ./make.bash | 
 |  | 
 | GOOS=$GOHOSTOS GOARCH=$GOHOSTARCH go build \ | 
 | 	-o ../bin/go_darwin_${GOARCH}_exec \ | 
 | 	../misc/ios/go_darwin_arm_exec.go | 
 |  | 
 | if [ "$GOIOS_DEV_ID" = "" ]; then | 
 | 	echo "detecting iOS development identity" | 
 | 	eval $(GOOS=$GOHOSTOS GOARCH=$GOHOSTARCH go run ../misc/ios/detect.go) | 
 | fi | 
 |  | 
 | # Run standard tests. | 
 | bash run.bash --no-rebuild |