summaryrefslogtreecommitdiff
path: root/deps/rabbit/scripts/rabbitmq-env
diff options
context:
space:
mode:
Diffstat (limited to 'deps/rabbit/scripts/rabbitmq-env')
-rwxr-xr-xdeps/rabbit/scripts/rabbitmq-env190
1 files changed, 190 insertions, 0 deletions
diff --git a/deps/rabbit/scripts/rabbitmq-env b/deps/rabbit/scripts/rabbitmq-env
new file mode 100755
index 0000000000..90702c43bb
--- /dev/null
+++ b/deps/rabbit/scripts/rabbitmq-env
@@ -0,0 +1,190 @@
+#!/bin/sh -e
+## This Source Code Form is subject to the terms of the Mozilla Public
+## License, v. 2.0. If a copy of the MPL was not distributed with this
+## file, You can obtain one at https://mozilla.org/MPL/2.0/.
+##
+## Copyright (c) 2007-2020 VMware, Inc. or its affiliates. All rights reserved.
+##
+
+if [ "$RABBITMQ_ENV_LOADED" = 1 ]; then
+ return 0;
+fi
+
+if [ -z "$RABBITMQ_SCRIPTS_DIR" ]; then
+ # We set +e here since since our test for "readlink -f" below needs to
+ # be able to fail.
+ set +e
+ # Determine where this script is really located (if this script is
+ # invoked from another script, this is the location of the caller)
+ SCRIPT_PATH="$0"
+ while [ -h "$SCRIPT_PATH" ] ; do
+ # Determine if readlink -f is supported at all. TODO clean this up.
+ FULL_PATH=`readlink -f $SCRIPT_PATH 2>/dev/null`
+ if [ "$?" != "0" ]; then
+ REL_PATH=`readlink $SCRIPT_PATH`
+ if expr "$REL_PATH" : '/.*' > /dev/null; then
+ SCRIPT_PATH="$REL_PATH"
+ else
+ SCRIPT_PATH="`dirname "$SCRIPT_PATH"`/$REL_PATH"
+ fi
+ else
+ SCRIPT_PATH=$FULL_PATH
+ fi
+ done
+ set -e
+
+ RABBITMQ_SCRIPTS_DIR=`dirname $SCRIPT_PATH`
+fi
+
+_rmq_env_now()
+{
+ date '+%Y-%m-%d %H:%M:%S'
+}
+
+_rmq_env_print()
+{
+ _rmq_env_tmp="$1"
+ _rmq_env_tmp_len="${#_rmq_env_tmp}"
+ shift
+ printf '%s %s %s\n' "$(_rmq_env_now)" "$_rmq_env_tmp" "$1" 1>&2
+ shift
+ _rmq_env_print_line=''
+ _rmq_env_indent="$((_rmq_env_tmp_len + 21))"
+ for _rmq_env_print_line in "$@"
+ do
+ printf "%${_rmq_env_indent}s%s\n" ' ' "$_rmq_env_print_line" 1>&2
+ done
+ unset _rmq_env_print_line
+ unset _rmq_env_indent
+ unset _rmq_env_tmp_len
+ unset _rmq_env_tmp
+}
+
+_rmq_env_perr()
+{
+ _rmq_env_print '[error]' "$@"
+}
+
+_rmq_env_pwarn()
+{
+ _rmq_env_print '[warning]' "$@"
+}
+
+rmq_realpath() {
+ local path=$1
+
+ if [ -d "$path" ]; then
+ cd "$path" && pwd
+ elif [ -f "$path" ]; then
+ cd "$(dirname "$path")" && echo $(pwd)/$(basename "$path")
+ else
+ echo "$path"
+ fi
+}
+
+RABBITMQ_HOME="$(rmq_realpath "${RABBITMQ_SCRIPTS_DIR}/..")"
+ESCRIPT_DIR="${RABBITMQ_HOME}/escript"
+
+## Set defaults
+. ${RABBITMQ_SCRIPTS_DIR}/rabbitmq-defaults
+
+# We save the current value of $RABBITMQ_PID_FILE in case it was set by
+# an init script. If $CONF_ENV_FILE overrides it again, we must ignore
+# it and warn the user.
+saved_RABBITMQ_PID_FILE="$RABBITMQ_PID_FILE"
+
+## Get configuration variables from the configure environment file
+[ "x" = "x$RABBITMQ_CONF_ENV_FILE" ] && RABBITMQ_CONF_ENV_FILE=${CONF_ENV_FILE}
+if [ -f "${RABBITMQ_CONF_ENV_FILE}" ]; then
+ CONF_ENV_FILE_PHASE=rabbitmq-env
+ . ${RABBITMQ_CONF_ENV_FILE} || true
+fi
+
+[ -n "$ERL_EPMD_PORT" ] && export ERL_EPMD_PORT
+[ -n "$ERL_EPMD_ADDRESS" ] && export ERL_EPMD_ADDRESS
+
+DEFAULT_SCHEDULER_BIND_TYPE="db"
+[ -n "$SCHEDULER_BIND_TYPE" ] || SCHEDULER_BIND_TYPE="$DEFAULT_SCHEDULER_BIND_TYPE"
+[ -n "$RABBITMQ_SCHEDULER_BIND_TYPE" ] || RABBITMQ_SCHEDULER_BIND_TYPE="$SCHEDULER_BIND_TYPE"
+
+DEFAULT_DISTRIBUTION_BUFFER_SIZE=128000
+[ -n "$DISTRIBUTION_BUFFER_SIZE" ] || DISTRIBUTION_BUFFER_SIZE="$DEFAULT_DISTRIBUTION_BUFFER_SIZE"
+[ -n "$RABBITMQ_DISTRIBUTION_BUFFER_SIZE" ] || RABBITMQ_DISTRIBUTION_BUFFER_SIZE="$DISTRIBUTION_BUFFER_SIZE"
+
+DEFAULT_MAX_NUMBER_OF_PROCESSES=1048576
+[ -n "$MAX_NUMBER_OF_PROCESSES" ] || MAX_NUMBER_OF_PROCESSES="$DEFAULT_MAX_NUMBER_OF_PROCESSES"
+[ -n "$RABBITMQ_MAX_NUMBER_OF_PROCESSES" ] || RABBITMQ_MAX_NUMBER_OF_PROCESSES="$MAX_NUMBER_OF_PROCESSES"
+
+DEFAULT_MAX_NUMBER_OF_ATOMS=5000000
+[ -n "$MAX_NUMBER_OF_ATOMS" ] || MAX_NUMBER_OF_ATOMS="$DEFAULT_MAX_NUMBER_OF_ATOMS"
+[ -n "$RABBITMQ_MAX_NUMBER_OF_ATOMS" ] || RABBITMQ_MAX_NUMBER_OF_ATOMS="$MAX_NUMBER_OF_ATOMS"
+
+## Common server defaults
+SERVER_ERL_ARGS=" +P $RABBITMQ_MAX_NUMBER_OF_PROCESSES +t $RABBITMQ_MAX_NUMBER_OF_ATOMS +stbt $RABBITMQ_SCHEDULER_BIND_TYPE +zdbbl $RABBITMQ_DISTRIBUTION_BUFFER_SIZE "
+
+##--- Set environment vars RABBITMQ_<var_name> to defaults if not set
+
+[ "x" = "x$RABBITMQ_CTL_ERL_ARGS" ] && RABBITMQ_CTL_ERL_ARGS="$CTL_ERL_ARGS"
+[ "x" = "x$RABBITMQ_CTL_DIST_PORT_MIN" ] && RABBITMQ_CTL_DIST_PORT_MIN="$CTL_DIST_PORT_MIN"
+[ "x" = "x$RABBITMQ_CTL_DIST_PORT_MAX" ] && RABBITMQ_CTL_DIST_PORT_MAX="$CTL_DIST_PORT_MAX"
+[ "x" = "x$RABBITMQ_CTL_DIST_PORT_MIN" ] && RABBITMQ_CTL_DIST_PORT_MIN='35672'
+[ "x" = "x$RABBITMQ_CTL_DIST_PORT_MAX" ] && RABBITMQ_CTL_DIST_PORT_MAX="$(($RABBITMQ_CTL_DIST_PORT_MIN + 10))"
+
+[ "x" = "x$RABBITMQ_SERVER_ERL_ARGS" ] && RABBITMQ_SERVER_ERL_ARGS=${SERVER_ERL_ARGS}
+[ "x" = "x$RABBITMQ_SERVER_START_ARGS" ] && RABBITMQ_SERVER_START_ARGS=${SERVER_START_ARGS}
+[ "x" = "x$RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS" ] && RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS=${SERVER_ADDITIONAL_ERL_ARGS}
+[ "x" = "x$RABBITMQ_SERVER_CODE_PATH" ] && RABBITMQ_SERVER_CODE_PATH=${SERVER_CODE_PATH}
+[ "x" = "x$RABBITMQ_IGNORE_SIGINT" ] && RABBITMQ_IGNORE_SIGINT="true"
+[ "xtrue" = "x$RABBITMQ_IGNORE_SIGINT" ] && RABBITMQ_IGNORE_SIGINT_FLAG="+B i"
+
+if [ -n "$saved_RABBITMQ_PID_FILE" ] && \
+ [ "$saved_RABBITMQ_PID_FILE" != "$RABBITMQ_PID_FILE" ]
+then
+ _rmq_env_pwarn 'RABBITMQ_PID_FILE was already set by the init script to:' \
+ "$saved_RABBITMQ_PID_FILE" \
+ 'The value set in rabbitmq-env.conf is ignored because it would break the init script.'
+
+ RABBITMQ_PID_FILE="$saved_RABBITMQ_PID_FILE"
+fi
+
+[ "x" = "x$RABBITMQ_BOOT_MODULE" ] && RABBITMQ_BOOT_MODULE=${BOOT_MODULE}
+
+##--- End of overridden <var_name> variables
+
+_rmq_env_set_erl_libs()
+{
+ if [ -n "$ERL_LIBS" ]
+ then
+ export ERL_LIBS="$RABBITMQ_HOME/plugins:$ERL_LIBS"
+ else
+ export ERL_LIBS="$RABBITMQ_HOME/plugins"
+ fi
+}
+
+run_escript()
+{
+ escript_main="${1:?escript_main must be defined}"
+ shift
+ escript="${1:?escript must be defined}"
+ shift
+
+ _rmq_env_set_erl_libs
+
+ # Important: do not quote RABBITMQ_CTL_ERL_ARGS as they must be
+ # word-split
+ # shellcheck disable=SC2086
+ exec erl +B \
+ -boot "$CLEAN_BOOT_FILE" \
+ -noinput -noshell -hidden -smp enable \
+ $RABBITMQ_CTL_ERL_ARGS \
+ -kernel inet_dist_listen_min "$RABBITMQ_CTL_DIST_PORT_MIN" \
+ -kernel inet_dist_listen_max "$RABBITMQ_CTL_DIST_PORT_MAX" \
+ -run escript start \
+ -escript main "$escript_main" \
+ -extra "$escript" "$@"
+}
+
+RABBITMQ_ENV_LOADED=1
+
+# Since we source this elsewhere, don't accidentally stop execution
+true