blob: f1148fd9a14200922ec825dd60ec16a4478cef71 (
plain)
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
|
#!/bin/sh
#
# Copyright (C) 2014, Jaguar Land Rover
#
# This program is licensed under the terms and conditions of the
# Mozilla Public License, version 2.0. The full text of the
# Mozilla Public License is at https://www.mozilla.org/MPL/2.0/
#
#
# Setup an RVI release
#
#
SELF_DIR=$(dirname $(readlink -f "$0"))
SETUP_GEN=$SELF_DIR/setup_gen # Ulf's kitchen sink setup utility
usage() {
echo "Usage: $0 -r root_pub_key [-d device_key_pair] [-l log_dir ] [-s prefix_strip] target_dir"
echo
echo "Install a built RVI system into a target directory"
echo
echo "NOTE: The last component of 'taget_dir' must be named 'rvi_core'"
echo " Example: /opt/rvi_core"
echo
echo "-l log_dir - Log directory. Default: ${target_dir}/log."
echo "-s prefix_strip - See below. Default: nil."
echo "-r root_pub_key - Public root key to use. See below."
echo
echo "The created node can be started with: 'target'/rvi_ctl"
echo "The RVI installation will rely on a separate erlang install"
echo "to run."
echo
echo "PREFIX STRIPPING"
echo " If '-s prefix_strip' is provided, that part of the directories above"
echo " will be stripped of the given prefix in all internlal references."
echo " This is useful in debian and other build systems."
echo
echo " If, for example, 'target_dir' is './build/root/usr/bin', and"
echo " 'prefix_strip' is './build/root', all internal references"
echo " in the files installed under './build/root/usr/bin' will"
echo " reference '/usr/bin'."
echo
echo "ROOT KEY"
echo " The root key is used to validate remote certificates."
echo "
exit 1
}
TARGET_DIR=""
LIB_DIR=""
LOG_DIR=""
while getopts "s:l:" o; do
case "${o}" in
l)
LOG_DIR=${OPTARG}
;;
s)
PREFIX_STRIP=${OPTARG}
;;
*)
usage
;;
esac
done
shift $((${OPTIND}-1))
if [ "${#}" = "0" ]
then
echo "ERROR: Missing 'target_dir'."
echo
usage
fi
if [ "${#}" != "1" ]
then
echo "ERROR: Wrong number of arguments."
echo
usage
fi
TARGET_DIR=${1}
if [ $(basename ${TARGET_DIR}) != "rvi_core" ]
then
echo "ERROR: Last component of 'target_dir' must be named rvi_core."
echo " Example: $(dirname ${TARGET_DIR})/rvi_core"
echo
exit 255
fi
# For now LIB_DIR is always same as TARGET_DIR
LIB_DIR=${TARGET_DIR}
if [ -z "${LOG_DIR}" ]
then
LOG_DIR=${TARGET_DIR}/log
fi
rm -rf ${LIB_DIR} ${TARGET_DIR} > /dev/null 2>&1
install -m 0755 -d ${TARGET_DIR}
install -m 0755 -d ${LIB_DIR}
install -m 0755 -d ${LOG_DIR}
FILE_SET=$(find ebin components deps -name ebin -o -name priv)
tar cf - ${FILE_SET} | (cd ${LIB_DIR} ; tar xf - )
# Patch up the rvi with the correct directories.
if [ -s "${PREFIX_STRIP}" ]
then
STRIP_TARGET_DIR=$(echo ${TARGET_DIR} | sed "s|^${PREFIX_STRIP}||")
STRIP_LIB_DIR=$(echo ${LIB_DIR} | sed "s|^${PREFIX_STRIP}||")
STRIP_LOG_DIR=$(echo ${LOG_DIR} | sed "s|^${PREFIX_STRIP}||")
else
STRIP_TARGET_DIR=${TARGET_DIR}
STRIP_LIB_DIR=${LIB_DIR}
STRIP_LOG_DIR=${LOG_DIR}
fi
sed -e "s|__RVI_LIBDIR__|${STRIP_LIB_DIR}|g" \
-e "s|__RVI_BINDIR__|${STRIP_TARGET_DIR}|g" \
-e "s|__RVI_LOGDIR__|${STRIP_LOG_DIR}|g" < scripts/rvi_ctl > /tmp/rvi_ctl
install -m 0755 /tmp/rvi_ctl ${TARGET_DIR}
install -m 0755 scripts/setup_gen ${TARGET_DIR}
install -m 0755 rel/files/nodetool ${TARGET_DIR}
install -m 0755 python/rvi_service.py ${TARGET_DIR}/rvi_service
install -m 0755 python/rvi_call.py ${TARGET_DIR}/rvi_call
install -m 0644 python/rvilib.py ${TARGET_DIR}
install -m 0755 python/rvi_get_services.py ${TARGET_DIR}/rvi_get_services
install -m 0755 -D priv/config/rvi_common.config ${TARGET_DIR}/priv/config/rvi_common.config
echo "RVI binary files installed under ${TARGET_DIR}"
# echo "RVI library files installed under ${LIB_DIR}"
echo "RVI will log to ${LOG_DIR}"
echo
echo "Start: ${TARGET_DIR}/rvi_ctl -c <config_file> start"
echo "Attach started RVI: ${TARGET_DIR}/rvi_ctl attach"
echo "Stop: ${TARGET_DIR}/rvi_ctl stop"
echo "Start console mode: ${TARGET_DIR}/rvi_ctl -c <config_file> console"
echo
exit 0
|