diff options
Diffstat (limited to 'priv/templates/bin.dtl')
-rwxr-xr-x[-rw-r--r--] | priv/templates/bin.dtl | 68 |
1 files changed, 43 insertions, 25 deletions
diff --git a/priv/templates/bin.dtl b/priv/templates/bin.dtl index 067e9f7..4434552 100644..100755 --- a/priv/templates/bin.dtl +++ b/priv/templates/bin.dtl @@ -2,43 +2,61 @@ set -e -SCRIPT_DIR=`dirname $0` -RELEASE_ROOT_DIR=`cd $SCRIPT_DIR/.. && pwd` -REL_NAME={{ rel_name }} -REL_VSN={{ rel_vsn }} -ERTS_VSN={{ erts_vsn }} -REL_DIR=$RELEASE_ROOT_DIR/releases/$REL_VSN -ERL_OPTS={{ erl_opts }} +SCRIPT_DIR="$(dirname "$0")" +RELEASE_ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" +REL_NAME="{{ rel_name }}" +REL_VSN="{{ rel_vsn }}" +ERTS_VSN="{{ erts_vsn }}" +REL_DIR="$RELEASE_ROOT_DIR/releases/$REL_VSN" +ERL_OPTS="{{ erl_opts }}" find_erts_dir() { - local erts_dir=$RELEASE_ROOT_DIR/erts-$ERTS_VSN + local erts_dir="$RELEASE_ROOT_DIR/erts-$ERTS_VSN" if [ -d "$erts_dir" ]; then - ERTS_DIR=$erts_dir; - ROOTDIR=$RELEASE_ROOT_DIR + ERTS_DIR="$erts_dir"; + ROOTDIR="$RELEASE_ROOT_DIR" else - local erl=`which erl` - local erl_root=`$erl -noshell -eval "io:format(\\"~s\\", [code:root_dir()])." -s init stop` - ERTS_DIR=$erl_root/erts-$ERTS_VSN - ROOTDIR=$erl_root + local erl="$(which erl)" + local erl_root="$("$erl" -noshell -eval "io:format(\\"~s\\", [code:root_dir()])." -s init stop)" + ERTS_DIR="$erl_root/erts-$ERTS_VSN" + ROOTDIR="$erl_root" fi } find_sys_config() { - local possible_sys=$REL_DIR/sys.config + local possible_sys="$REL_DIR/sys.config" if [ -f "$possible_sys" ]; then - SYS_CONFIG="-config $possible_sys" + SYS_CONFIG="$possible_sys" + fi +} + +find_vm_args() { + local possible_vm_args="$REL_DIR/vm.args" + if [ -f "$possible_vm_args" ]; then + VM_ARGS="$possible_vm_args" fi } find_erts_dir find_sys_config -export ROOTDIR=$RELEASE_ROOT_DIR -export BINDIR=$ERTS_DIR/bin -export EMU=beam -export PROGNAME=erl -export LD_LIBRARY_PATH=$ERTS_DIR/lib:$LD_LIBRARY_PATH - -cd $ROOTDIR - -$BINDIR/erlexec $ERL_OPTS $SYS_CONFIG -boot $REL_DIR/$REL_NAME $@ +find_vm_args +export ROOTDIR="$RELEASE_ROOT_DIR" +export BINDIR="$ERTS_DIR/bin" +export EMU="beam" +export PROGNAME="erl" +export LD_LIBRARY_PATH="$ERTS_DIR/lib:$LD_LIBRARY_PATH" + +cd "$ROOTDIR" + +# Save extra arguments +ARGS="$@" + +# Build arguments for erlexec +set -- "$ERL_OPTS" +[ "$SYS_CONFIG" ] && set -- "$@" -config "$SYS_CONFIG" +[ "$VM_ARGS" ] && set -- "$@" -args_file "$VM_ARGS" +set -- "$@" -boot "$REL_DIR/$REL_NAME" "$ARGS" + +# Boot the release +"$BINDIR/erlexec" "$@" |