on 5ab40fb help sign in
unity8/run_on_device
145 lines 4.3 kB history raw
1#!/bin/sh
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"
21usage() {
22 echo "usage: run_on_device [OPTIONS]\n"
23 echo "Script to setup a build environment for the shell and sync build and run it on the device\n"
24 echo "OPTIONS:"
25 echo " -s, --setup Setup the build environment"
26 echo " -p, --pinlock Enable a PIN lock screen when running"
27 echo " -k, --keylock Enable a Keyboard lock screen when running"
28 echo ""
29 echo "IMPORTANT:"
30 echo " * Make sure to have the networking and PPAs setup on the device beforehand (phablet-deploy-networking && phablet-ppa-fetch)."
31 echo " * Execute that script from a directory containing a branch the shell code."
32 exit 1
35exec_with_ssh() {
36 ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -t $USER@$TARGET_IP -p $TARGET_SSH_PORT sudo -u $USER -i bash -ic \"$@\"
39exec_with_adb() {
40 if $FLIPPED; then
41 adb shell $@
42 else
43 adb shell chroot /data/ubuntu /usr/bin/env -i PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin "$@"
44 fi
47adb_root() {
48 adb root
49 adb wait-for-device
52install_ssh_key() {
53 ssh-keygen -R $TARGET_IP
54 HOME_DIR="${CHROOT_PREFIX}/home/phablet"
55 adb push ~/.ssh/id_rsa.pub $HOME_DIR/.ssh/authorized_keys
56 adb shell chown $USER_ID:$USER_ID $HOME_DIR/.ssh
57 adb shell chown $USER_ID:$USER_ID $HOME_DIR/.ssh/authorized_keys
58 adb shell chmod 700 $HOME_DIR/.ssh
59 adb shell chmod 600 $HOME_DIR/.ssh/authorized_keys
62setup_adb_forwarding() {
63 adb forward tcp:$TARGET_SSH_PORT tcp:22
64 adb forward tcp:$TARGET_DEBUG_PORT tcp:$TARGET_DEBUG_PORT
67install_dependencies() {
68 exec_with_adb apt-get update
69 exec_with_adb apt-get -y install openssh-server
70 exec_with_ssh $SUDO apt-get -y install build-essential rsync bzr ccache gdb ninja-build devscripts equivs
73sync_code() {
74 [ -e .bzr ] && bzr export --uncommitted --format=dir /tmp/$CODE_DIR
75 [ -e .git ] && git checkout-index -a -f --prefix=/tmp/$CODE_DIR/
76 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/
77 rm -rf /tmp/$CODE_DIR
80build() {
81 exec_with_ssh "[ $CODE_DIR/debian/control -nt unity8-build-deps*deb ] && $SUDO mk-build-deps --tool=\\\"apt-get -y --no-install-recommends\\\" --build-dep --install $CODE_DIR/debian/control"
82 exec_with_ssh PATH=/usr/lib/ccache:$PATH "cd $CODE_DIR/ && PATH=/usr/lib/ccache:$PATH ./build"
85run() {
86 ARGS="--nomousetouch"
87 if $GDB; then
88 ARGS="$ARGS --gdb"
89 fi
90 if $PINLOCK; then
91 ARGS="$ARGS -p"
92 fi
93 if $KEYLOCK; then
94 ARGS="$ARGS -k"
95 fi
97 exec_with_ssh "stop unity8"
98 exec_with_ssh "cd $CODE_DIR/ && ./run $ARGS -- $RUN_OPTIONS"
99 exec_with_ssh "start unity8"
102set -- `getopt -n$0 -u -a --longoptions="setup,gdb,pinlock,keylock,help" "sgpkh" "$@"`
104# FIXME: giving incorrect arguments does not call usage and exit
105while [ $# -gt 0 ]
106do
107 case "$1" in
108 -s|--setup) SETUP=true;;
109 -g|--gdb) GDB=true;;
110 -p|--pinlock) PINLOCK=true;;
111 -k|--keylock) KEYLOCK=true;;
112 -h|--help) usage;;
113 --) shift;break;;
114 esac
115 shift
116done
119adb_root
120[ "${TARGET_IP}" = "127.0.0.1" ] && setup_adb_forwarding
122if [ "`adb shell 'grep -q Ubuntu /etc/lsb-release 2> /dev/null && echo -n FLIPPED'`" = "FLIPPED" ]; then
123 FLIPPED=true
124 CHROOT_PREFIX=""
125 if [ "${TARGET_IP}" != "127.0.0.1" ]; then
126 echo "ERROR: Flipped image detected, adb over TCP/IP isn't supported, yet :/"
127 echo "Unset TARGET_IP and try again."
128 exit 2
129 fi
130fi
132if $SETUP; then
133 echo "Setting up environment for building shell.."
134 install_ssh_key
135 install_dependencies
136 sync_code
137else
138 echo "Transferring code.."
139 sync_code
140 echo "Building.."
141 build
142 echo "Running.."
143 run
144fi