| #!/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. | |
| idevicediagnostics restart | |
| # Initial sleep to make sure we are restarting before we start polling. | |
| sleep 30 | |
| # Poll until the device has restarted. | |
| until idevicediagnostics 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 build and tests. | |
| ./all.bash --no-clean |