on 7.84+14.04.20140317.2-0ubuntu1 help sign in
unity8/run_on_device
165 lines 4.5 kB history raw
1#!/bin/bash
2CODE_DIR=shell
3USER=phablet
4USER_ID=32011
5PASSWORD=phablet
6PACKAGE=unity8
7BINARY=unity8
8TARGET_IP=${TARGET_IP-127.0.0.1}
9TARGET_SSH_PORT=${TARGET_SSH_PORT-2222}
10TARGET_DEBUG_PORT=3768
11RUN_OPTIONS=-qmljsdebugger=port:$TARGET_DEBUG_PORT
12SETUP=false
13GDB=false
14PINLOCK=false
15KEYLOCK=false
16SUDO="echo $PASSWORD | sudo -S"
17NUM_JOBS='$(( `grep -c ^processor /proc/cpuinfo` + 1 ))'
18FLIPPED=false
19CHROOT_PREFIX="/data/ubuntu"
20SSH_WAS_STARTED=0
21SSH_STARTED=0
23usage() {
24 echo "usage: run_on_device [OPTIONS]\n"
25 echo "Script to setup a build environment for the shell and sync build and run it on the device\n"
26 echo "OPTIONS:"
27 echo " -s, --setup Setup the build environment"
28 echo " -p, --pinlock Enable a PIN lock screen when running"
29 echo " -k, --keylock Enable a Keyboard lock screen when running"
30 echo ""
31 echo "IMPORTANT:"
32 echo " * Make sure to have networking setup on the device beforehand."
33 echo " * Execute that script from a directory containing unity8 code."
34 exit 1
37start_ssh() {
38 if [ $SSH_STARTED -eq 0 ]; then
39 exec_with_adb initctl start ssh
40 SSH_STARTED=1
41 fi
44exec_with_ssh() {
45 start_ssh
46 ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -t $USER@$TARGET_IP -p $TARGET_SSH_PORT sudo -u $USER -i bash -ic \"$@\"
49exec_with_adb() {
50 if $FLIPPED; then
51 adb shell $@
52 else
53 adb shell chroot /data/ubuntu /usr/bin/env -i PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin "$@"
54 fi
57adb_root() {
58 adb root
59 adb wait-for-device
62install_ssh_key() {
63 ssh-keygen -R $TARGET_IP
64 HOME_DIR="${CHROOT_PREFIX}/home/phablet"
65 adb push ~/.ssh/id_rsa.pub $HOME_DIR/.ssh/authorized_keys
66 adb shell chown $USER_ID:$USER_ID $HOME_DIR/.ssh
67 adb shell chown $USER_ID:$USER_ID $HOME_DIR/.ssh/authorized_keys
68 adb shell chmod 700 $HOME_DIR/.ssh
69 adb shell chmod 600 $HOME_DIR/.ssh/authorized_keys
72setup_adb_forwarding() {
73 adb forward tcp:$TARGET_SSH_PORT tcp:22
74 adb forward tcp:$TARGET_DEBUG_PORT tcp:$TARGET_DEBUG_PORT
77install_dependencies() {
78 exec_with_adb apt-get update
79 exec_with_ssh $SUDO apt-get -y install build-essential rsync bzr ccache gdb ninja-build devscripts equivs unity-plugin-scopes
82sync_code() {
83 [ -e .bzr ] && bzr export --uncommitted --format=dir /tmp/$CODE_DIR
84 [ -e .git ] && git checkout-index -a -f --prefix=/tmp/$CODE_DIR/
85 start_ssh
86 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/
87 rm -rf /tmp/$CODE_DIR
90build() {
91 exec_with_ssh PATH=/usr/lib/ccache:$PATH "cd $CODE_DIR/ && PATH=/usr/lib/ccache:$PATH ./build"
94run() {
95 ARGS="--nomousetouch"
96 if $GDB; then
97 ARGS="$ARGS --gdb"
98 fi
99 if $PINLOCK; then
100 ARGS="$ARGS -p"
101 fi
102 if $KEYLOCK; then
103 ARGS="$ARGS -k"
104 fi
106 exec_with_ssh "stop unity8"
107 exec_with_ssh "start maliit-server"
108 exec_with_ssh "cd $CODE_DIR/ && ./run $ARGS -- $RUN_OPTIONS"
109 exec_with_ssh "stop maliit-server"
110 exec_with_ssh "start unity8"
113set -- `getopt -n$0 -u -a --longoptions="setup,gdb,pinlock,keylock,help" "sgpkh" "$@"`
115# FIXME: giving incorrect arguments does not call usage and exit
116while [ $# -gt 0 ]
117do
118 case "$1" in
119 -s|--setup) SETUP=true;;
120 -g|--gdb) GDB=true;;
121 -p|--pinlock) PINLOCK=true;;
122 -k|--keylock) KEYLOCK=true;;
123 -h|--help) usage;;
124 --) shift;break;;
125 esac
126 shift
127done
130adb_root
131[ "${TARGET_IP}" = "127.0.0.1" ] && setup_adb_forwarding
133if [ "`adb shell 'grep -q Ubuntu /etc/lsb-release 2> /dev/null && echo -n FLIPPED'`" = "FLIPPED" ]; then
134 FLIPPED=true
135 CHROOT_PREFIX=""
136 if [ "${TARGET_IP}" != "127.0.0.1" ]; then
137 echo "ERROR: Flipped image detected, adb over TCP/IP isn't supported, yet :/"
138 echo "Unset TARGET_IP and try again."
139 exit 2
140 fi
141fi
143status_output=$(exec_with_adb initctl status ssh)
144if [[ $status_output == "ssh start/running, process "* ]]; then
145 SSH_WAS_STARTED=1
146fi
147SSH_STARTED=$SSH_WAS_STARTED
149if $SETUP; then
150 echo "Setting up environment for building shell.."
151 install_ssh_key
152 install_dependencies
153 sync_code
154else
155 echo "Transferring code.."
156 sync_code
157 echo "Building.."
158 build
159 echo "Running.."
160 run
161fi
163if [ $SSH_WAS_STARTED -eq 0 ]; then
164 exec_with_adb initctl stop ssh
165fi