diff options
Diffstat (limited to 'scripts/rvi_install')
-rwxr-xr-x | scripts/rvi_install | 151 |
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 + |