diff options
author | Kai Backman <kaib@golang.org> | 2010-04-16 13:06:45 +0300 |
---|---|---|
committer | Kai Backman <kaib@golang.org> | 2010-04-16 13:06:45 +0300 |
commit | 07729dbfd6e8504c417d0a6f0222af4ecd72b2ab (patch) | |
tree | dee45477041067371d7540a51187c6b9f928dad4 /misc | |
parent | a8ca1a233952f02a57789b7fc3687e20842aa489 (diff) | |
download | golang-07729dbfd6e8504c417d0a6f0222af4ecd72b2ab.tar.gz |
the android runner script
this is a version synthesized from rsc's, dean's and my
versions. changes and updates:
- embeds the retval script and pushes a new version to the
device if needed
- passes arguments correctly to the program on the device
- export GOARCH, GOTRACEBACK and GOGC from the local
environment to the device.
- added times.out support to run-arm
enabled a few tests that are now passing and moved the
GOGC=off workaround to run-arm.
R=dpx
CC=golang-dev, rsc
http://codereview.appspot.com/880046
Diffstat (limited to 'misc')
-rwxr-xr-x | misc/arm/a | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/misc/arm/a b/misc/arm/a new file mode 100755 index 000000000..140b47e29 --- /dev/null +++ b/misc/arm/a @@ -0,0 +1,49 @@ +#!/usr/bin/env bash + +# Copyright 2010 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. + +# This is a small script for executing go binaries on the android platform. +# +# example: +# ./a 5.out foo bar baz +# +# The script exports the local values of GOARCH, GOTRACEBACK and GOGC +# to the android environment. +# +# Known issues: +# The script fails unless the last character output by the program is "\n" +# +# TODO(kaib): add gdb bridge support + +exp () +{ + if [ ${!1} ]; then + echo "export $1=\"${!1}\"; " + fi +} + +# adb does not correctly return the exit value of the executed program. use this +# wrapper to manually extract the exit value +rloc=/data/local/tmp/retval +rsize=$(adb shell "ls -l $rloc"|tr -s ' '|cut -d' ' -f4) +rcheck=38 +if [ $rsize != $rcheck ] ; then +# echo "debug: retval size incorrect want $rcheck, got $rsize. uploading" + echo >/tmp/adb.retval '#!/system/bin/sh +"$@" +echo RETVAL: $?' + adb push /tmp/adb.retval $rloc >/dev/null 2>&1 + adb shell chmod 755 $rloc +fi + +# run the main binary +if [ "$*" != "$1" ]; then + args=$(echo $*| cut -d' ' -f2-) +fi +adb push $1 /data/local/tmp/$1 >/dev/null 2>&1 +adb shell "$(exp GOARCH) $(exp GOTRACEBACK) $(exp GOGC) \ + /data/local/tmp/retval /data/local/tmp/$1 $args" \ + 2>&1|tr -d '\r' |tee /tmp/adb.out|grep -v RETVAL +exit $(grep RETVAL /tmp/adb.out|tr -d '\n\r'| cut -d' ' -f2) |