summaryrefslogtreecommitdiff
path: root/scripts/rvi_install
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/rvi_install')
-rwxr-xr-xscripts/rvi_install151
1 files changed, 151 insertions, 0 deletions
diff --git a/scripts/rvi_install b/scripts/rvi_install
new file mode 100755
index 0000000..f1148fd
--- /dev/null
+++ b/scripts/rvi_install
@@ -0,0 +1,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
+