summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile100
-rw-r--r--packaging/RPMS/Fedora/Makefile10
-rw-r--r--packaging/RPMS/Fedora/rabbitmq-server.spec2
-rw-r--r--packaging/debs/Debian/Makefile9
-rwxr-xr-xpackaging/debs/Debian/debian/rules2
-rw-r--r--packaging/generic-unix/Makefile24
-rw-r--r--packaging/standalone/Makefile28
-rw-r--r--packaging/standalone/src/rabbit_release.erl4
-rw-r--r--packaging/windows-exe/Makefile13
-rw-r--r--packaging/windows/Makefile8
10 files changed, 149 insertions, 51 deletions
diff --git a/Makefile b/Makefile
index 9ddb796580..b8922c5fc9 100644
--- a/Makefile
+++ b/Makefile
@@ -253,7 +253,7 @@ clean-source-dist:
# Installation.
# --------------------------------------------------------------------
-.PHONY: install install-erlapp install-scripts install-man
+.PHONY: install install-erlapp install-scripts install-bin install-man
.PHONY: install-windows install-windows-erlapp install-windows-scripts install-windows-docs
DESTDIR ?=
@@ -262,11 +262,10 @@ PREFIX ?= /usr/local
WINDOWS_PREFIX ?= rabbitmq-server-windows-$(VERSION)
MANDIR ?= $(PREFIX)/share/man
-
RMQ_ROOTDIR ?= $(PREFIX)/lib/erlang
-RMQ_BINDIR = $(RMQ_ROOTDIR)/bin
-RMQ_LIBDIR = $(RMQ_ROOTDIR)/lib
-RMQ_ERLAPP_DIR = $(RMQ_LIBDIR)/rabbitmq_server-$(VERSION)
+RMQ_BINDIR ?= $(RMQ_ROOTDIR)/bin
+RMQ_LIBDIR ?= $(RMQ_ROOTDIR)/lib
+RMQ_ERLAPP_DIR ?= $(RMQ_LIBDIR)/rabbitmq_server-$(VERSION)
SCRIPTS = rabbitmq-defaults \
rabbitmq-env \
@@ -289,46 +288,49 @@ inst_verbose = $(inst_verbose_$(V))
install: install-erlapp install-scripts
-install-dirs:
- $(verbose) mkdir -p $(DESTDIR)$(RMQ_BINDIR) $(DESTDIR)$(RMQ_LIBDIR)
- $(inst_verbose) mkdir -p $(DESTDIR)$(RMQ_ERLAPP_DIR)
- $(verbose) mkdir -p $(DESTDIR)$(RMQ_ERLAPP_DIR)/sbin
-
-install-erlapp: dist install-dirs
+install-erlapp: dist
+ $(verbose) mkdir -p $(DESTDIR)$(RMQ_ERLAPP_DIR)
$(inst_verbose) cp -a 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.
+ @# rabbitmq-common provides headers too: copy them to
+ @# rabbitmq_server/include.
$(verbose) cp -a $(DEPS_DIR)/rabbit_common/include $(DESTDIR)$(RMQ_ERLAPP_DIR)
-install-scripts: install-dirs
+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"; \
chmod 0755 "$(DESTDIR)$(RMQ_ERLAPP_DIR)/sbin/$$script"; \
+ done
+
+# FIXME: We do symlinks to scripts in $(RMQ_ERLAPP_DIR))/sbin but this
+# code assumes a certain hierarchy to make relative symlinks.
+install-bin: install-scripts
+ $(verbose) mkdir -p $(DESTDIR)$(RMQ_BINDIR)
+ $(inst_verbose) for script in $(SCRIPTS); do \
test -e $(DESTDIR)$(RMQ_BINDIR)/$$script || \
ln -sf ../lib/$(notdir $(RMQ_ERLAPP_DIR))/sbin/$$script \
$(DESTDIR)$(RMQ_BINDIR)/$$script; \
done
-install-man: manpages install-dirs
- $(inst_verbose) sections=$$(ls -1 docs/*.[1-9] | sed -E 's/.*\.([1-9])$$/\1/' | uniq | sort); \
+install-man: manpages
+ $(inst_verbose) sections=$$(ls -1 docs/*.[1-9] \
+ | sed -E 's/.*\.([1-9])$$/\1/' | uniq | sort); \
for section in $$sections; do \
mkdir -p $(DESTDIR)$(MANDIR)/man$$section; \
for manpage in $(DOCS_DIR)/*.$$section; do \
- gzip < $$manpage > $(DESTDIR)$(MANDIR)/man$$section/$$(basename $$manpage).gz; \
+ gzip < $$manpage \
+ > $(DESTDIR)$(MANDIR)/man$$section/$$(basename $$manpage).gz; \
done; \
done
install-windows: install-windows-erlapp install-windows-scripts install-windows-docs
-install-windows-dirs:
- $(inst_verbose) mkdir -p $(DESTDIR)$(WINDOWS_PREFIX)/sbin
- $(verbose) mkdir -p $(DESTDIR)$(WINDOWS_PREFIX)/etc
-
-install-windows-erlapp: dist install-windows-dirs
+install-windows-erlapp: dist
+ $(verbose) mkdir -p $(DESTDIR)$(WINDOWS_PREFIX)
$(inst_verbose) cp -a include ebin plugins LICENSE* INSTALL \
$(DESTDIR)$(WINDOWS_PREFIX)
$(verbose) echo "Put your EZs here and use rabbitmq-plugins.bat to enable them." \
@@ -339,13 +341,15 @@ install-windows-erlapp: dist install-windows-dirs
# rabbitmq_server/include.
$(verbose) cp -a $(DEPS_DIR)/rabbit_common/include $(DESTDIR)$(WINDOWS_PREFIX)
-install-windows-scripts: install-windows-dirs
+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"; \
chmod 0755 "$(DESTDIR)$(WINDOWS_PREFIX)/sbin/$$script"; \
done
-install-windows-docs: install-windows-dirs install-windows-erlapp
+install-windows-docs: install-windows-erlapp
+ $(verbose) mkdir -p $(DESTDIR)$(WINDOWS_PREFIX)/etc
$(inst_verbose) xmlto -o . xhtml-nochunks docs/rabbitmq-service.xml
$(verbose) elinks -dump -no-references -no-numbering rabbitmq-service.html \
> $(DESTDIR)$(WINDOWS_PREFIX)/readme-service.txt
@@ -368,16 +372,50 @@ install-windows-docs: install-windows-dirs install-windows-erlapp
# Packaging.
# --------------------------------------------------------------------
-.PHONY: packages package-deb package-rpm package-windows
+.PHONY: packages package-deb \
+ package-rpm package-rpm-fedora package-rpm-suse \
+ package-windows package-standalone-macosx \
+ package-generic-unix
+
+PACKAGES_DIR ?= $(abspath PACKAGES)
-packages: package-deb package-rpm package-windows
+packages: package-deb package-rpm package-windows package-standalone-macosx \
+ package-generic-unix
+ @:
package-deb: source-dist
- $(MAKE) -C packaging/debs/Debian package
+ $(gen_verbose) $(MAKE) -C packaging/debs/Debian \
+ PACKAGES_DIR=$(PACKAGES_DIR) \
+ all clean
+
+package-rpm: package-rpm-fedora package-rpm-suse
+ @:
+
+package-rpm-fedora: source-dist
+ $(gen_verbose) $(MAKE) -C packaging/RPMS/Fedora \
+ PACKAGES_DIR=$(PACKAGES_DIR) \
+ all clean
-package-rpm: source-dist
- $(MAKE) -C packaging/RPMS/Fedora
+package-rpm-suse: source-dist
+ $(gen_verbose) $(MAKE) -C packaging/RPMS/Fedora \
+ PACKAGES_DIR=$(PACKAGES_DIR) \
+ RPM_OS=suse \
+ all clean
package-windows: source-dist
- $(MAKE) -C packaging/windows
- $(MAKE) -C packaging/windows-exe
+ $(gen_verbose) $(MAKE) -C packaging/windows \
+ PACKAGES_DIR=$(PACKAGES_DIR) \
+ all clean
+ $(verbose) $(MAKE) -C packaging/windows-exe \
+ PACKAGES_DIR=$(PACKAGES_DIR) \
+ all clean
+
+package-standalone-macosx: source-dist
+ $(gen_verbose) $(MAKE) -C packaging/standalone OS=mac \
+ PACKAGES_DIR=$(PACKAGES_DIR) \
+ all clean
+
+package-generic-unix: source-dist
+ $(gen_verbose) $(MAKE) -C packaging/generic-unix \
+ PACKAGES_DIR=$(PACKAGES_DIR) \
+ all clean
diff --git a/packaging/RPMS/Fedora/Makefile b/packaging/RPMS/Fedora/Makefile
index 3ca977980c..5bb3f7ca96 100644
--- a/packaging/RPMS/Fedora/Makefile
+++ b/packaging/RPMS/Fedora/Makefile
@@ -25,7 +25,10 @@ SPEC_DEFINES=--define 'group_tag Development/Libraries'
START_PROG=daemon
endif
-rpms: clean server
+.PHONY: all prepare server clean
+
+all: clean server
+ @:
prepare:
mkdir -p BUILD SOURCES SPECS SRPMS RPMS tmp
@@ -50,5 +53,10 @@ endif
server: prepare
rpmbuild -ba --nodeps SPECS/rabbitmq-server.spec $(DEFINES) $(OS_DEFINES) $(SPEC_DEFINES)
+ if test "$(PACKAGES_DIR)"; then \
+ mkdir -p "$(PACKAGES_DIR)"; \
+ mv SRPMS/*.rpm RPMS/noarch/*.rpm "$(PACKAGES_DIR)"; \
+ fi
+
clean:
rm -rf SOURCES SPECS RPMS SRPMS BUILD tmp
diff --git a/packaging/RPMS/Fedora/rabbitmq-server.spec b/packaging/RPMS/Fedora/rabbitmq-server.spec
index 83cb770654..5e2b4e0586 100644
--- a/packaging/RPMS/Fedora/rabbitmq-server.spec
+++ b/packaging/RPMS/Fedora/rabbitmq-server.spec
@@ -43,7 +43,7 @@ make %{?_smp_mflags} dist manpages
%install
rm -rf %{buildroot}
-make install install-man DESTDIR=%{buildroot} PREFIX=%{_exec_prefix} RMQ_ROOTDIR=%{_rabbit_libdir} MANDIR=%{_mandir}
+make install install-bin install-man DESTDIR=%{buildroot} PREFIX=%{_exec_prefix} RMQ_ROOTDIR=%{_rabbit_libdir} MANDIR=%{_mandir}
mkdir -p %{buildroot}%{_localstatedir}/lib/rabbitmq/mnesia
mkdir -p %{buildroot}%{_localstatedir}/log/rabbitmq
diff --git a/packaging/debs/Debian/Makefile b/packaging/debs/Debian/Makefile
index bf0d3b7bb6..ffab0d14f0 100644
--- a/packaging/debs/Debian/Makefile
+++ b/packaging/debs/Debian/Makefile
@@ -13,8 +13,8 @@ else
SIGNING=-k$(SIGNING_KEY_ID)
endif
-all:
- @echo 'Please choose a target from the Makefile.'
+all: package
+ @:
package: clean
cp -a $(TARBALL_DIR)/$(TARBALL) $(DEBIAN_ORIG_TARBALL)
@@ -29,6 +29,11 @@ package: clean
cd $(UNPACKED_DIR); GNUPGHOME=$(GNUPG_PATH)/.gnupg dpkg-buildpackage -sa $(SIGNING)
rm -rf $(UNPACKED_DIR)
+ if test "$(PACKAGES_DIR)"; then \
+ mkdir -p "$(PACKAGES_DIR)"; \
+ mv $(PACKAGENAME)_$(VERSION)* "$(PACKAGES_DIR)"; \
+ fi
+
clean:
rm -rf $(UNPACKED_DIR)
rm -f $(PACKAGENAME)_*.tar.gz
diff --git a/packaging/debs/Debian/debian/rules b/packaging/debs/Debian/debian/rules
index f49e1e0eea..0bee6deadc 100755
--- a/packaging/debs/Debian/debian/rules
+++ b/packaging/debs/Debian/debian/rules
@@ -27,6 +27,8 @@ override_dh_auto_install: RMQ_ERLAPP_DIR = $(RMQ_ROOTDIR)/lib/rabbitmq_server-$(
override_dh_auto_install:
dh_auto_install
+ $(MAKE) install-bin DESTDIR=$(DEB_DESTDIR)
+
sed -e 's|@RABBIT_LIB@|$(RMQ_ERLAPP_DIR)|g' \
< debian/postrm.in > debian/postrm
diff --git a/packaging/generic-unix/Makefile b/packaging/generic-unix/Makefile
index ddad8c09fa..8c7028f14d 100644
--- a/packaging/generic-unix/Makefile
+++ b/packaging/generic-unix/Makefile
@@ -1,17 +1,22 @@
-VERSION=0.0.0
+TARBALL_DIR ?= ../..
+TARBALL ?= $(notdir $(wildcard $(TARBALL_DIR)/rabbitmq-server-[0-9.]*.tar.xz))
+VERSION ?= $(patsubst rabbitmq-server-%.tar.xz,%,$(TARBALL))
+
SOURCE_DIR=rabbitmq-server-$(VERSION)
TARGET_DIR=rabbitmq_server-$(VERSION)
TARGET_TARBALL=rabbitmq-server-generic-unix-$(VERSION)
+all: dist
+ @:
+
dist:
- tar -zxf ../../dist/$(SOURCE_DIR).tar.gz
+ tar -Jxf $(TARBALL_DIR)/$(TARBALL)
$(MAKE) -C $(SOURCE_DIR) \
- TARGET_DIR=`pwd`/$(TARGET_DIR) \
- SBIN_DIR=`pwd`/$(TARGET_DIR)/sbin \
- MAN_DIR=`pwd`/$(TARGET_DIR)/share/man \
- DOC_INSTALL_DIR=`pwd`/$(TARGET_DIR)/etc/rabbitmq \
- install
+ PREFIX= RMQ_ROOTDIR= \
+ RMQ_ERLAPP_DIR=`pwd`/$(TARGET_DIR) \
+ MANDIR=`pwd`/$(TARGET_DIR)/share/man \
+ manpages install install-man
sed -e 's:^SYS_PREFIX=$$:SYS_PREFIX=\$${RABBITMQ_HOME}:' \
$(TARGET_DIR)/sbin/rabbitmq-defaults >$(TARGET_DIR)/sbin/rabbitmq-defaults.tmp \
@@ -23,6 +28,11 @@ dist:
tar -zcf $(TARGET_TARBALL).tar.gz $(TARGET_DIR)
rm -rf $(SOURCE_DIR) $(TARGET_DIR)
+ if test "$(PACKAGES_DIR)"; then \
+ mkdir -p "$(PACKAGES_DIR)"; \
+ mv $(TARGET_TARBALL).tar.gz "$(PACKAGES_DIR)"; \
+ fi
+
clean: clean_partial
rm -f rabbitmq-server-generic-unix-*.tar.gz
diff --git a/packaging/standalone/Makefile b/packaging/standalone/Makefile
index 903458836c..e1dd1632bc 100644
--- a/packaging/standalone/Makefile
+++ b/packaging/standalone/Makefile
@@ -1,4 +1,7 @@
-VERSION=0.0.0
+TARBALL_DIR ?= ../..
+TARBALL ?= $(notdir $(wildcard $(TARBALL_DIR)/rabbitmq-server-[0-9.]*.tar.xz))
+VERSION ?= $(patsubst rabbitmq-server-%.tar.xz,%,$(TARBALL))
+
SOURCE_DIR=rabbitmq-server-$(VERSION)
TARGET_DIR=rabbitmq_server-$(VERSION)
TARGET_TARBALL=rabbitmq-server-$(OS)-standalone-$(VERSION)
@@ -18,15 +21,20 @@ RABBITMQ_DEFAULTS=$(TARGET_DIR)/sbin/rabbitmq-defaults
fix_defaults = sed -e $(1) $(RABBITMQ_DEFAULTS) > $(RABBITMQ_DEFAULTS).tmp \
&& mv $(RABBITMQ_DEFAULTS).tmp $(RABBITMQ_DEFAULTS)
+all: dist
+ @:
+
dist:
- tar -zxf ../../dist/$(SOURCE_DIR).tar.gz
+ tar -Jxf $(TARBALL_DIR)/$(TARBALL)
$(MAKE) -C $(SOURCE_DIR) \
- TARGET_DIR=`pwd`/$(TARGET_DIR) \
- SBIN_DIR=`pwd`/$(TARGET_DIR)/sbin \
- MAN_DIR=`pwd`/$(TARGET_DIR)/share/man \
- DOC_INSTALL_DIR=`pwd`/$(TARGET_DIR)/etc/rabbitmq \
- install
+ PREFIX= RMQ_ROOTDIR= \
+ RMQ_ERLAPP_DIR=`pwd`/$(TARGET_DIR) \
+ MANDIR=`pwd`/$(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
## Here we set the RABBITMQ_HOME variable,
## then we make ERL_DIR point to our released erl
@@ -70,6 +78,11 @@ dist:
tar -zcf $(TARGET_TARBALL).tar.gz -C $(TARGET_DIR)/release $(TARGET_DIR)
rm -rf $(SOURCE_DIR) $(TARGET_DIR)
+ if test "$(PACKAGES_DIR)"; then \
+ mkdir -p "$(PACKAGES_DIR)"; \
+ mv $(TARGET_TARBALL).tar.gz "$(PACKAGES_DIR)"; \
+ fi
+
clean: clean_partial
rm -f rabbitmq-server-$(OS)-standalone-*.tar.gz
@@ -83,6 +96,7 @@ generate_release:
-I $(TARGET_DIR)/include/ -o src -Wall \
-v +debug_info -Duse_specs -Duse_proper_qc \
-pa $(TARGET_DIR)/ebin/ src/rabbit_release.erl
+ ERL_LIBS="$(TARGET_DIR)/plugins:$$ERL_LIBS" \
erl \
-pa "$(RABBITMQ_EBIN_ROOT)" \
-pa src \
diff --git a/packaging/standalone/src/rabbit_release.erl b/packaging/standalone/src/rabbit_release.erl
index f5e1ecf8a1..21bf2484c5 100644
--- a/packaging/standalone/src/rabbit_release.erl
+++ b/packaging/standalone/src/rabbit_release.erl
@@ -40,8 +40,8 @@ start() ->
%% add the plugin ebin folder to the code path.
add_plugins_to_path(UnpackedPluginDir),
- PluginAppNames = [P#plugin.name ||
- P <- rabbit_plugins:list(PluginsDistDir)],
+ PluginAppNames = [rabbit_common | [P#plugin.name ||
+ P <- rabbit_plugins:list(PluginsDistDir)]],
%% Build the entire set of dependencies - this will load the
%% applications along the way
diff --git a/packaging/windows-exe/Makefile b/packaging/windows-exe/Makefile
index b6f587ad43..047e208f09 100644
--- a/packaging/windows-exe/Makefile
+++ b/packaging/windows-exe/Makefile
@@ -1,10 +1,23 @@
+ifeq ($(PACKAGES_DIR),)
ZIP_DIR = ../windows
+else
+ZIP_DIR = $(PACKAGES_DIR)
+endif
ZIP = $(notdir $(wildcard $(ZIP_DIR)/rabbitmq-server-windows-[0-9.]*.zip))
+
VERSION = $(patsubst rabbitmq-server-windows-%.zip,%,$(ZIP))
+all: dist
+ @:
+
dist: rabbitmq-$(VERSION).nsi rabbitmq_server-$(VERSION)
makensis -V2 rabbitmq-$(VERSION).nsi
+ if test "$(PACKAGES_DIR)"; then \
+ mkdir -p "$(PACKAGES_DIR)"; \
+ mv rabbitmq-server-$(VERSION).exe "$(PACKAGES_DIR)"; \
+ fi
+
rabbitmq-$(VERSION).nsi: rabbitmq_nsi.in
sed \
-e 's|%%VERSION%%|$(VERSION)|' \
diff --git a/packaging/windows/Makefile b/packaging/windows/Makefile
index 670a356f3d..dba27112fc 100644
--- a/packaging/windows/Makefile
+++ b/packaging/windows/Makefile
@@ -6,6 +6,9 @@ SOURCE_DIR=rabbitmq-server-$(VERSION)
TARGET_DIR=rabbitmq_server-$(VERSION)
TARGET_ZIP=rabbitmq-server-windows-$(VERSION)
+all: dist
+ @:
+
dist:
tar -Jxf $(TARBALL_DIR)/$(TARBALL)
$(MAKE) -C $(SOURCE_DIR) install-windows DESTDIR=$(abspath $(TARGET_DIR)) WINDOWS_PREFIX=
@@ -13,6 +16,11 @@ dist:
zip -q -r $(TARGET_ZIP).zip $(TARGET_DIR)
rm -rf $(SOURCE_DIR) $(TARGET_DIR)
+ if test "$(PACKAGES_DIR)"; then \
+ mkdir -p "$(PACKAGES_DIR)"; \
+ mv $(TARGET_ZIP).zip "$(PACKAGES_DIR)"; \
+ fi
+
clean: clean_partial
rm -f rabbitmq-server-windows-*.zip