on 8.02+15.04.20150302-0ubuntu1 help sign in
unity8/run_on_device.sh
164 lines 4.6 kB history raw
1#!/bin/bash
2CODE_DIR=shell
3USER=phablet
4USER_ID=32011
5PACKAGE=unity8
6BINARY=unity8
7TARGET_IP=127.0.0.1
8TARGET_SSH_PORT=2222
9TARGET_DEBUG_PORT=3768
10RUN_OPTIONS=-qmljsdebugger=port:$TARGET_DEBUG_PORT
11SETUP=false
12GDB=false
13PINLOCK=false
14KEYLOCK=false
15NUM_JOBS='$(( `grep -c ^processor /proc/cpuinfo` + 1 ))'
16FLIPPED=false
17SSH_WAS_STARTED=0
18SSH_STARTED=0
19PASSWORD=""
20PASSFILE=""
22usage() {
23 echo "usage: run_on_device -a SUDO_PASSWORD [OPTIONS]"
24 echo
25 echo "Script to setup a build environment for the shell and sync build and run it on the device"
26 echo
27 echo "OPTIONS:"
28 echo " -a, --password The sudo password to use"
29 echo " -s, --setup Setup the build environment"
30 echo " -g, --gdb Run with gdb"
31 echo " -p, --pinlock Enable a PIN lock screen when running"
32 echo " -k, --keylock Enable a Keyboard lock screen when running"
33 echo
34 echo "IMPORTANT:"
35 echo " * Make sure to have networking setup on the device beforehand."
36 echo " * Execute that script from a directory containing unity8 code."
37 exit 1
40start_ssh() {
41 if [ $SSH_STARTED -eq 0 ]; then
42 adb_sudo initctl start ssh
43 SSH_STARTED=1
44 fi
47exec_with_ssh() {
48 start_ssh
49 ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -t $USER@$TARGET_IP -p $TARGET_SSH_PORT sudo -u $USER -i bash -ic \"$@\"
52adb_sudo() {
53 adb shell "SUDO_ASKPASS=${PASSFILE} sudo --askpass $@"
56install_ssh_key() {
57 HOME_DIR="/home/phablet"
58 adb push ~/.ssh/id_rsa.pub $HOME_DIR/.ssh/authorized_keys
59 adb shell chmod 700 $HOME_DIR/.ssh
60 adb shell chmod 600 $HOME_DIR/.ssh/authorized_keys
63setup_adb_forwarding() {
64 adb forward tcp:$TARGET_SSH_PORT tcp:22
65 adb forward tcp:$TARGET_DEBUG_PORT tcp:$TARGET_DEBUG_PORT
68install_dependencies() {
69 phablet-config writable-image --remotepassword ${PASSWORD} -p build-essential \
70 -p rsync \
71 -p bzr \
72 -p ccache \
73 -p gdb \
74 -p ninja-build \
75 -p devscripts \
76 -p equivs
79sync_code() {
80 [ -e .bzr ] && bzr export --uncommitted --format=dir /tmp/$CODE_DIR
81 [ -e .git ] && git checkout-index -a -f --prefix=/tmp/$CODE_DIR/
82 start_ssh
83 rsync -crlOzv --delete --exclude builddir -e "ssh -p $TARGET_SSH_PORT -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" /tmp/$CODE_DIR/ $USER@$TARGET_IP:$CODE_DIR/
84 rm -rf /tmp/$CODE_DIR
87build() {
88 exec_with_ssh PATH=/usr/lib/ccache:$PATH "cd $CODE_DIR/ && PATH=/usr/lib/ccache:$PATH ./build.sh"
91run() {
92 ARGS="--nomousetouch"
93 if $GDB; then
94 ARGS="$ARGS --gdb"
95 fi
96 if $PINLOCK; then
97 ARGS="$ARGS -p"
98 fi
99 if $KEYLOCK; then
100 ARGS="$ARGS -k"
101 fi
103 exec_with_ssh "stop unity8"
104 exec_with_ssh "start maliit-server"
105 exec_with_ssh "cd $CODE_DIR/ && ./run.sh $ARGS -- $RUN_OPTIONS"
106 exec_with_ssh "stop maliit-server"
107 exec_with_ssh "start unity8"
110set -- `getopt -n$0 -u -a --longoptions="password:,setup,gdb,pinlock,keylock,help" "a:sgpkh" "$@"`
112# FIXME: giving incorrect arguments does not call usage and exit
113while [ $# -gt 0 ]
114do
115 case "$1" in
116 -a|--password) PASSWORD=$2;;
117 -s|--setup) SETUP=true;;
118 -g|--gdb) GDB=true;;
119 -p|--pinlock) PINLOCK=true;;
120 -k|--keylock) KEYLOCK=true;;
121 -h|--help) usage;;
122 --) shift;break;;
123 esac
124 shift
125done
127if [ -z "${PASSWORD}" ]; then
128 echo "ERROR: You need to provide a sudo password..."
129 echo
130 usage
131fi
133PASSFILE=$(adb shell 'mktemp' | tr -d '\r')
134adb shell "echo '#!/bin/sh' > ${PASSFILE}"
135adb shell "echo \"echo \\\"${PASSWORD}\\\"\" >> ${PASSFILE}"
136adb shell "chmod +x ${PASSFILE}"
138setup_adb_forwarding
140status_output=$(adb_sudo initctl status ssh)
141if [[ $status_output == "ssh start/running, process "* ]]; then
142 SSH_WAS_STARTED=1
143fi
144SSH_STARTED=$SSH_WAS_STARTED
146if $SETUP; then
147 echo "Setting up environment for building shell.."
148 install_ssh_key
149 install_dependencies
150 sync_code
151else
152 echo "Transferring code.."
153 sync_code
154 echo "Building.."
155 build
156 echo "Running.."
157 run
158fi
160adb shell "rm ${PASSFILE}"
162if [ $SSH_WAS_STARTED -eq 0 ]; then
163 adb_sudo initctl stop ssh
164fi