summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--Makefile75
-rw-r--r--erlang.mk130
-rw-r--r--packaging/RPMS/Fedora/Makefile3
-rw-r--r--packaging/debs/Debian/Makefile3
-rw-r--r--packaging/generic-unix/Makefile3
-rw-r--r--packaging/standalone/Makefile22
-rw-r--r--packaging/standalone/src/rabbit_release.erl4
-rw-r--r--packaging/windows-exe/Makefile5
-rw-r--r--packaging/windows/Makefile3
-rw-r--r--rabbitmq-components.mk14
-rw-r--r--scripts/rabbitmq-defaults.bat80
-rw-r--r--scripts/rabbitmq-echopid.bat110
-rw-r--r--scripts/rabbitmq-env38
-rw-r--r--scripts/rabbitmq-env.bat592
-rw-r--r--scripts/rabbitmq-plugins.bat2
-rw-r--r--scripts/rabbitmq-server.bat2
-rw-r--r--scripts/rabbitmq-service.bat7
-rw-r--r--scripts/rabbitmqctl.bat2
-rw-r--r--src/rabbit_disk_monitor.erl15
-rw-r--r--src/rabbit_queue_location_validator.erl17
-rw-r--r--src/rabbit_queue_master_location_misc.erl39
22 files changed, 722 insertions, 445 deletions
diff --git a/.gitignore b/.gitignore
index 902eaa6f84..c631e6dfde 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
+*~
.sw?
.*.sw?
*.beam
diff --git a/Makefile b/Makefile
index b0b334639a..e1a2169a26 100644
--- a/Makefile
+++ b/Makefile
@@ -17,10 +17,9 @@ WEB_MANPAGES = $(patsubst %.xml, %.man.xml, $(wildcard $(DOCS_DIR)/*.[0-9].xml)
USAGES_XML = $(DOCS_DIR)/rabbitmqctl.1.xml $(DOCS_DIR)/rabbitmq-plugins.1.xml
USAGES_ERL = $(foreach XML, $(USAGES_XML), $(call usage_xml_to_erl, $(XML)))
-.DEFAULT_GOAL = all
-
EXTRA_SOURCES += $(USAGES_ERL)
+.DEFAULT_GOAL = all
$(PROJECT).d:: $(EXTRA_SOURCES)
DEP_PLUGINS = rabbit_common/mk/rabbitmq-run.mk \
@@ -41,6 +40,8 @@ include rabbitmq-components.mk
DISTRIBUTED_DEPS := $(filter-out \
rabbit \
rabbitmq_test \
+ rabbitmq_metronome \
+ rabbitmq_toke \
rabbitmq_java_client \
rabbitmq_dotnet_client \
$(DEPS), \
@@ -73,7 +74,7 @@ ifdef CREDIT_FLOW_TRACING
RMQ_ERLC_OPTS += -DCREDIT_FLOW_TRACING=true
endif
-ERTS_VER = $(shell erl -version 2>&1 | sed -E 's/.* version //')
+ERTS_VER := $(shell erl -version 2>&1 | sed -E 's/.* version //')
USE_SPECS_MIN_ERTS_VER = 5.11
ifeq ($(call compare_version,$(ERTS_VER),$(USE_SPECS_MIN_ERTS_VER),>=),true)
RMQ_ERLC_OPTS += -Duse_specs
@@ -82,7 +83,7 @@ endif
ifndef USE_PROPER_QC
# PropEr needs to be installed for property checking
# http://proper.softlab.ntua.gr/
-USE_PROPER_QC = $(shell $(ERL) -eval 'io:format({module, proper} =:= code:ensure_loaded(proper)), halt().')
+USE_PROPER_QC := $(shell $(ERL) -eval 'io:format({module, proper} =:= code:ensure_loaded(proper)), halt().')
RMQ_ERLC_OPTS += $(if $(filter true,$(USE_PROPER_QC)),-Duse_proper_qc)
endif
@@ -189,6 +190,10 @@ RSYNC_FLAGS += -a $(RSYNC_V) \
--exclude 'plugins/' \
--exclude '$(notdir $(DIST_DIR))/' \
--exclude '/$(SOURCE_DIST_BASE)-*' \
+ --exclude '/cowboy/doc/' \
+ --exclude '/cowboy/examples/' \
+ --exclude '/rabbitmq_mqtt/test/build/' \
+ --exclude '/rabbitmq_mqtt/test/test_client/'\
--delete \
--delete-excluded
@@ -210,9 +215,13 @@ ZIP_V = $(ZIP_V_$(V))
$(SOURCE_DIST): $(ERLANG_MK_RECURSIVE_DEPS_LIST)
$(gen_verbose) $(RSYNC) $(RSYNC_FLAGS) ./ $(SOURCE_DIST)/
+ $(verbose) sed -E -i.bak \
+ -e 's/[{]vsn[[:blank:]]*,[^}]+}/{vsn, "$(VERSION)"}/' \
+ $(SOURCE_DIST)/src/$(PROJECT).app.src && \
+ rm $(SOURCE_DIST)/src/$(PROJECT).app.src.bak
$(verbose) cat packaging/common/LICENSE.head > $(SOURCE_DIST)/LICENSE
- $(verbose) mkdir -p $(SOURCE_DIST)/deps
- $(verbose) for dep in $$(cat $(ERLANG_MK_RECURSIVE_DEPS_LIST) | grep -v '/rabbit$$'); do \
+ $(verbose) mkdir -p $(SOURCE_DIST)/deps/licensing
+ $(verbose) for dep in $$(cat $(ERLANG_MK_RECURSIVE_DEPS_LIST) | grep -v '/$(PROJECT)$$' | LC_COLLATE=C sort); do \
$(RSYNC) $(RSYNC_FLAGS) \
$$dep \
$(SOURCE_DIST)/deps; \
@@ -222,31 +231,44 @@ $(SOURCE_DIST): $(ERLANG_MK_RECURSIVE_DEPS_LIST)
rm $(SOURCE_DIST)/deps/$$(basename $$dep)/erlang.mk.bak; \
fi; \
if test -f "$$dep/license_info"; then \
+ cp "$$dep/license_info" "$(SOURCE_DIST)/deps/licensing/license_info_$$(basename "$$dep")"; \
cat "$$dep/license_info" >> $(SOURCE_DIST)/LICENSE; \
fi; \
+ find "$$dep" -maxdepth 1 -name 'LICENSE-*' -exec cp '{}' $(SOURCE_DIST)/deps/licensing \; ; \
done
$(verbose) cat packaging/common/LICENSE.tail >> $(SOURCE_DIST)/LICENSE
+ $(verbose) find $(SOURCE_DIST)/deps/licensing -name 'LICENSE-*' -exec cp '{}' $(SOURCE_DIST) \;
$(verbose) for file in $$(find $(SOURCE_DIST) -name '*.app.src'); do \
- sed -E -i.bak -e 's/[{]vsn[[:blank:]]*,[^}]+}/{vsn, "$(VERSION)"}/' $$file; \
+ sed -E -i.bak -e 's/[{]vsn[[:blank:]]*,[[:blank:]]*""[[:blank:]]*}/{vsn, "$(VERSION)"}/' $$file; \
rm $$file.bak; \
done
- $(verbose) echo "rabbit $$(git rev-parse HEAD) $$(git describe --tags --exact-match 2>/dev/null || git symbolic-ref -q --short HEAD)" > $(SOURCE_DIST)/git-revisions.txt
+ $(verbose) echo "$(PROJECT) $$(git rev-parse HEAD) $$(git describe --tags --exact-match 2>/dev/null || git symbolic-ref -q --short HEAD)" > $(SOURCE_DIST)/git-revisions.txt
$(verbose) for dep in $$(cat $(ERLANG_MK_RECURSIVE_DEPS_LIST)); do \
(cd $$dep; echo "$$(basename "$$dep") $$(git rev-parse HEAD) $$(git describe --tags --exact-match 2>/dev/null || git symbolic-ref -q --short HEAD)") >> $(SOURCE_DIST)/git-revisions.txt; \
done
+# TODO: Fix file timestamps to have reproducible source archives.
+# $(verbose) find $(SOURCE_DIST) -not -name 'git-revisions.txt' -print0 | xargs -0 touch -r $(SOURCE_DIST)/git-revisions.txt
+
$(SOURCE_DIST).tar.gz: $(SOURCE_DIST)
- $(gen_verbose) $(TAR) -cf - $(TAR_V) $(SOURCE_DIST) | $(GZIP) --best > $@
+ $(gen_verbose) find $(SOURCE_DIST) -print0 | LC_COLLATE=C sort -z | \
+ xargs -0 $(TAR) -cnf - $(TAR_V) | \
+ $(GZIP) --best > $@
$(SOURCE_DIST).tar.bz2: $(SOURCE_DIST)
- $(gen_verbose) $(TAR) -cf - $(TAR_V) $(SOURCE_DIST) | $(BZIP2) > $@
+ $(gen_verbose) find $(SOURCE_DIST) -print0 | LC_COLLATE=C sort -z | \
+ xargs -0 $(TAR) -cnf - $(TAR_V) | \
+ $(BZIP2) > $@
$(SOURCE_DIST).tar.xz: $(SOURCE_DIST)
- $(gen_verbose) $(TAR) -cf - $(TAR_V) $(SOURCE_DIST) | $(XZ) > $@
+ $(gen_verbose) find $(SOURCE_DIST) -print0 | LC_COLLATE=C sort -z | \
+ xargs -0 $(TAR) -cnf - $(TAR_V) | \
+ $(XZ) > $@
$(SOURCE_DIST).zip: $(SOURCE_DIST)
$(verbose) rm -f $@
- $(gen_verbose) $(ZIP) -r $(ZIP_V) $@ $(SOURCE_DIST)
+ $(gen_verbose) find $(SOURCE_DIST) -print0 | LC_COLLATE=C sort -z | \
+ xargs -0 $(ZIP) $(ZIP_V) $@
clean:: clean-source-dist
@@ -294,19 +316,19 @@ install: install-erlapp install-scripts
install-erlapp: dist
$(verbose) mkdir -p $(DESTDIR)$(RMQ_ERLAPP_DIR)
- $(inst_verbose) cp -a include ebin plugins LICENSE* INSTALL \
+ $(inst_verbose) cp -r include ebin plugins LICENSE* INSTALL \
$(DESTDIR)$(RMQ_ERLAPP_DIR)
$(verbose) echo "Put your EZs here and use rabbitmq-plugins to enable them." \
> $(DESTDIR)$(RMQ_ERLAPP_DIR)/plugins/README
@# rabbitmq-common provides headers too: copy them to
@# rabbitmq_server/include.
- $(verbose) cp -a $(DEPS_DIR)/rabbit_common/include $(DESTDIR)$(RMQ_ERLAPP_DIR)
+ $(verbose) cp -r $(DEPS_DIR)/rabbit_common/include $(DESTDIR)$(RMQ_ERLAPP_DIR)
install-scripts:
$(verbose) mkdir -p $(DESTDIR)$(RMQ_ERLAPP_DIR)/sbin
$(inst_verbose) for script in $(SCRIPTS); do \
- cp -a "scripts/$$script" "$(DESTDIR)$(RMQ_ERLAPP_DIR)/sbin"; \
+ cp "scripts/$$script" "$(DESTDIR)$(RMQ_ERLAPP_DIR)/sbin"; \
chmod 0755 "$(DESTDIR)$(RMQ_ERLAPP_DIR)/sbin/$$script"; \
done
@@ -335,7 +357,7 @@ install-windows: install-windows-erlapp install-windows-scripts install-windows-
install-windows-erlapp: dist
$(verbose) mkdir -p $(DESTDIR)$(WINDOWS_PREFIX)
- $(inst_verbose) cp -a include ebin plugins LICENSE* INSTALL \
+ $(inst_verbose) cp -r include ebin plugins LICENSE* INSTALL \
$(DESTDIR)$(WINDOWS_PREFIX)
$(verbose) echo "Put your EZs here and use rabbitmq-plugins.bat to enable them." \
> $(DESTDIR)$(WINDOWS_PREFIX)/plugins/README.txt
@@ -343,12 +365,12 @@ install-windows-erlapp: dist
# rabbitmq-common provides headers too: copy them to
# rabbitmq_server/include.
- $(verbose) cp -a $(DEPS_DIR)/rabbit_common/include $(DESTDIR)$(WINDOWS_PREFIX)
+ $(verbose) cp -r $(DEPS_DIR)/rabbit_common/include $(DESTDIR)$(WINDOWS_PREFIX)
install-windows-scripts:
$(verbose) mkdir -p $(DESTDIR)$(WINDOWS_PREFIX)/sbin
$(inst_verbose) for script in $(WINDOWS_SCRIPTS); do \
- cp -a "scripts/$$script" "$(DESTDIR)$(WINDOWS_PREFIX)/sbin"; \
+ cp "scripts/$$script" "$(DESTDIR)$(WINDOWS_PREFIX)/sbin"; \
chmod 0755 "$(DESTDIR)$(WINDOWS_PREFIX)/sbin/$$script"; \
done
@@ -358,7 +380,7 @@ install-windows-docs: install-windows-erlapp
$(verbose) elinks -dump -no-references -no-numbering rabbitmq-service.html \
> $(DESTDIR)$(WINDOWS_PREFIX)/readme-service.txt
$(verbose) rm rabbitmq-service.html
- $(verbose) cp -a docs/rabbitmq.config.example $(DESTDIR)$(WINDOWS_PREFIX)/etc
+ $(verbose) cp docs/rabbitmq.config.example $(DESTDIR)$(WINDOWS_PREFIX)/etc
$(verbose) for file in $(DESTDIR)$(WINDOWS_PREFIX)/readme-service.txt \
$(DESTDIR)$(WINDOWS_PREFIX)/LICENSE* $(DESTDIR)$(WINDOWS_PREFIX)/INSTALL \
$(DESTDIR)$(WINDOWS_PREFIX)/etc/rabbitmq.config.example; do \
@@ -385,8 +407,7 @@ PACKAGES_DIR ?= $(abspath PACKAGES)
# archive.
PACKAGES_SOURCE_DIST_FILE ?= $(firstword $(SOURCE_DIST_FILES))
-packages: package-deb package-rpm package-windows package-standalone-macosx \
- package-generic-unix
+packages: package-deb package-rpm package-windows package-generic-unix
@:
package-deb: $(PACKAGES_SOURCE_DIST_FILE)
@@ -421,14 +442,18 @@ package-windows: $(PACKAGES_SOURCE_DIST_FILE)
PACKAGES_DIR=$(PACKAGES_DIR) \
all clean
-package-standalone-macosx: $(PACKAGES_SOURCE_DIST_FILE)
- $(gen_verbose) $(MAKE) -C packaging/standalone OS=mac \
+package-generic-unix: $(PACKAGES_SOURCE_DIST_FILE)
+ $(gen_verbose) $(MAKE) -C packaging/generic-unix \
SOURCE_DIST_FILE=$(abspath $(PACKAGES_SOURCE_DIST_FILE)) \
PACKAGES_DIR=$(PACKAGES_DIR) \
all clean
-package-generic-unix: $(PACKAGES_SOURCE_DIST_FILE)
- $(gen_verbose) $(MAKE) -C packaging/generic-unix \
+ifeq ($(PLATFORM),darwin)
+packages: package-standalone-macosx
+
+package-standalone-macosx: $(PACKAGES_SOURCE_DIST_FILE)
+ $(gen_verbose) $(MAKE) -C packaging/standalone OS=mac \
SOURCE_DIST_FILE=$(abspath $(PACKAGES_SOURCE_DIST_FILE)) \
PACKAGES_DIR=$(PACKAGES_DIR) \
all clean
+endif
diff --git a/erlang.mk b/erlang.mk
index 67ab11f7f5..6221ed0ef9 100644
--- a/erlang.mk
+++ b/erlang.mk
@@ -16,7 +16,7 @@
ERLANG_MK_FILENAME := $(realpath $(lastword $(MAKEFILE_LIST)))
-ERLANG_MK_VERSION = 1.2.0-839-g166b155-dirty
+ERLANG_MK_VERSION = 1.2.0-845-g2c9e05d-dirty
# Core configuration.
@@ -30,9 +30,11 @@ PROJECT_VERSION ?= rolling
V ?= 0
verbose_0 = @
+verbose_2 = set -x;
verbose = $(verbose_$(V))
gen_verbose_0 = @echo " GEN " $@;
+gen_verbose_2 = set -x;
gen_verbose = $(gen_verbose_$(V))
# Temporary files directory.
@@ -4058,6 +4060,7 @@ export NO_AUTOPATCH
# Verbosity.
dep_verbose_0 = @echo " DEP " $(1);
+dep_verbose_2 = set -x;
dep_verbose = $(dep_verbose_$(V))
# Core targets.
@@ -4758,25 +4761,32 @@ COMPILE_MIB_FIRST_PATHS = $(addprefix mibs/,$(addsuffix .mib,$(COMPILE_MIB_FIRST
# Verbosity.
app_verbose_0 = @echo " APP " $(PROJECT);
+app_verbose_2 = set -x;
app_verbose = $(app_verbose_$(V))
appsrc_verbose_0 = @echo " APP " $(PROJECT).app.src;
+appsrc_verbose_2 = set -x;
appsrc_verbose = $(appsrc_verbose_$(V))
makedep_verbose_0 = @echo " DEPEND" $(PROJECT).d;
+makedep_verbose_2 = set -x;
makedep_verbose = $(makedep_verbose_$(V))
erlc_verbose_0 = @echo " ERLC " $(filter-out $(patsubst %,%.erl,$(ERLC_EXCLUDE)),\
$(filter %.erl %.core,$(?F)));
+erlc_verbose_2 = set -x;
erlc_verbose = $(erlc_verbose_$(V))
xyrl_verbose_0 = @echo " XYRL " $(filter %.xrl %.yrl,$(?F));
+xyrl_verbose_2 = set -x;
xyrl_verbose = $(xyrl_verbose_$(V))
asn1_verbose_0 = @echo " ASN1 " $(filter %.asn1,$(?F));
+asn1_verbose_2 = set -x;
asn1_verbose = $(asn1_verbose_$(V))
mib_verbose_0 = @echo " MIB " $(filter %.bin %.mib,$(?F));
+mib_verbose_2 = set -x;
mib_verbose = $(mib_verbose_$(V))
ifneq ($(wildcard src/),)
@@ -4918,14 +4928,22 @@ define makedep.erl
endef
ifeq ($(if $(NO_MAKEDEP),$(wildcard $(PROJECT).d),),)
-$(PROJECT).d:: $(ERL_FILES) $(call core_find,include/,*.hrl)
+$(PROJECT).d:: $(ERL_FILES) $(call core_find,include/,*.hrl) $(MAKEFILE_LIST)
$(makedep_verbose) $(call erlang,$(call makedep.erl,$@))
endif
+ifneq ($(words $(ERL_FILES) $(CORE_FILES) $(ASN1_FILES) $(MIB_FILES) $(XRL_FILES) $(YRL_FILES)),0)
# Rebuild everything when the Makefile changes.
-$(ERL_FILES) $(CORE_FILES) $(ASN1_FILES) $(MIB_FILES) $(XRL_FILES) $(YRL_FILES):: $(MAKEFILE_LIST)
+$(ERLANG_MK_TMP)/last-makefile-change: $(MAKEFILE_LIST)
+ @if test -f $@; then \
+ touch $(ERL_FILES) $(CORE_FILES) $(ASN1_FILES) $(MIB_FILES) $(XRL_FILES) $(YRL_FILES); \
+ touch -c $(PROJECT).d; \
+ fi
@touch $@
+ebin/$(PROJECT).app:: $(ERLANG_MK_TMP)/last-makefile-change
+endif
+
-include $(PROJECT).d
ebin/$(PROJECT).app:: ebin/
@@ -5704,6 +5722,101 @@ distclean-c_src-env:
-include $(C_SRC_ENV)
endif
+# Templates.
+
+define bs_c_nif
+#include "erl_nif.h"
+
+static int loads = 0;
+
+static int load(ErlNifEnv* env, void** priv_data, ERL_NIF_TERM load_info)
+{
+ /* Initialize private data. */
+ *priv_data = NULL;
+
+ loads++;
+
+ return 0;
+}
+
+static int upgrade(ErlNifEnv* env, void** priv_data, void** old_priv_data, ERL_NIF_TERM load_info)
+{
+ /* Convert the private data to the new version. */
+ *priv_data = *old_priv_data;
+
+ loads++;
+
+ return 0;
+}
+
+static void unload(ErlNifEnv* env, void* priv_data)
+{
+ if (loads == 1) {
+ /* Destroy the private data. */
+ }
+
+ loads--;
+}
+
+static ERL_NIF_TERM hello(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
+{
+ if (enif_is_atom(env, argv[0])) {
+ return enif_make_tuple2(env,
+ enif_make_atom(env, "hello"),
+ argv[0]);
+ }
+
+ return enif_make_tuple2(env,
+ enif_make_atom(env, "error"),
+ enif_make_atom(env, "badarg"));
+}
+
+static ErlNifFunc nif_funcs[] = {
+ {"hello", 1, hello}
+};
+
+ERL_NIF_INIT($n, nif_funcs, load, NULL, upgrade, unload)
+endef
+
+define bs_erl_nif
+-module($n).
+
+-export([hello/1]).
+
+-on_load(on_load/0).
+on_load() ->
+ PrivDir = case code:priv_dir(?MODULE) of
+ {error, _} ->
+ AppPath = filename:dirname(filename:dirname(code:which(?MODULE))),
+ filename:join(AppPath, "priv");
+ Path ->
+ Path
+ end,
+ erlang:load_nif(filename:join(PrivDir, atom_to_list(?MODULE)), 0).
+
+hello(_) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+endef
+
+$(foreach template,bs_c_nif bs_erl_nif, \
+ $(eval _$(template) = $$(subst $$(tab),$$(WS),$$($(template)))) \
+ $(eval export _$(template)))
+
+new-nif:
+ifneq ($(wildcard $(C_SRC_DIR)/$n.c),)
+ $(error Error: $(C_SRC_DIR)/$n.c already exists)
+endif
+ifneq ($(wildcard src/$n.erl),)
+ $(error Error: src/$n.erl already exists)
+endif
+ifdef in
+ $(verbose) $(MAKE) -C $(APPS_DIR)/$(in)/ new-nif n=$n in=
+else
+ $(verbose) mkdir -p $(C_SRC_DIR) src/
+ $(call render_template,bs_c_nif,$(C_SRC_DIR)/$n.c)
+ $(call render_template,bs_erl_nif,src/$n.erl)
+endif
+
# Copyright (c) 2015, Loïc Hoguin <essen@ninenines.eu>
# This file is part of erlang.mk and subject to the terms of the ISC License.
@@ -5954,10 +6067,17 @@ else
BEAM_FILES += $(addprefix ebin/,$(patsubst %.dtl,%_dtl.beam,$(notdir $(DTL_FILES))))
endif
-# Rebuild templates when the Makefile changes.
-$(DTL_FILES): $(MAKEFILE_LIST)
+ifneq ($(words $(DTL_FILES)),0)
+# Rebuild everything when the Makefile changes.
+$(ERLANG_MK_TMP)/last-makefile-change-erlydtl: $(MAKEFILE_LIST)
+ @if test -f $@; then \
+ touch $(DTL_FILES); \
+ fi
@touch $@
+ebin/$(PROJECT).app:: $(ERLANG_MK_TMP)/last-makefile-change-erlydtl
+endif
+
ebin/$(PROJECT).app:: $(DTL_FILES)
$(if $(strip $?),\
$(dtl_verbose) $(call erlang,$(call erlydtl_compile.erl,$?,-pa ebin/ $(DEPS_DIR)/erlydtl/ebin/)))
diff --git a/packaging/RPMS/Fedora/Makefile b/packaging/RPMS/Fedora/Makefile
index fc37ceae79..9b2061b47a 100644
--- a/packaging/RPMS/Fedora/Makefile
+++ b/packaging/RPMS/Fedora/Makefile
@@ -35,6 +35,9 @@ SPEC_DEFINES=--define 'group_tag Development/Libraries'
START_PROG=daemon
endif
+unexport DEPS_DIR
+unexport ERL_LIBS
+
.PHONY: all prepare server clean
all: clean server
diff --git a/packaging/debs/Debian/Makefile b/packaging/debs/Debian/Makefile
index 432761c944..8328660ae7 100644
--- a/packaging/debs/Debian/Makefile
+++ b/packaging/debs/Debian/Makefile
@@ -22,6 +22,9 @@ else
SIGNING=-k$(SIGNING_KEY_ID)
endif
+unexport DEPS_DIR
+unexport ERL_LIBS
+
all: package
@:
diff --git a/packaging/generic-unix/Makefile b/packaging/generic-unix/Makefile
index 4f5e20c03c..8d483582ec 100644
--- a/packaging/generic-unix/Makefile
+++ b/packaging/generic-unix/Makefile
@@ -15,6 +15,9 @@ SOURCE_DIR = rabbitmq-server-$(VERSION)
TARGET_DIR = rabbitmq_server-$(VERSION)
TARGET_TARBALL = rabbitmq-server-generic-unix-$(VERSION)
+unexport DEPS_DIR
+unexport ERL_LIBS
+
all: dist
@:
diff --git a/packaging/standalone/Makefile b/packaging/standalone/Makefile
index e75c656e2f..5f2cb90440 100644
--- a/packaging/standalone/Makefile
+++ b/packaging/standalone/Makefile
@@ -1,4 +1,4 @@
-SOURCE_DIST_FILE ?= $(wildcard ../../../rabbitmq-server-*.tar.xz)
+SOURCE_DIST_FILE ?= $(wildcard ../../rabbitmq-server-*.tar.xz)
ifeq ($(SOURCE_DIST_FILE),)
$(error Cannot find source archive; please specify SOURCE_DIST_FILE)
endif
@@ -30,20 +30,24 @@ RABBITMQ_DEFAULTS=$(TARGET_DIR)/sbin/rabbitmq-defaults
fix_defaults = sed -e $(1) $(RABBITMQ_DEFAULTS) > $(RABBITMQ_DEFAULTS).tmp \
&& mv $(RABBITMQ_DEFAULTS).tmp $(RABBITMQ_DEFAULTS)
+unexport DEPS_DIR
+unexport ERL_LIBS
+
all: dist
@:
dist:
- tar -Jxf $(SOURCE_DIST_FILE)
+ rm -rf $(SOURCE_DIR) $(TARGET_DIR)
+ xzcat $(SOURCE_DIST_FILE) | tar -xf -
$(MAKE) -C $(SOURCE_DIR) \
PREFIX= RMQ_ROOTDIR= \
- RMQ_ERLAPP_DIR=`pwd`/$(TARGET_DIR) \
- MANDIR=`pwd`/$(TARGET_DIR)/share/man \
+ RMQ_ERLAPP_DIR=$(abspath $(TARGET_DIR)) \
+ MANDIR=$(abspath $(TARGET_DIR))/share/man \
manpages install install-man
mkdir -p $(TARGET_DIR)/etc/rabbitmq
- cp -a $(SOURCE_DIR)/docs/rabbitmq.config.example $(TARGET_DIR)/etc/rabbitmq
+ cp $(SOURCE_DIR)/docs/rabbitmq.config.example $(TARGET_DIR)/etc/rabbitmq
## Here we set the RABBITMQ_HOME variable,
## then we make ERL_DIR point to our released erl
@@ -83,13 +87,16 @@ dist:
# fix Erlang ROOTDIR
patch -o $(RLS_DIR)/erts-$(ERTS_VSN)/bin/erl $(RLS_DIR)/erts-$(ERTS_VSN)/bin/erl.src < erl.diff
+ rm -f $(RLS_DIR)/erts-$(ERTS_VSN)/bin/erl.orig
- tar -zcf $(TARGET_TARBALL).tar.gz -C $(TARGET_DIR)/release $(TARGET_DIR)
+ cd $(TARGET_DIR)/release && \
+ find $(TARGET_DIR) -print0 | LC_COLLATE=C sort -z | \
+ xargs -0 tar -cnf - | xz > $(CURDIR)/$(TARGET_TARBALL).tar.xz
rm -rf $(SOURCE_DIR) $(TARGET_DIR)
if test "$(PACKAGES_DIR)"; then \
mkdir -p "$(PACKAGES_DIR)"; \
- mv $(TARGET_TARBALL).tar.gz "$(PACKAGES_DIR)"; \
+ mv $(TARGET_TARBALL).tar.xz "$(PACKAGES_DIR)"; \
fi
clean: clean_partial
@@ -113,4 +120,5 @@ generate_release:
-hidden \
-s rabbit_release \
-extra "$(RABBITMQ_PLUGINS_DIR)" "$(RABBITMQ_PLUGINS_EXPAND_DIR)" "$(RABBITMQ_HOME)"
+ test -f $(RABBITMQ_HOME)/rabbit.tar.gz
rm src/rabbit_release.beam
diff --git a/packaging/standalone/src/rabbit_release.erl b/packaging/standalone/src/rabbit_release.erl
index 21bf2484c5..4e16fd52b5 100644
--- a/packaging/standalone/src/rabbit_release.erl
+++ b/packaging/standalone/src/rabbit_release.erl
@@ -56,7 +56,9 @@ start() ->
%% we need a list of ERTS apps we need to ship with rabbit
{ok, SslAppsConfig} = application:get_env(rabbit, ssl_apps),
- BaseApps = SslAppsConfig ++ AllApps -- PluginAppNames,
+ BaseApps = lists:umerge(
+ lists:sort(SslAppsConfig),
+ lists:sort(AllApps -- PluginAppNames)),
AppVersions = [determine_version(App) || App <- BaseApps],
RabbitVersion = proplists:get_value(rabbit, AppVersions),
diff --git a/packaging/windows-exe/Makefile b/packaging/windows-exe/Makefile
index 047e208f09..fad0eae5f5 100644
--- a/packaging/windows-exe/Makefile
+++ b/packaging/windows-exe/Makefile
@@ -3,10 +3,13 @@ ZIP_DIR = ../windows
else
ZIP_DIR = $(PACKAGES_DIR)
endif
-ZIP = $(notdir $(wildcard $(ZIP_DIR)/rabbitmq-server-windows-[0-9.]*.zip))
+ZIP = $(notdir $(wildcard $(ZIP_DIR)/rabbitmq-server-windows-$(VERSION).zip))
VERSION = $(patsubst rabbitmq-server-windows-%.zip,%,$(ZIP))
+unexport DEPS_DIR
+unexport ERL_LIBS
+
all: dist
@:
diff --git a/packaging/windows/Makefile b/packaging/windows/Makefile
index f11293391d..4fc72b95c4 100644
--- a/packaging/windows/Makefile
+++ b/packaging/windows/Makefile
@@ -15,6 +15,9 @@ SOURCE_DIR = rabbitmq-server-$(VERSION)
TARGET_DIR = rabbitmq_server-$(VERSION)
TARGET_ZIP = rabbitmq-server-windows-$(VERSION)
+unexport DEPS_DIR
+unexport ERL_LIBS
+
all: dist
@:
diff --git a/rabbitmq-components.mk b/rabbitmq-components.mk
index a5ab0ace11..5b0fe27564 100644
--- a/rabbitmq-components.mk
+++ b/rabbitmq-components.mk
@@ -82,9 +82,7 @@ RABBITMQ_COMPONENTS = amqp_client \
rabbitmq_tracing \
rabbitmq_web_dispatch \
rabbitmq_web_stomp \
- rabbitmq_web_stomp_examples \
- sockjs \
- toke
+ rabbitmq_web_stomp_examples
ifeq ($(origin current_rmq_ref),undefined)
ifneq ($(wildcard .git),)
@@ -156,8 +154,16 @@ else
RABBITMQ_SCRIPTS_DIR ?= $(DEPS_DIR)/rabbit/scripts
endif
-RABBITMQCTL ?= $(RABBITMQ_SCRIPTS_DIR)/rabbitmqctl
+ifeq ($(shell uname -o),Msys)
+RABBITMQ_PLUGINS ?= $(RABBITMQ_SCRIPTS_DIR)/rabbitmq-plugins.bat
+RABBITMQ_SERVER ?= $(RABBITMQ_SCRIPTS_DIR)/rabbitmq-server.bat
+RABBITMQCTL ?= $(RABBITMQ_SCRIPTS_DIR)/rabbitmqctl.bat
+else
RABBITMQ_PLUGINS ?= $(RABBITMQ_SCRIPTS_DIR)/rabbitmq-plugins
+RABBITMQ_SERVER ?= $(RABBITMQ_SCRIPTS_DIR)/rabbitmq-server
+RABBITMQCTL ?= $(RABBITMQ_SCRIPTS_DIR)/rabbitmqctl
+endif
+
export RABBITMQ_SCRIPTS_DIR RABBITMQCTL RABBITMQ_PLUGINS
# --------------------------------------------------------------------
diff --git a/scripts/rabbitmq-defaults.bat b/scripts/rabbitmq-defaults.bat
index d1e3b4141b..cf04eb612f 100644
--- a/scripts/rabbitmq-defaults.bat
+++ b/scripts/rabbitmq-defaults.bat
@@ -1,37 +1,43 @@
-@echo off
-
-REM ### next line potentially updated in package install steps
-REM set SYS_PREFIX=
-
-REM ### next line will be updated when generating a standalone release
-REM ERL_DIR=
-set ERL_DIR=
-
-REM These boot files don't appear to be referenced in the batch scripts
-REM set CLEAN_BOOT_FILE=start_clean
-REM set SASL_BOOT_FILE=start_sasl
-
-REM ## Set default values
-
-if "!RABBITMQ_BASE!"=="" (
- set RABBITMQ_BASE=!APPDATA!\RabbitMQ
-)
-
-REM BOOT_MODULE="rabbit"
-REM CONFIG_FILE=${SYS_PREFIX}/etc/rabbitmq/rabbitmq
-REM LOG_BASE=${SYS_PREFIX}/var/log/rabbitmq
-REM MNESIA_BASE=${SYS_PREFIX}/var/lib/rabbitmq/mnesia
-REM ENABLED_PLUGINS_FILE=${SYS_PREFIX}/etc/rabbitmq/enabled_plugins
-set BOOT_MODULE=rabbit
-set CONFIG_FILE=!RABBITMQ_BASE!\rabbitmq
-set LOG_BASE=!RABBITMQ_BASE!\log
-set MNESIA_BASE=!RABBITMQ_BASE!\db
-set ENABLED_PLUGINS_FILE=!RABBITMQ_BASE!\enabled_plugins
-
-REM PLUGINS_DIR="${RABBITMQ_HOME}/plugins"
-set PLUGINS_DIR=!TDP0!..\plugins
-
-REM CONF_ENV_FILE=${SYS_PREFIX}/etc/rabbitmq/rabbitmq-env.conf
-if "!RABBITMQ_CONF_ENV_FILE!"=="" (
- set RABBITMQ_CONF_ENV_FILE=!RABBITMQ_BASE!\rabbitmq-env-conf.bat
-)
+@echo off
+
+REM ### next line potentially updated in package install steps
+REM set SYS_PREFIX=
+
+REM ### next line will be updated when generating a standalone release
+REM ERL_DIR=
+set ERL_DIR=
+
+REM These boot files don't appear to be referenced in the batch scripts
+REM set CLEAN_BOOT_FILE=start_clean
+REM set SASL_BOOT_FILE=start_sasl
+
+if exist "%RABBITMQ_HOME%\erlang.mk" (
+ REM RabbitMQ is executed from its source directory. The plugins
+ REM directory and ERL_LIBS are tuned based on this.
+ set RABBITMQ_DEV_ENV=1
+)
+
+REM ## Set default values
+
+if "!RABBITMQ_BASE!"=="" (
+ set RABBITMQ_BASE=!APPDATA!\RabbitMQ
+)
+
+REM BOOT_MODULE="rabbit"
+REM CONFIG_FILE=${SYS_PREFIX}/etc/rabbitmq/rabbitmq
+REM LOG_BASE=${SYS_PREFIX}/var/log/rabbitmq
+REM MNESIA_BASE=${SYS_PREFIX}/var/lib/rabbitmq/mnesia
+REM ENABLED_PLUGINS_FILE=${SYS_PREFIX}/etc/rabbitmq/enabled_plugins
+set BOOT_MODULE=rabbit
+set CONFIG_FILE=!RABBITMQ_BASE!\rabbitmq
+set LOG_BASE=!RABBITMQ_BASE!\log
+set MNESIA_BASE=!RABBITMQ_BASE!\db
+set ENABLED_PLUGINS_FILE=!RABBITMQ_BASE!\enabled_plugins
+
+REM PLUGINS_DIR="${RABBITMQ_HOME}/plugins"
+set PLUGINS_DIR=!TDP0!..\plugins
+
+REM CONF_ENV_FILE=${SYS_PREFIX}/etc/rabbitmq/rabbitmq-env.conf
+if "!RABBITMQ_CONF_ENV_FILE!"=="" (
+ set RABBITMQ_CONF_ENV_FILE=!RABBITMQ_BASE!\rabbitmq-env-conf.bat
+)
diff --git a/scripts/rabbitmq-echopid.bat b/scripts/rabbitmq-echopid.bat
index 6262a1638f..fa08dec4ac 100644
--- a/scripts/rabbitmq-echopid.bat
+++ b/scripts/rabbitmq-echopid.bat
@@ -1,55 +1,55 @@
-@echo off
-
-REM Usage: rabbitmq-echopid.bat <rabbitmq_nodename>
-REM
-REM <rabbitmq_nodename> (s)name of the erlang node to connect to (required)
-
-setlocal
-
-set TDP0=%~dp0
-
-REM Get default settings with user overrides for (RABBITMQ_)<var_name>
-REM Non-empty defaults should be set in rabbitmq-env
-call "!TDP0!\rabbitmq-env.bat"
-
-if "%1"=="" goto fail
-
-:: set timeout vars ::
-set TIMEOUT=10
-set TIMER=1
-
-:: check that wmic exists ::
-set WMIC_PATH=%SYSTEMROOT%\System32\Wbem\wmic.exe
-if not exist "%WMIC_PATH%" (
- goto fail
-)
-
-:getpid
-for /f "usebackq tokens=* skip=1" %%P IN (`%%WMIC_PATH%% process where "name='erl.exe' and commandline like '%%%RABBITMQ_NAME_TYPE% %1%%'" get processid 2^>nul`) do (
- set PID=%%P
- goto echopid
-)
-
-:echopid
-:: check for pid not found ::
-if "%PID%" == "" (
- PING 127.0.0.1 -n 2 > nul
- set /a TIMER+=1
- if %TIMEOUT%==%TIMER% goto fail
- goto getpid
-)
-
-:: show pid ::
-echo %PID%
-
-:: all done ::
-:ok
-endlocal
-EXIT /B 0
-
-:: something went wrong ::
-:fail
-endlocal
-EXIT /B 1
-
-
+@echo off
+
+REM Usage: rabbitmq-echopid.bat <rabbitmq_nodename>
+REM
+REM <rabbitmq_nodename> (s)name of the erlang node to connect to (required)
+
+setlocal
+
+set TDP0=%~dp0
+
+REM Get default settings with user overrides for (RABBITMQ_)<var_name>
+REM Non-empty defaults should be set in rabbitmq-env
+call "!TDP0!\rabbitmq-env.bat" %~n0
+
+if "%1"=="" goto fail
+
+:: set timeout vars ::
+set TIMEOUT=10
+set TIMER=1
+
+:: check that wmic exists ::
+set WMIC_PATH=%SYSTEMROOT%\System32\Wbem\wmic.exe
+if not exist "%WMIC_PATH%" (
+ goto fail
+)
+
+:getpid
+for /f "usebackq tokens=* skip=1" %%P IN (`%%WMIC_PATH%% process where "name='erl.exe' and commandline like '%%%RABBITMQ_NAME_TYPE% %1%%'" get processid 2^>nul`) do (
+ set PID=%%P
+ goto echopid
+)
+
+:echopid
+:: check for pid not found ::
+if "%PID%" == "" (
+ PING 127.0.0.1 -n 2 > nul
+ set /a TIMER+=1
+ if %TIMEOUT%==%TIMER% goto fail
+ goto getpid
+)
+
+:: show pid ::
+echo %PID%
+
+:: all done ::
+:ok
+endlocal
+EXIT /B 0
+
+:: something went wrong ::
+:fail
+endlocal
+EXIT /B 1
+
+
diff --git a/scripts/rabbitmq-env b/scripts/rabbitmq-env
index cc05015cef..0014643260 100644
--- a/scripts/rabbitmq-env
+++ b/scripts/rabbitmq-env
@@ -45,7 +45,19 @@ if [ -z "$RABBITMQ_SCRIPTS_DIR" ]; then
RABBITMQ_SCRIPTS_DIR=`dirname $SCRIPT_PATH`
fi
-RABBITMQ_HOME="${RABBITMQ_SCRIPTS_DIR}/.."
+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}/..")"
## Set defaults
. ${RABBITMQ_SCRIPTS_DIR}/rabbitmq-defaults
@@ -119,18 +131,6 @@ rmq_normalize_path_var() {
done
}
-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
-}
-
rmq_check_if_shared_with_mnesia() {
local var warning
@@ -200,9 +200,11 @@ rmq_normalize_path_var RABBITMQ_PID_FILE
[ "x" = "x$RABBITMQ_PLUGINS_EXPAND_DIR" ] && RABBITMQ_PLUGINS_EXPAND_DIR=${RABBITMQ_MNESIA_BASE}/${RABBITMQ_NODENAME}-plugins-expand
rmq_normalize_path_var RABBITMQ_PLUGINS_EXPAND_DIR
+[ "x" != "x$RABBITMQ_ENABLED_PLUGINS_FILE" ] && RABBITMQ_ENABLED_PLUGINS_FILE_source=environment
[ "x" = "x$RABBITMQ_ENABLED_PLUGINS_FILE" ] && RABBITMQ_ENABLED_PLUGINS_FILE=${ENABLED_PLUGINS_FILE}
rmq_normalize_path_var RABBITMQ_ENABLED_PLUGINS_FILE
+[ "x" != "x$RABBITMQ_PLUGINS_DIR" ] && RABBITMQ_PLUGINS_DIR_source=environment
[ "x" = "x$RABBITMQ_PLUGINS_DIR" ] && RABBITMQ_PLUGINS_DIR=${PLUGINS_DIR}
rmq_normalize_path_var RABBITMQ_PLUGINS_DIR
@@ -237,7 +239,9 @@ rmq_check_if_shared_with_mnesia \
## Development-specific environment.
if [ "${RABBITMQ_DEV_ENV}" ]; then
- if [ "$(basename "$0")" = 'rabbitmq-plugins' ]; then
+ if [ "$(basename "$0")" = 'rabbitmq-plugins' -a \( \
+ "$RABBITMQ_PLUGINS_DIR_source" != 'environment' -o \
+ "$RABBITMQ_ENABLED_PLUGINS_FILE_source" != 'environment' \) ]; then
# We need to query the running node for the plugins directory
# and the "enabled plugins" file.
eval $( (${RABBITMQ_SCRIPTS_DIR}/rabbitmqctl eval \
@@ -247,10 +251,12 @@ if [ "${RABBITMQ_DEV_ENV}" ]; then
"plugins_dir=\"~s\"~n"
"enabled_plugins_file=\"~s\"~n", [P, E]).' \
2>/dev/null | head -n 2) || :)
- if [ "${plugins_dir}" ]; then
+ if [ "${plugins_dir}" -a \
+ "$RABBITMQ_PLUGINS_DIR_source" != 'environment' ]; then
RABBITMQ_PLUGINS_DIR="${plugins_dir}"
fi
- if [ "${enabled_plugins_file}" ]; then
+ if [ "${enabled_plugins_file}" -a \
+ "$RABBITMQ_ENABLED_PLUGINS_FILE_source" != 'environment' ]; then
RABBITMQ_ENABLED_PLUGINS_FILE="${enabled_plugins_file}"
fi
fi
diff --git a/scripts/rabbitmq-env.bat b/scripts/rabbitmq-env.bat
index ffc68035dc..00eca4bdc8 100644
--- a/scripts/rabbitmq-env.bat
+++ b/scripts/rabbitmq-env.bat
@@ -1,257 +1,335 @@
-@echo off
-
-REM Scopes the variables to the current batch file
-REM setlocal
-
-rem Preserve values that might contain exclamation marks before
-rem enabling delayed expansion
-set TDP0=%~dp0
-REM setlocal enabledelayedexpansion
-
-REM SCRIPT_DIR=`dirname $SCRIPT_PATH`
-REM RABBITMQ_HOME="${SCRIPT_DIR}/.."
-set SCRIPT_DIR=%TDP0%
-set RABBITMQ_HOME=%SCRIPT_DIR%..
-
-REM ## Set defaults
-REM . ${SCRIPT_DIR}/rabbitmq-defaults
-call "%SCRIPT_DIR%\rabbitmq-defaults.bat"
-
-REM These common defaults aren't referenced in the batch scripts
-REM ## Common defaults
-REM SERVER_ERL_ARGS="+P 1048576"
-REM
-REM # warn about old rabbitmq.conf file, if no new one
-REM if [ -f /etc/rabbitmq/rabbitmq.conf ] && \
-REM [ ! -f ${CONF_ENV_FILE} ] ; then
-REM echo -n "WARNING: ignoring /etc/rabbitmq/rabbitmq.conf -- "
-REM echo "location has moved to ${CONF_ENV_FILE}"
-REM fi
-
-REM ERL_ARGS aren't referenced in the batch scripts
-REM Common defaults
-REM set SERVER_ERL_ARGS=+P 1048576
-
-REM ## Get configuration variables from the configure environment file
-REM [ -f ${CONF_ENV_FILE} ] && . ${CONF_ENV_FILE} || true
-if exist "!RABBITMQ_CONF_ENV_FILE!" (
- call "!RABBITMQ_CONF_ENV_FILE!"
-)
-
-REM Check for the short names here too
-if "!RABBITMQ_USE_LONGNAME!"=="" (
- if "!USE_LONGNAME!"=="" (
- set RABBITMQ_NAME_TYPE="-sname"
- )
-)
-
-if "!RABBITMQ_USE_LONGNAME!"=="true" (
- if "!USE_LONGNAME!"=="true" (
- set RABBITMQ_NAME_TYPE="-name"
- )
-)
-
-if "!COMPUTERNAME!"=="" (
- set COMPUTERNAME=localhost
-)
-
-REM [ "x" = "x$RABBITMQ_NODENAME" ] && RABBITMQ_NODENAME=${NODENAME}
-if "!RABBITMQ_NODENAME!"=="" (
- if "!NODENAME!"=="" (
- set RABBITMQ_NODENAME=rabbit@!COMPUTERNAME!
- ) else (
- set RABBITMQ_NODENAME=!NODENAME!
- )
-)
-
-REM
-REM ##--- Set environment vars RABBITMQ_<var_name> to defaults if not set
-REM
-REM DEFAULT_NODE_IP_ADDRESS=auto
-REM DEFAULT_NODE_PORT=5672
-REM [ "x" = "x$RABBITMQ_NODE_IP_ADDRESS" ] && RABBITMQ_NODE_IP_ADDRESS=${NODE_IP_ADDRESS}
-REM [ "x" = "x$RABBITMQ_NODE_PORT" ] && RABBITMQ_NODE_PORT=${NODE_PORT}
-REM [ "x" = "x$RABBITMQ_NODE_IP_ADDRESS" ] && [ "x" != "x$RABBITMQ_NODE_PORT" ] && RABBITMQ_NODE_IP_ADDRESS=${DEFAULT_NODE_IP_ADDRESS}
-REM [ "x" != "x$RABBITMQ_NODE_IP_ADDRESS" ] && [ "x" = "x$RABBITMQ_NODE_PORT" ] && RABBITMQ_NODE_PORT=${DEFAULT_NODE_PORT}
-
-REM if "!RABBITMQ_NODE_IP_ADDRESS!"=="" (
-REM if not "!RABBITMQ_NODE_PORT!"=="" (
-REM set RABBITMQ_NODE_IP_ADDRESS=auto
-REM )
-REM ) else (
-REM if "!RABBITMQ_NODE_PORT!"=="" (
-REM set RABBITMQ_NODE_PORT=5672
-REM )
-REM )
-
-if "!RABBITMQ_NODE_IP_ADDRESS!"=="" (
- if not "!NODE_IP_ADDRESS!"=="" (
- set RABBITMQ_NODE_IP_ADDRESS=!NODE_IP_ADDRESS!
- )
-)
-
-if "!RABBITMQ_NODE_PORT!"=="" (
- if not "!NODE_PORT!"=="" (
- set RABBITMQ_NODE_PORT=!NODE_PORT!
- )
-)
-
-if "!RABBITMQ_NODE_IP_ADDRESS!"=="" (
- if not "!RABBITMQ_NODE_PORT!"=="" (
- set RABBITMQ_NODE_IP_ADDRESS=auto
- )
-) else (
- if "!RABBITMQ_NODE_PORT!"=="" (
- set RABBITMQ_NODE_PORT=5672
- )
-)
-
-REM [ "x" = "x$RABBITMQ_DIST_PORT" ] && RABBITMQ_DIST_PORT=${DIST_PORT}
-REM [ "x" = "x$RABBITMQ_DIST_PORT" ] && [ "x" = "x$RABBITMQ_NODE_PORT" ] && RABBITMQ_DIST_PORT=$((${DEFAULT_NODE_PORT} + 20000))
-REM [ "x" = "x$RABBITMQ_DIST_PORT" ] && [ "x" != "x$RABBITMQ_NODE_PORT" ] && RABBITMQ_DIST_PORT=$((${RABBITMQ_NODE_PORT} + 20000))
-
-if "!RABBITMQ_DIST_PORT!"=="" (
- if "!DIST_PORT!"=="" (
- if "!RABBITMQ_NODE_PORT!"=="" (
- set RABBITMQ_DIST_PORT=25672
- ) else (
- set /a RABBITMQ_DIST_PORT=20000+!RABBITMQ_NODE_PORT!
- )
- ) else (
- set RABBITMQ_DIST_PORT=!DIST_PORT!
- )
-)
-
-REM [ "x" = "x$RABBITMQ_SERVER_ERL_ARGS" ] && RABBITMQ_SERVER_ERL_ARGS=${SERVER_ERL_ARGS}
-REM No Windows equivalent
-
-REM [ "x" = "x$RABBITMQ_CONFIG_FILE" ] && RABBITMQ_CONFIG_FILE=${CONFIG_FILE}
-if "!RABBITMQ_CONFIG_FILE!"=="" (
- if "!CONFIG_FILE!"=="" (
- set RABBITMQ_CONFIG_FILE=!RABBITMQ_BASE!\rabbitmq
- ) else (
- set RABBITMQ_CONFIG_FILE=!CONFIG_FILE!
- )
-)
-
-REM [ "x" = "x$RABBITMQ_LOG_BASE" ] && RABBITMQ_LOG_BASE=${LOG_BASE}
-if "!RABBITMQ_LOG_BASE!"=="" (
- if "!LOG_BASE!"=="" (
- set RABBITMQ_LOG_BASE=!RABBITMQ_BASE!\log
- ) else (
- set RABBITMQ_LOG_BASE=!LOG_BASE!
- )
-)
-
-REM [ "x" = "x$RABBITMQ_MNESIA_BASE" ] && RABBITMQ_MNESIA_BASE=${MNESIA_BASE}
-if "!RABBITMQ_MNESIA_BASE!"=="" (
- if "!MNESIA_BASE!"=="" (
- set RABBITMQ_MNESIA_BASE=!RABBITMQ_BASE!\db
- ) else (
- set RABBITMQ_MNESIA_BASE=!MNESIA_BASE!
- )
-)
-
-REM [ "x" = "x$RABBITMQ_SERVER_START_ARGS" ] && RABBITMQ_SERVER_START_ARGS=${SERVER_START_ARGS}
-REM No Windows equivalent
-
-REM [ "x" = "x$RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS" ] && RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS=${SERVER_ADDITIONAL_ERL_ARGS}
-REM No Windows equivalent
-
-REM [ "x" = "x$RABBITMQ_MNESIA_DIR" ] && RABBITMQ_MNESIA_DIR=${MNESIA_DIR}
-REM [ "x" = "x$RABBITMQ_MNESIA_DIR" ] && RABBITMQ_MNESIA_DIR=${RABBITMQ_MNESIA_BASE}/${RABBITMQ_NODENAME}
-if "!RABBITMQ_MNESIA_DIR!"=="" (
- if "!MNESIA_DIR!"=="" (
- set RABBITMQ_MNESIA_DIR=!RABBITMQ_MNESIA_BASE!/!RABBITMQ_NODENAME!-mnesia
- ) else (
- set RABBITMQ_MNESIA_DIR=!MNESIA_DIR!
- )
-)
-
-REM [ "x" = "x$RABBITMQ_PID_FILE" ] && RABBITMQ_PID_FILE=${PID_FILE}
-REM [ "x" = "x$RABBITMQ_PID_FILE" ] && RABBITMQ_PID_FILE=${RABBITMQ_MNESIA_DIR}.pid
-REM No Windows equivalent
-
-REM [ "x" = "x$RABBITMQ_BOOT_MODULE" ] && RABBITMQ_BOOT_MODULE=${BOOT_MODULE}
-if "!RABBITMQ_BOOT_MODULE!"=="" (
- if "!BOOT_MODULE!"=="" (
- set RABBITMQ_BOOT_MODULE=rabbit
- ) else (
- set RABBITMQ_BOOT_MODULE=!BOOT_MODULE!
- )
-)
-
-REM [ "x" = "x$RABBITMQ_PLUGINS_EXPAND_DIR" ] && RABBITMQ_PLUGINS_EXPAND_DIR=${PLUGINS_EXPAND_DIR}
-REM [ "x" = "x$RABBITMQ_PLUGINS_EXPAND_DIR" ] && RABBITMQ_PLUGINS_EXPAND_DIR=${RABBITMQ_MNESIA_BASE}/${RABBITMQ_NODENAME}-plugins-expand
-if "!RABBITMQ_PLUGINS_EXPAND_DIR!"=="" (
- if "!PLUGINS_EXPAND_DIR!"=="" (
- set RABBITMQ_PLUGINS_EXPAND_DIR=!RABBITMQ_MNESIA_BASE!/!RABBITMQ_NODENAME!-plugins-expand
- ) else (
- set RABBITMQ_PLUGINS_EXPAND_DIR=!PLUGINS_EXPAND_DIR!
- )
-)
-
-REM [ "x" = "x$RABBITMQ_ENABLED_PLUGINS_FILE" ] && RABBITMQ_ENABLED_PLUGINS_FILE=${ENABLED_PLUGINS_FILE}
-if "!RABBITMQ_ENABLED_PLUGINS_FILE!"=="" (
- if "!ENABLED_PLUGINS_FILE!"=="" (
- set RABBITMQ_ENABLED_PLUGINS_FILE=!RABBITMQ_BASE!\enabled_plugins
- ) else (
- set RABBITMQ_ENABLED_PLUGINS_FILE=!ENABLED_PLUGINS_FILE!
- )
-)
-
-REM [ "x" = "x$RABBITMQ_PLUGINS_DIR" ] && RABBITMQ_PLUGINS_DIR=${PLUGINS_DIR}
-if "!RABBITMQ_PLUGINS_DIR!"=="" (
- if "!PLUGINS_DIR!"=="" (
- set RABBITMQ_PLUGINS_DIR=!RABBITMQ_BASE!\plugins
- ) else (
- set RABBITMQ_PLUGINS_DIR=!PLUGINS_DIR!
- )
-)
-
-REM ## Log rotation
-REM [ "x" = "x$RABBITMQ_LOGS" ] && RABBITMQ_LOGS=${LOGS}
-REM [ "x" = "x$RABBITMQ_LOGS" ] && RABBITMQ_LOGS="${RABBITMQ_LOG_BASE}/${RABBITMQ_NODENAME}.log"
-if "!RABBITMQ_LOGS!"=="" (
- if "!LOGS!"=="" (
- set RABBITMQ_LOGS=!RABBITMQ_LOG_BASE!\!RABBITMQ_NODENAME!.log
- ) else (
- set RABBITMQ_LOGS=!LOGS!
- )
-)
-
-REM [ "x" = "x$RABBITMQ_SASL_LOGS" ] && RABBITMQ_SASL_LOGS=${SASL_LOGS}
-REM [ "x" = "x$RABBITMQ_SASL_LOGS" ] && RABBITMQ_SASL_LOGS="${RABBITMQ_LOG_BASE}/${RABBITMQ_NODENAME}-sasl.log"
-if "!RABBITMQ_SASL_LOGS!"=="" (
- if "!SASL_LOGS!"=="" (
- set RABBITMQ_SASL_LOGS=!RABBITMQ_LOG_BASE!\!RABBITMQ_NODENAME!-sasl.log
- ) else (
- set RABBITMQ_SASL_LOGS=!SASL_LOGS!
- )
-)
-
-REM [ "x" = "x$RABBITMQ_CTL_ERL_ARGS" ] && RABBITMQ_CTL_ERL_ARGS=${CTL_ERL_ARGS}
-if "!$RABBITMQ_CTL_ERL_ARGS!"=="" (
- if not "!CTL_ERL_ARGS!"=="" (
- set RABBITMQ_CTL_ERL_ARGS=!CTL_ERL_ARGS!
- )
-)
-
-REM ADDITIONAL WINDOWS ONLY CONFIG ITEMS
-REM rabbitmq-plugins.bat
-REM if "!RABBITMQ_SERVICENAME!"=="" (
-REM set RABBITMQ_SERVICENAME=RabbitMQ
-REM )
-
-if "!RABBITMQ_SERVICENAME!"=="" (
- if "!SERVICENAME!"=="" (
- set RABBITMQ_SERVICENAME=RabbitMQ
- ) else (
- set RABBITMQ_SERVICENAME=!SERVICENAME!
- )
-)
-
-REM ##--- End of overridden <var_name> variables
-REM
-REM # Since we source this elsewhere, don't accidentally stop execution
-REM true
+@echo off
+
+REM Scopes the variables to the current batch file
+REM setlocal
+
+rem Preserve values that might contain exclamation marks before
+rem enabling delayed expansion
+set TDP0=%~dp0
+REM setlocal enabledelayedexpansion
+
+REM SCRIPT_DIR=`dirname $SCRIPT_PATH`
+REM RABBITMQ_HOME="${SCRIPT_DIR}/.."
+set SCRIPT_DIR=%TDP0%
+set SCRIPT_NAME=%1
+set RABBITMQ_HOME=%SCRIPT_DIR%..
+
+REM If ERLANG_HOME is not defined, check if "erl.exe" is available in
+REM the path and use that.
+if not defined ERLANG_HOME (
+ for /f "delims=" %%F in ('where.exe erl.exe') do @set ERL_PATH=%%F
+ if exist "!ERL_PATH!" (
+ for /f "delims=" %%F in ("!ERL_PATH!") do set ERL_DIRNAME=%%~dpF
+ for /f "delims=" %%F in ('realpath "!ERL_DIRNAME!\.."') do @set ERLANG_HOME=%%F
+ )
+ set ERL_PATH=
+ set ERL_DIRNAME=
+)
+
+REM ## Set defaults
+REM . ${SCRIPT_DIR}/rabbitmq-defaults
+call "%SCRIPT_DIR%\rabbitmq-defaults.bat"
+
+REM These common defaults aren't referenced in the batch scripts
+REM ## Common defaults
+REM SERVER_ERL_ARGS="+P 1048576"
+REM
+REM # warn about old rabbitmq.conf file, if no new one
+REM if [ -f /etc/rabbitmq/rabbitmq.conf ] && \
+REM [ ! -f ${CONF_ENV_FILE} ] ; then
+REM echo -n "WARNING: ignoring /etc/rabbitmq/rabbitmq.conf -- "
+REM echo "location has moved to ${CONF_ENV_FILE}"
+REM fi
+
+REM ERL_ARGS aren't referenced in the batch scripts
+REM Common defaults
+REM set SERVER_ERL_ARGS=+P 1048576
+
+REM ## Get configuration variables from the configure environment file
+REM [ -f ${CONF_ENV_FILE} ] && . ${CONF_ENV_FILE} || true
+if exist "!RABBITMQ_CONF_ENV_FILE!" (
+ call "!RABBITMQ_CONF_ENV_FILE!"
+)
+
+REM Check for the short names here too
+if "!RABBITMQ_USE_LONGNAME!"=="" (
+ if "!USE_LONGNAME!"=="" (
+ set RABBITMQ_NAME_TYPE="-sname"
+ )
+)
+
+if "!RABBITMQ_USE_LONGNAME!"=="true" (
+ if "!USE_LONGNAME!"=="true" (
+ set RABBITMQ_NAME_TYPE="-name"
+ )
+)
+
+if "!COMPUTERNAME!"=="" (
+ set COMPUTERNAME=localhost
+)
+
+REM [ "x" = "x$RABBITMQ_NODENAME" ] && RABBITMQ_NODENAME=${NODENAME}
+if "!RABBITMQ_NODENAME!"=="" (
+ if "!NODENAME!"=="" (
+ set RABBITMQ_NODENAME=rabbit@!COMPUTERNAME!
+ ) else (
+ set RABBITMQ_NODENAME=!NODENAME!
+ )
+)
+
+REM
+REM ##--- Set environment vars RABBITMQ_<var_name> to defaults if not set
+REM
+REM DEFAULT_NODE_IP_ADDRESS=auto
+REM DEFAULT_NODE_PORT=5672
+REM [ "x" = "x$RABBITMQ_NODE_IP_ADDRESS" ] && RABBITMQ_NODE_IP_ADDRESS=${NODE_IP_ADDRESS}
+REM [ "x" = "x$RABBITMQ_NODE_PORT" ] && RABBITMQ_NODE_PORT=${NODE_PORT}
+REM [ "x" = "x$RABBITMQ_NODE_IP_ADDRESS" ] && [ "x" != "x$RABBITMQ_NODE_PORT" ] && RABBITMQ_NODE_IP_ADDRESS=${DEFAULT_NODE_IP_ADDRESS}
+REM [ "x" != "x$RABBITMQ_NODE_IP_ADDRESS" ] && [ "x" = "x$RABBITMQ_NODE_PORT" ] && RABBITMQ_NODE_PORT=${DEFAULT_NODE_PORT}
+
+REM if "!RABBITMQ_NODE_IP_ADDRESS!"=="" (
+REM if not "!RABBITMQ_NODE_PORT!"=="" (
+REM set RABBITMQ_NODE_IP_ADDRESS=auto
+REM )
+REM ) else (
+REM if "!RABBITMQ_NODE_PORT!"=="" (
+REM set RABBITMQ_NODE_PORT=5672
+REM )
+REM )
+
+if "!RABBITMQ_NODE_IP_ADDRESS!"=="" (
+ if not "!NODE_IP_ADDRESS!"=="" (
+ set RABBITMQ_NODE_IP_ADDRESS=!NODE_IP_ADDRESS!
+ )
+)
+
+if "!RABBITMQ_NODE_PORT!"=="" (
+ if not "!NODE_PORT!"=="" (
+ set RABBITMQ_NODE_PORT=!NODE_PORT!
+ )
+)
+
+if "!RABBITMQ_NODE_IP_ADDRESS!"=="" (
+ if not "!RABBITMQ_NODE_PORT!"=="" (
+ set RABBITMQ_NODE_IP_ADDRESS=auto
+ )
+) else (
+ if "!RABBITMQ_NODE_PORT!"=="" (
+ set RABBITMQ_NODE_PORT=5672
+ )
+)
+
+REM [ "x" = "x$RABBITMQ_DIST_PORT" ] && RABBITMQ_DIST_PORT=${DIST_PORT}
+REM [ "x" = "x$RABBITMQ_DIST_PORT" ] && [ "x" = "x$RABBITMQ_NODE_PORT" ] && RABBITMQ_DIST_PORT=$((${DEFAULT_NODE_PORT} + 20000))
+REM [ "x" = "x$RABBITMQ_DIST_PORT" ] && [ "x" != "x$RABBITMQ_NODE_PORT" ] && RABBITMQ_DIST_PORT=$((${RABBITMQ_NODE_PORT} + 20000))
+
+if "!RABBITMQ_DIST_PORT!"=="" (
+ if "!DIST_PORT!"=="" (
+ if "!RABBITMQ_NODE_PORT!"=="" (
+ set RABBITMQ_DIST_PORT=25672
+ ) else (
+ set /a RABBITMQ_DIST_PORT=20000+!RABBITMQ_NODE_PORT!
+ )
+ ) else (
+ set RABBITMQ_DIST_PORT=!DIST_PORT!
+ )
+)
+
+REM [ "x" = "x$RABBITMQ_SERVER_ERL_ARGS" ] && RABBITMQ_SERVER_ERL_ARGS=${SERVER_ERL_ARGS}
+REM No Windows equivalent
+
+REM [ "x" = "x$RABBITMQ_CONFIG_FILE" ] && RABBITMQ_CONFIG_FILE=${CONFIG_FILE}
+if "!RABBITMQ_CONFIG_FILE!"=="" (
+ if "!CONFIG_FILE!"=="" (
+ set RABBITMQ_CONFIG_FILE=!RABBITMQ_BASE!\rabbitmq
+ ) else (
+ set RABBITMQ_CONFIG_FILE=!CONFIG_FILE!
+ )
+)
+
+REM [ "x" = "x$RABBITMQ_LOG_BASE" ] && RABBITMQ_LOG_BASE=${LOG_BASE}
+if "!RABBITMQ_LOG_BASE!"=="" (
+ if "!LOG_BASE!"=="" (
+ set RABBITMQ_LOG_BASE=!RABBITMQ_BASE!\log
+ ) else (
+ set RABBITMQ_LOG_BASE=!LOG_BASE!
+ )
+)
+
+REM [ "x" = "x$RABBITMQ_MNESIA_BASE" ] && RABBITMQ_MNESIA_BASE=${MNESIA_BASE}
+if "!RABBITMQ_MNESIA_BASE!"=="" (
+ if "!MNESIA_BASE!"=="" (
+ set RABBITMQ_MNESIA_BASE=!RABBITMQ_BASE!\db
+ ) else (
+ set RABBITMQ_MNESIA_BASE=!MNESIA_BASE!
+ )
+)
+
+REM [ "x" = "x$RABBITMQ_SERVER_START_ARGS" ] && RABBITMQ_SERVER_START_ARGS=${SERVER_START_ARGS}
+REM No Windows equivalent
+
+REM [ "x" = "x$RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS" ] && RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS=${SERVER_ADDITIONAL_ERL_ARGS}
+REM No Windows equivalent
+
+REM [ "x" = "x$RABBITMQ_MNESIA_DIR" ] && RABBITMQ_MNESIA_DIR=${MNESIA_DIR}
+REM [ "x" = "x$RABBITMQ_MNESIA_DIR" ] && RABBITMQ_MNESIA_DIR=${RABBITMQ_MNESIA_BASE}/${RABBITMQ_NODENAME}
+if "!RABBITMQ_MNESIA_DIR!"=="" (
+ if "!MNESIA_DIR!"=="" (
+ set RABBITMQ_MNESIA_DIR=!RABBITMQ_MNESIA_BASE!\!RABBITMQ_NODENAME!-mnesia
+ ) else (
+ set RABBITMQ_MNESIA_DIR=!MNESIA_DIR!
+ )
+)
+
+REM [ "x" = "x$RABBITMQ_PID_FILE" ] && RABBITMQ_PID_FILE=${PID_FILE}
+REM [ "x" = "x$RABBITMQ_PID_FILE" ] && RABBITMQ_PID_FILE=${RABBITMQ_MNESIA_DIR}.pid
+REM No Windows equivalent
+
+REM [ "x" = "x$RABBITMQ_BOOT_MODULE" ] && RABBITMQ_BOOT_MODULE=${BOOT_MODULE}
+if "!RABBITMQ_BOOT_MODULE!"=="" (
+ if "!BOOT_MODULE!"=="" (
+ set RABBITMQ_BOOT_MODULE=rabbit
+ ) else (
+ set RABBITMQ_BOOT_MODULE=!BOOT_MODULE!
+ )
+)
+
+REM [ "x" = "x$RABBITMQ_PLUGINS_EXPAND_DIR" ] && RABBITMQ_PLUGINS_EXPAND_DIR=${PLUGINS_EXPAND_DIR}
+REM [ "x" = "x$RABBITMQ_PLUGINS_EXPAND_DIR" ] && RABBITMQ_PLUGINS_EXPAND_DIR=${RABBITMQ_MNESIA_BASE}/${RABBITMQ_NODENAME}-plugins-expand
+if "!RABBITMQ_PLUGINS_EXPAND_DIR!"=="" (
+ if "!PLUGINS_EXPAND_DIR!"=="" (
+ set RABBITMQ_PLUGINS_EXPAND_DIR=!RABBITMQ_MNESIA_BASE!\!RABBITMQ_NODENAME!-plugins-expand
+ ) else (
+ set RABBITMQ_PLUGINS_EXPAND_DIR=!PLUGINS_EXPAND_DIR!
+ )
+)
+
+REM [ "x" = "x$RABBITMQ_ENABLED_PLUGINS_FILE" ] && RABBITMQ_ENABLED_PLUGINS_FILE=${ENABLED_PLUGINS_FILE}
+if "!RABBITMQ_ENABLED_PLUGINS_FILE!"=="" (
+ if "!ENABLED_PLUGINS_FILE!"=="" (
+ set RABBITMQ_ENABLED_PLUGINS_FILE=!RABBITMQ_BASE!\enabled_plugins
+ ) else (
+ set RABBITMQ_ENABLED_PLUGINS_FILE=!ENABLED_PLUGINS_FILE!
+ )
+) else (
+ set RABBITMQ_ENABLED_PLUGINS_FILE_source=environment
+)
+
+REM [ "x" = "x$RABBITMQ_PLUGINS_DIR" ] && RABBITMQ_PLUGINS_DIR=${PLUGINS_DIR}
+if "!RABBITMQ_PLUGINS_DIR!"=="" (
+ if "!PLUGINS_DIR!"=="" (
+ set RABBITMQ_PLUGINS_DIR=!RABBITMQ_BASE!\plugins
+ ) else (
+ set RABBITMQ_PLUGINS_DIR=!PLUGINS_DIR!
+ )
+) else (
+ set RABBITMQ_PLUGINS_DIR_source=environment
+)
+
+REM ## Log rotation
+REM [ "x" = "x$RABBITMQ_LOGS" ] && RABBITMQ_LOGS=${LOGS}
+REM [ "x" = "x$RABBITMQ_LOGS" ] && RABBITMQ_LOGS="${RABBITMQ_LOG_BASE}/${RABBITMQ_NODENAME}.log"
+if "!RABBITMQ_LOGS!"=="" (
+ if "!LOGS!"=="" (
+ set RABBITMQ_LOGS=!RABBITMQ_LOG_BASE!\!RABBITMQ_NODENAME!.log
+ ) else (
+ set RABBITMQ_LOGS=!LOGS!
+ )
+)
+
+REM [ "x" = "x$RABBITMQ_SASL_LOGS" ] && RABBITMQ_SASL_LOGS=${SASL_LOGS}
+REM [ "x" = "x$RABBITMQ_SASL_LOGS" ] && RABBITMQ_SASL_LOGS="${RABBITMQ_LOG_BASE}/${RABBITMQ_NODENAME}-sasl.log"
+if "!RABBITMQ_SASL_LOGS!"=="" (
+ if "!SASL_LOGS!"=="" (
+ set RABBITMQ_SASL_LOGS=!RABBITMQ_LOG_BASE!\!RABBITMQ_NODENAME!-sasl.log
+ ) else (
+ set RABBITMQ_SASL_LOGS=!SASL_LOGS!
+ )
+)
+
+REM [ "x" = "x$RABBITMQ_CTL_ERL_ARGS" ] && RABBITMQ_CTL_ERL_ARGS=${CTL_ERL_ARGS}
+if "!$RABBITMQ_CTL_ERL_ARGS!"=="" (
+ if not "!CTL_ERL_ARGS!"=="" (
+ set RABBITMQ_CTL_ERL_ARGS=!CTL_ERL_ARGS!
+ )
+)
+
+REM ADDITIONAL WINDOWS ONLY CONFIG ITEMS
+REM rabbitmq-plugins.bat
+REM if "!RABBITMQ_SERVICENAME!"=="" (
+REM set RABBITMQ_SERVICENAME=RabbitMQ
+REM )
+
+if "!RABBITMQ_SERVICENAME!"=="" (
+ if "!SERVICENAME!"=="" (
+ set RABBITMQ_SERVICENAME=RabbitMQ
+ ) else (
+ set RABBITMQ_SERVICENAME=!SERVICENAME!
+ )
+)
+
+REM Development-specific environment.
+if defined RABBITMQ_DEV_ENV (
+ if "!SCRIPT_NAME!" == "rabbitmq-plugins" (
+ REM We may need to query the running node for the plugins directory
+ REM and the "enabled plugins" file.
+ if not "%RABBITMQ_PLUGINS_DIR_source%" == "environment" (
+ for /f "delims=" %%F in ('!SCRIPT_DIR!\rabbitmqctl eval "{ok, P} = application:get_env(rabbit, plugins_dir), io:format(\"~s~n^\", [P])."') do @set plugins_dir=%%F
+ if exist "!plugins_dir!" (
+ set RABBITMQ_PLUGINS_DIR=!plugins_dir!
+ )
+ REM set plugins_dir=
+ )
+ if not "%RABBITMQ_ENABLED_PLUGINS_FILE_source%" == "environment" (
+ for /f "delims=" %%F in ('!SCRIPT_DIR!\rabbitmqctl eval "{ok, P} = application:get_env(rabbit, enabled_plugins_file), io:format(\"~s~n\", [P])."') do @set enabled_plugins_file=%%F
+ if exist "!enabled_plugins_file!" (
+ set RABBITMQ_ENABLED_PLUGINS_FILE=!enabled_plugins_file!
+ )
+ REM set enabled_plugins_file=
+ )
+ )
+
+ if exist "!RABBITMQ_PLUGINS_DIR!" (
+ REM RabbitMQ was started with "make run-broker" from its own
+ REM source tree. Take rabbit_common from the plugins directory.
+ set ERL_LIBS=!RABBITMQ_PLUGINS_DIR!;!ERL_LIBS!
+ ) else (
+ REM RabbitMQ runs from a testsuite or a plugin. The .ez files are
+ REM not available under RabbitMQ source tree. We need to look at
+ REM $DEPS_DIR and default locations.
+
+ if not "!DEPS_DIR!" == "" (
+ if exist "!DEPS_DIR!\rabbit_common\ebin" (
+ REM $DEPS_DIR is set, and it contains rabbitmq-common, use
+ REM this.
+ set DEPS_DIR_norm=!DEPS_DIR!
+ ) else (
+ if exist "!SCRIPT_DIR!\..\..\..\erlang.mk" (
+ if exist "!SCRIPT_DIR!\..\..\rabbit_common\ebin" (
+ REM Look at default locations: "deps" subdirectory
+ REM inside a plugin or the Umbrella.
+ set DEPS_DIR_norm=!SCRIPT_DIR!\..\..
+ )
+ )
+ )
+ )
+ for /f "delims=" %%F in ('realpath "!DEPS_DIR_norm!"') do @set DEPS_DIR_norm=%%F
+
+ set ERL_LIBS=!DEPS_DIR_norm!;!ERL_LIBS!
+ )
+) else (
+ if exist "!RABBITMQ_PLUGINS_DIR!" (
+ REM RabbitMQ was started from its install directory. Take
+ REM rabbit_common from the plugins directory.
+ set ERL_LIBS=!RABBITMQ_PLUGINS_DIR!;!ERL_LIBS!
+ )
+)
+
+if "!ERL_LIBS!" == ";" (
+ set ERL_LIBS=
+)
+
+REM ##--- End of overridden <var_name> variables
+REM
+REM # Since we source this elsewhere, don't accidentally stop execution
+REM true
diff --git a/scripts/rabbitmq-plugins.bat b/scripts/rabbitmq-plugins.bat
index 6fb2f4f546..1371d5a33f 100644
--- a/scripts/rabbitmq-plugins.bat
+++ b/scripts/rabbitmq-plugins.bat
@@ -26,7 +26,7 @@ setlocal enabledelayedexpansion
REM Get default settings with user overrides for (RABBITMQ_)<var_name>
REM Non-empty defaults should be set in rabbitmq-env
-call "!TDP0!\rabbitmq-env.bat"
+call "!TDP0!\rabbitmq-env.bat" %~n0
if not exist "!ERLANG_HOME!\bin\erl.exe" (
echo.
diff --git a/scripts/rabbitmq-server.bat b/scripts/rabbitmq-server.bat
index 62da2f6256..7b5ee2e672 100644
--- a/scripts/rabbitmq-server.bat
+++ b/scripts/rabbitmq-server.bat
@@ -25,7 +25,7 @@ setlocal enabledelayedexpansion
REM Get default settings with user overrides for (RABBITMQ_)<var_name>
REM Non-empty defaults should be set in rabbitmq-env
-call "%TDP0%\rabbitmq-env.bat"
+call "%TDP0%\rabbitmq-env.bat" %~n0
if not exist "!ERLANG_HOME!\bin\erl.exe" (
echo.
diff --git a/scripts/rabbitmq-service.bat b/scripts/rabbitmq-service.bat
index 0845bbf58e..389dd7eea1 100644
--- a/scripts/rabbitmq-service.bat
+++ b/scripts/rabbitmq-service.bat
@@ -26,7 +26,7 @@ setlocal enabledelayedexpansion
REM Get default settings with user overrides for (RABBITMQ_)<var_name>
REM Non-empty defaults should be set in rabbitmq-env
-call "%TDP0%\rabbitmq-env.bat"
+call "%TDP0%\rabbitmq-env.bat" %~n0
set STARVAR=
shift
@@ -167,8 +167,8 @@ set ERLANG_SERVICE_ARGUMENTS= ^
!RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS! ^
-sasl errlog_type error ^
-sasl sasl_error_logger false ^
--rabbit error_logger {file,\""!LOGS:\=/!"\"} ^
--rabbit sasl_error_logger {file,\""!SASL_LOGS:\=/!"\"} ^
+-rabbit error_logger {file,\""!RABBITMQ_LOGS:\=/!"\"} ^
+-rabbit sasl_error_logger {file,\""!RABBITMQ_SASL_LOGS:\=/!"\"} ^
-rabbit enabled_plugins_file \""!RABBITMQ_ENABLED_PLUGINS_FILE:\=/!"\" ^
-rabbit plugins_dir \""!RABBITMQ_PLUGINS_DIR:\=/!"\" ^
-rabbit plugins_expand_dir \""!RABBITMQ_PLUGINS_EXPAND_DIR:\=/!"\" ^
@@ -187,6 +187,7 @@ set ERLANG_SERVICE_ARGUMENTS=!ERLANG_SERVICE_ARGUMENTS:"=\"!
"!ERLANG_SERVICE_MANAGER_PATH!\erlsrv" set !RABBITMQ_SERVICENAME! ^
-machine "!ERLANG_SERVICE_MANAGER_PATH!\erl.exe" ^
-env ERL_CRASH_DUMP="!RABBITMQ_BASE:\=/!/erl_crash.dump" ^
+-env ERL_LIBS="!ERL_LIBS!" ^
-workdir "!RABBITMQ_BASE!" ^
-stopaction "rabbit:stop_and_halt()." ^
!RABBITMQ_NAME_TYPE! !RABBITMQ_NODENAME! ^
diff --git a/scripts/rabbitmqctl.bat b/scripts/rabbitmqctl.bat
index 9ad855bf87..34236a53a9 100644
--- a/scripts/rabbitmqctl.bat
+++ b/scripts/rabbitmqctl.bat
@@ -26,7 +26,7 @@ setlocal enabledelayedexpansion
REM Get default settings with user overrides for (RABBITMQ_)<var_name>
REM Non-empty defaults should be set in rabbitmq-env
-call "%TDP0%\rabbitmq-env.bat"
+call "%TDP0%\rabbitmq-env.bat" %~n0
if not exist "!ERLANG_HOME!\bin\erl.exe" (
echo.
diff --git a/src/rabbit_disk_monitor.erl b/src/rabbit_disk_monitor.erl
index 68f6095176..3e9171b79a 100644
--- a/src/rabbit_disk_monitor.erl
+++ b/src/rabbit_disk_monitor.erl
@@ -61,7 +61,10 @@
%% timer that drives periodic checks
timer,
%% is free disk space alarm currently in effect?
- alarmed
+ alarmed,
+ %% is monitoring enabled? false on unsupported
+ %% platforms
+ enabled
}).
%%----------------------------------------------------------------------------
@@ -117,7 +120,8 @@ init([Limit]) ->
State = #state{dir = Dir,
min_interval = ?DEFAULT_MIN_DISK_CHECK_INTERVAL,
max_interval = ?DEFAULT_MAX_DISK_CHECK_INTERVAL,
- alarmed = false},
+ alarmed = false,
+ enabled = true},
case {catch get_disk_free(Dir),
vm_memory_monitor:get_total_memory()} of
{N1, N2} when is_integer(N1), is_integer(N2) ->
@@ -125,12 +129,17 @@ init([Limit]) ->
Err ->
rabbit_log:info("Disabling disk free space monitoring "
"on unsupported platform:~n~p~n", [Err]),
- {stop, unsupported_platform}
+ {ok, State#state{enabled = false}}
end.
handle_call(get_disk_free_limit, _From, State = #state{limit = Limit}) ->
{reply, Limit, State};
+handle_call({set_disk_free_limit, _}, _From, #state{enabled = false} = State) ->
+ rabbit_log:info("Cannot set disk free limit: "
+ "disabled disk free space monitoring", []),
+ {reply, ok, State};
+
handle_call({set_disk_free_limit, Limit}, _From, State) ->
{reply, ok, set_disk_limits(State, Limit)};
diff --git a/src/rabbit_queue_location_validator.erl b/src/rabbit_queue_location_validator.erl
index 4eab52855a..00bea44e29 100644
--- a/src/rabbit_queue_location_validator.erl
+++ b/src/rabbit_queue_location_validator.erl
@@ -25,20 +25,20 @@
[{description, "Queue location policy validation"},
{mfa, {rabbit_registry, register,
[policy_validator,
- <<"x-queue-master-locator">>,
+ <<"queue-master-locator">>,
?MODULE]}}]}).
validate_policy(KeyList) ->
- case proplists:lookup(<<"x-queue-master-locator">> , KeyList) of
+ case proplists:lookup(<<"queue-master-locator">> , KeyList) of
{_, Strategy} -> validate_strategy(Strategy);
- _ -> {error, "x-queue-master-locator undefined"}
+ _ -> {error, "queue-master-locator undefined"}
end.
validate_strategy(Strategy) ->
case module(Strategy) of
- R={ok, _M} -> R;
- _ ->
- {error, "~p invalid x-queue-master-locator value", [Strategy]}
+ R = {ok, _M} -> R;
+ _ ->
+ {error, "~p invalid queue-master-locator value", [Strategy]}
end.
policy(Policy, Q) ->
@@ -48,7 +48,7 @@ policy(Policy, Q) ->
end.
module(#amqqueue{} = Q) ->
- case policy(<<"x-queue-master-locator">>, Q) of
+ case policy(<<"queue-master-locator">>, Q) of
undefined -> no_location_strategy;
Mode -> module(Mode)
end;
@@ -63,6 +63,7 @@ module(Strategy) when is_binary(Strategy) ->
non_existing -> no_location_strategy;
_ -> {ok, Module}
end;
- _ -> no_location_strategy
+ _ ->
+ no_location_strategy
end
end.
diff --git a/src/rabbit_queue_master_location_misc.erl b/src/rabbit_queue_master_location_misc.erl
index 279869d054..17f5512f95 100644
--- a/src/rabbit_queue_master_location_misc.erl
+++ b/src/rabbit_queue_master_location_misc.erl
@@ -30,7 +30,7 @@ lookup_master(QueueNameBin, VHostPath) when is_binary(QueueNameBin),
is_binary(VHostPath) ->
Queue = rabbit_misc:r(VHostPath, queue, QueueNameBin),
case rabbit_amqqueue:lookup(Queue) of
- {ok, #amqqueue{pid=Pid}} when is_pid(Pid) ->
+ {ok, #amqqueue{pid = Pid}} when is_pid(Pid) ->
{ok, node(Pid)};
Error -> Error
end.
@@ -45,16 +45,16 @@ lookup_queue(QueueNameBin, VHostPath) when is_binary(QueueNameBin),
get_location(Queue=#amqqueue{})->
Reply1 = case get_location_mod_by_args(Queue) of
- _Err1={error, _} ->
- case get_location_mod_by_policy(Queue) of
- _Err2={error, _} ->
- case get_location_mod_by_config(Queue) of
- Err3={error, _} -> Err3;
- Reply0={ok, _Module} -> Reply0
- end;
- Reply0={ok, _Module} -> Reply0
- end;
- Reply0={ok, _Module} -> Reply0
+ _Err1 = {error, _} ->
+ case get_location_mod_by_policy(Queue) of
+ _Err2 = {error, _} ->
+ case get_location_mod_by_config(Queue) of
+ Err3 = {error, _} -> Err3;
+ Reply0 = {ok, _Module} -> Reply0
+ end;
+ Reply0 = {ok, _Module} -> Reply0
+ end;
+ Reply0 = {ok, _Module} -> Reply0
end,
case Reply1 of
@@ -66,19 +66,19 @@ get_location_mod_by_args(#amqqueue{arguments=Args}) ->
case proplists:lookup(<<"x-queue-master-locator">> , Args) of
{<<"x-queue-master-locator">> , Strategy} ->
case rabbit_queue_location_validator:validate_strategy(Strategy) of
- Reply={ok, _CB} -> Reply;
- Error -> Error
+ Reply = {ok, _CB} -> Reply;
+ Error -> Error
end;
_ -> {error, "x-queue-master-locator undefined"}
end.
get_location_mod_by_policy(Queue=#amqqueue{}) ->
- case rabbit_policy:get(<<"x-queue-master-locator">> , Queue) of
- undefined -> {error, "x-queue-master-locator policy undefined"};
+ case rabbit_policy:get(<<"queue-master-locator">> , Queue) of
+ undefined -> {error, "queue-master-locator policy undefined"};
Strategy ->
case rabbit_queue_location_validator:validate_strategy(Strategy) of
- Reply={ok, _CB} -> Reply;
- Error -> Error
+ Reply = {ok, _CB} -> Reply;
+ Error -> Error
end
end.
@@ -86,11 +86,10 @@ get_location_mod_by_config(#amqqueue{}) ->
case application:get_env(rabbit, queue_master_locator) of
{ok, Strategy} ->
case rabbit_queue_location_validator:validate_strategy(Strategy) of
- Reply={ok, _CB} -> Reply;
- Error -> Error
+ Reply = {ok, _CB} -> Reply;
+ Error -> Error
end;
_ -> {error, "queue_master_locator undefined"}
end.
all_nodes() -> rabbit_mnesia:cluster_nodes(running).
-