diff options
| -rw-r--r-- | Makefile | 100 | ||||
| -rw-r--r-- | packaging/RPMS/Fedora/Makefile | 10 | ||||
| -rw-r--r-- | packaging/RPMS/Fedora/rabbitmq-server.spec | 2 | ||||
| -rw-r--r-- | packaging/debs/Debian/Makefile | 9 | ||||
| -rwxr-xr-x | packaging/debs/Debian/debian/rules | 2 | ||||
| -rw-r--r-- | packaging/generic-unix/Makefile | 24 | ||||
| -rw-r--r-- | packaging/standalone/Makefile | 28 | ||||
| -rw-r--r-- | packaging/standalone/src/rabbit_release.erl | 4 | ||||
| -rw-r--r-- | packaging/windows-exe/Makefile | 13 | ||||
| -rw-r--r-- | packaging/windows/Makefile | 8 |
10 files changed, 149 insertions, 51 deletions
@@ -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 |
