-
Notifications
You must be signed in to change notification settings - Fork 16
/
run_on_device.sh
executable file
·94 lines (81 loc) · 2.82 KB
/
run_on_device.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#!/bin/sh
CODE_DIR=guh
BUILD_DIR=builddir
USER=root
USER_ID=0
PASSWORD=hive
BINARY=guh
TARGET_IP=${TARGET_IP-10.10.10.108}
TARGET_SSH_PORT=22
TARGET_DEBUG_PORT=3768
RUN_OPTIONS=-qmljsdebugger=port:$TARGET_DEBUG_PORT
SETUP=false
GDB=false
SUDO="echo $PASSWORD | sudo -S"
NUM_JOBS='$(( `grep -c ^processor /proc/cpuinfo` + 1 ))'
FLIPPED=false
usage() {
echo "usage: run_on_device [OPTIONS]\n"
echo "Script to setup a build environment and sync build and run $BINARY on the device\n"
echo "OPTIONS:"
echo " -s, --setup Setup the build environment"
echo ""
echo "IMPORTANT:"
echo " * Make sure to have networking setup on the device beforehand."
echo " * Execute that script from a directory containing $PACKAGE code."
exit 1
}
exec_with_ssh() {
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -t $USER@$TARGET_IP -p $TARGET_SSH_PORT sudo -u $USER -i bash -ic \"$@\"
}
install_ssh_key() {
ssh-keygen -R $TARGET_IP
ssh-copy-id $USER@$TARGET_IP
}
install_dependencies() {
exec_with_ssh $SUDO apt-get -y install build-essential gcc-4.7 g++-4.7 ccache gdb openssh
echo "** Switching system to gcc 4.7 ***"
exec_with_ssh update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.7
}
sync_code() {
WORK_DIR=`pwd`
[ -e .bzr ] && bzr export --uncommitted --format=dir /tmp/$CODE_DIR
[ -e .git ] && cd /tmp && cp -r $WORK_DIR $CODE_DIR && cd $CODE_DIR && git clean -f -x && rm .git -rf && cd -
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/
rm -rf /tmp/$CODE_DIR
}
build() {
exec_with_ssh mkdir -p $CODE_DIR/$BUILD_DIR
exec_with_ssh PATH="/usr/lib/ccache:$PATH" ccache -s
exec_with_ssh QT_SELECT=qt5 PATH=/usr/local/qt5/bin:/usr/lib/ccache:$PATH "cd $CODE_DIR/$BUILD_DIR && PATH=/usr/local/qt5/bin:/usr/lib/ccache:$PATH CC='ccache gcc' qmake .. CONFIG+=boblight"
exec_with_ssh PATH=/usr/lib/ccache:$PATH "cd $CODE_DIR/$BUILD_DIR && PATH=/usr/lib/ccache:$PATH make -j2"
}
run() {
exec_with_ssh "LD_LIBRARY_PATH=$CODE_DIR/$BUILD_DIR/libguh $CODE_DIR/$BUILD_DIR/server/$BINARY"
}
set -- `getopt -n$0 -u -a --longoptions="setup,gdbhelp" "sgh" "$@"`
# FIXME: giving incorrect arguments does not call usage and exit
while [ $# -gt 0 ]
do
case "$1" in
-s|--setup) SETUP=true;;
-g|--gdb) GDB=true;;
-h|--help) usage;;
--) shift;break;;
esac
shift
done
if $SETUP; then
echo "Setting up environment for building $PACKAGE..."
install_ssh_key
install_dependencies
sync_code
else
echo "Transferring code.."
sync_code
export PATH="/usr/local/qt5/:$PATH"
echo "Building.."
build
echo "Running.."
run
fi