Packages
relx
4.7.0
4.10.0
4.9.0
4.8.0
4.7.0
4.6.0
4.5.0
4.4.0
4.3.0
4.2.0
4.1.0
4.0.2
4.0.1
4.0.0
4.0.0-rc2
3.33.0
3.32.1
3.32.0
3.31.0
3.30.0
3.29.0
3.28.0
3.27.0
3.26.0
3.25.0
3.24.4
3.24.3
3.24.2
3.24.1
3.23.1
3.23.0
3.22.4
3.22.3
retired
3.22.2
3.22.1
retired
3.22.0
3.21.1
3.21.0
3.20.0
3.19.0
3.18.0
3.17.0
3.16.0
3.15.0
3.14.0
3.13.0
3.12.0
3.11.0
3.10.0
3.9.0
3.8.0
3.7.1
3.7.0
3.6.0
3.5.0
3.4.0
3.3.2
3.3.1
3.3.0
3.2.0
3.1.0
3.0.0
2.1.1
2.1.0
Release assembler for Erlang/OTP Releases
Current section
Files
Jump to
Current section
Files
priv/templates/bin
#!/bin/sh
set -e
SCRIPT=$(readlink "$0" || true)
if [ -z "$SCRIPT" ]; then
SCRIPT=$0
fi;
SCRIPT_DIR="$(cd "$(dirname "$SCRIPT")" && pwd -P)"
RELEASE_ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd -P)"
export REL_NAME="{{ rel_name }}"
REL_VSN="{{ rel_vsn }}"
# export these to match mix release environment variables
export RELEASE_NAME="{{ rel_name }}"
export RELEASE_VSN="{{ rel_vsn }}"
export RELEASE_PROG="${SCRIPT}"
ERTS_VSN="{{ erts_vsn }}"
REL_DIR="$RELEASE_ROOT_DIR/releases/$REL_VSN"
ERL_OPTS="{{ erl_opts }}"
export ESCRIPT_NAME="${ESCRIPT_NAME-$SCRIPT}"
find_erts_dir() {
__erts_dir="$RELEASE_ROOT_DIR/erts-$ERTS_VSN"
if [ -d "$__erts_dir" ]; then
ERTS_DIR="$__erts_dir";
else
__erl="$(command -v erl)"
code="io:format(\"~s\", [code:root_dir()]), halt()."
__erl_root="$("$__erl" -boot no_dot_erlang -noshell -eval "$code")"
ERTS_DIR="$__erl_root/erts-$ERTS_VSN"
fi
}
find_sys_config() {
__possible_sys="$REL_DIR/sys.config"
if [ -f "$__possible_sys" ]; then
SYS_CONFIG="$__possible_sys"
else
if [ -L "$__possible_sys".orig ]; then
mv "$__possible_sys".orig "$__possible_sys"
SYS_CONFIG="$__possible_sys"
fi
fi
}
find_vm_args() {
__possible_vm_args="$REL_DIR/vm.args"
if [ -f "$__possible_vm_args" ]; then
VM_ARGS="$__possible_vm_args"
else
if [ -L "$__possible_vm_args".orig ]; then
mv "$__possible_vm_args".orig "$__possible_vm_args"
VM_ARGS="$__possible_vm_args"
fi
fi
}
find_erts_dir
find_sys_config
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"
SYSTEM_LIB_DIR="$(dirname "$ERTS_DIR")/lib"
[ -f "$REL_DIR/$REL_NAME.boot" ] && BOOTFILE="$REL_NAME" || BOOTFILE=start
cd "$ROOTDIR"
{{! Define alternative field separator using ASCII US (unit separator). US is
not expected to appear in any argument. }}
IFS_NORM="$IFS"
IFS_ARGS="$(printf '\x1f')"
# Save extra arguments
{{! Join extra arguments into a US-delimited string. }}
IFS="$IFS_ARGS"
ARGS="$*"
IFS="$IFS_NORM"
# Build arguments for erlexec
set --
[ "$ERL_OPTS" ] && set -- "$@" "$ERL_OPTS"
[ "$SYS_CONFIG" ] && set -- "$@" -config "$SYS_CONFIG"
[ "$VM_ARGS" ] && set -- "$@" -args_file "$VM_ARGS"
set -- "$@" -boot_var SYSTEM_LIB_DIR "$SYSTEM_LIB_DIR" -boot "$REL_DIR/$BOOTFILE"
{{! Split string with extra arguments back into an argument list. }}
IFS="$IFS_ARGS"
# shellcheck disable=SC2086
set -- "$@" $ARGS
IFS="$IFS_NORM"
exec "$BINDIR/erlexec" "$@"