From 36fef6b5b74b22c33c7d37f3cd0464bfa0adebce Mon Sep 17 00:00:00 2001 From: Philip Kuryloski Date: Fri, 26 Feb 2021 09:05:30 +0100 Subject: [PATCH] Revert "Remove directories used by the server release pipeline" This reverts commit b1eaf8c9e20bfe7068cafcccf73f7117fc0e196b. --- packaging/RPMS/Fedora/Makefile | 171 ++++++ packaging/RPMS/Fedora/rabbitmq-server.init | 192 ++++++ .../RPMS/Fedora/rabbitmq-server.logrotate | 7 + packaging/RPMS/Fedora/rabbitmq-server.service | 41 ++ packaging/RPMS/Fedora/rabbitmq-server.spec | 520 +++++++++++++++++ .../RPMS/Fedora/rabbitmq-server.tmpfiles | 1 + .../Fedora/scripts/compare-rpm-versions.py | 41 ++ .../Fedora/scripts/format-package-version | 8 + .../RPMS/Fedora/scripts/parse-changelog.sh | 14 + .../RPMS/Fedora/scripts/update-changelog.sh | 56 ++ packaging/debs/Debian/.gitignore | 3 + packaging/debs/Debian/Makefile | 128 ++++ packaging/debs/Debian/debian/changelog | 547 ++++++++++++++++++ packaging/debs/Debian/debian/compat | 1 + packaging/debs/Debian/debian/control | 89 +++ packaging/debs/Debian/debian/copyright | 405 +++++++++++++ packaging/debs/Debian/debian/dirs | 9 + packaging/debs/Debian/debian/postinst | 79 +++ packaging/debs/Debian/debian/postrm | 75 +++ .../Debian/debian/rabbitmq-server.default | 9 + .../debs/Debian/debian/rabbitmq-server.docs | 1 + .../debs/Debian/debian/rabbitmq-server.init | 200 +++++++ .../Debian/debian/rabbitmq-server.logrotate | 7 + .../Debian/debian/rabbitmq-server.manpages | 4 + .../Debian/debian/rabbitmq-server.service | 39 ++ packaging/debs/Debian/debian/rules | 63 ++ packaging/debs/Debian/debian/source/format | 1 + packaging/debs/Debian/debian/watch | 4 + .../Debian/scripts/compare-debian-versions.py | 22 + .../Debian/scripts/format-package-version | 8 + .../scripts/get-debian-package-files-list.sh | 33 ++ .../debs/Debian/scripts/update-changelog.sh | 36 ++ 32 files changed, 2814 insertions(+) create mode 100644 packaging/RPMS/Fedora/Makefile create mode 100644 packaging/RPMS/Fedora/rabbitmq-server.init create mode 100644 packaging/RPMS/Fedora/rabbitmq-server.logrotate create mode 100644 packaging/RPMS/Fedora/rabbitmq-server.service create mode 100644 packaging/RPMS/Fedora/rabbitmq-server.spec create mode 100644 packaging/RPMS/Fedora/rabbitmq-server.tmpfiles create mode 100755 packaging/RPMS/Fedora/scripts/compare-rpm-versions.py create mode 100755 packaging/RPMS/Fedora/scripts/format-package-version create mode 100755 packaging/RPMS/Fedora/scripts/parse-changelog.sh create mode 100755 packaging/RPMS/Fedora/scripts/update-changelog.sh create mode 100644 packaging/debs/Debian/.gitignore create mode 100644 packaging/debs/Debian/Makefile create mode 100644 packaging/debs/Debian/debian/changelog create mode 100644 packaging/debs/Debian/debian/compat create mode 100644 packaging/debs/Debian/debian/control create mode 100644 packaging/debs/Debian/debian/copyright create mode 100644 packaging/debs/Debian/debian/dirs create mode 100644 packaging/debs/Debian/debian/postinst create mode 100644 packaging/debs/Debian/debian/postrm create mode 100644 packaging/debs/Debian/debian/rabbitmq-server.default create mode 100644 packaging/debs/Debian/debian/rabbitmq-server.docs create mode 100644 packaging/debs/Debian/debian/rabbitmq-server.init create mode 100644 packaging/debs/Debian/debian/rabbitmq-server.logrotate create mode 100644 packaging/debs/Debian/debian/rabbitmq-server.manpages create mode 100644 packaging/debs/Debian/debian/rabbitmq-server.service create mode 100755 packaging/debs/Debian/debian/rules create mode 100644 packaging/debs/Debian/debian/source/format create mode 100644 packaging/debs/Debian/debian/watch create mode 100755 packaging/debs/Debian/scripts/compare-debian-versions.py create mode 100755 packaging/debs/Debian/scripts/format-package-version create mode 100755 packaging/debs/Debian/scripts/get-debian-package-files-list.sh create mode 100755 packaging/debs/Debian/scripts/update-changelog.sh diff --git a/packaging/RPMS/Fedora/Makefile b/packaging/RPMS/Fedora/Makefile new file mode 100644 index 0000000000..475ec63ad5 --- /dev/null +++ b/packaging/RPMS/Fedora/Makefile @@ -0,0 +1,171 @@ +SOURCE_DIST_FILE ?= $(wildcard ../../../rabbitmq-server-*.tar.xz) + +ifneq ($(filter-out clean,$(MAKECMDGOALS)),) +ifeq ($(SOURCE_DIST_FILE),) +$(error Cannot find source archive; please specify SOURCE_DIST_FILE) +endif +ifneq ($(words $(SOURCE_DIST_FILE)),1) +$(error Multiple source archives found; please specify SOURCE_DIST_FILE) +endif +endif + +VERSION ?= $(patsubst rabbitmq-server-%.tar.xz,%,$(notdir $(SOURCE_DIST_FILE))) +ifeq ($(VERSION),) +$(error Cannot determine version; please specify VERSION) +endif + +# $(RPM_VERSION) doesn't include the package revision: this one is only +# set in the .spec file. +RPM_VERSION = $(subst -,~,$(VERSION)) +RPM_ORIG_TARBALL = rabbitmq-server-$(VERSION).tar.xz + +TOP_DIR = $(shell pwd) +# Under debian we do not want to check build dependencies, since that +# only checks build-dependencies using rpms, not debs +DEFINES = --define 'upstream_version $(VERSION)' \ + --define '_topdir $(TOP_DIR)' --define '_tmppath $(TOP_DIR)/tmp' \ + --define '_sysconfdir /etc' --define '_localstatedir /var' + +RPM_OS ?= fedora +DO_SIGN ?= yes + +ifeq "$(RPM_OS)" "sles11" +FUNCTION_LIBRARY= +REQUIRES=/sbin/chkconfig /sbin/service +OS_DEFINES=--define '_initrddir /etc/init.d' --define 'dist .sles11' --define 'suse_version 1012' +SPEC_DEFINES=--define 'group_tag Productivity/Networking/Other' +START_PROG=startproc +DO_SIGN=no +else ifeq "$(RPM_OS)" "opensuse" +FUNCTION_LIBRARY= +REQUIRES=/sbin/chkconfig /sbin/service +OS_DEFINES=--define '_unitdir /usr/lib/systemd/system' --define 'dist .suse' --define 'suse_version 1315' +SPEC_DEFINES=--define 'group_tag Productivity/Networking/Other' +START_PROG=startproc +else +FUNCTION_LIBRARY=\# Source function library.\n. /etc/init.d/functions +REQUIRES=chkconfig initscripts +OS_DEFINES=--define '_initrddir /etc/rc.d/init.d' +ifeq "$(RPM_OS)" "rhel6" +SPEC_DEFINES=--define 'group_tag Development/Libraries' --define 'dist .el6' --define 'rhel 6' +else ifeq "$(RPM_OS)" "rhel7" +SPEC_DEFINES=--define 'group_tag Development/Libraries' --define '_unitdir /usr/lib/systemd/system' --define 'dist .el7' --define 'rhel 7' +else ifeq "$(RPM_OS)" "rhel8" +SPEC_DEFINES=--define 'group_tag Development/Libraries' --define '_unitdir /usr/lib/systemd/system' --define 'dist .el8' --define 'rhel 8' +else +SPEC_DEFINES=--define 'group_tag Development/Libraries' +endif +START_PROG=daemon +endif + +# Package signing. +# +# At least the key ID is mandatory ($(SIGNING_KEY)). If it's set, we +# call `rpm --addsign`, otherwise we do nothing. +# +# To maintain backward compatibility, the caller can also specify +# $(KEYSDIR) or $(GNUPG_PATH) and we set GNUPGHOME accordingly. + +ifneq ($(KEYSDIR),) + GNUPGHOME = $(KEYSDIR)/keyring/.gnupg + export GNUPGHOME +endif +ifneq ($(GNUPG_PATH),) + GNUPGHOME = $(GNUPG_PATH)/.gnupg + export GNUPGHOME +endif + +unexport DEPS_DIR +unexport ERL_LIBS +MAKEOVERRIDES = + +.PHONY: all package clean + +all: package + @: + +package: clean +# Log Erlang version. + @echo + @echo '--------------------------------------------------' + @echo "Erlang and Elixir versions used to compile:" + @elixir --version + @echo '--------------------------------------------------' + @echo +# If a signing key ID was specified, verify that the key is available +# before starting a possibly long build. At the same time, display some +# useful informations on the key so the caller can double-check if he +# wants. +ifneq ($(SIGNING_KEY),) +ifeq ($(DO_SIGN),yes) + @echo + @echo '--------------------------------------------------' + @echo "The package will be signed with key $(SIGNING_KEY):" + @gpg -K "$(SIGNING_KEY)" + @echo '--------------------------------------------------' + @echo +else + @echo + @echo '--------------------------------------------------' + @echo "Packages of type '$(RPM_OS)' are not signed because" + @echo "the signature can't be verified on the target OS" + @echo '--------------------------------------------------' + @echo +endif +endif +# Create the build tree and populate it. + mkdir -p BUILD SOURCES SPECS SRPMS RPMS tmp + cp $(SOURCE_DIST_FILE) SOURCES/$(RPM_ORIG_TARBALL) + cp rabbitmq-server.spec SPECS/rabbitmq-server.spec.in + cp rabbitmq-server.service SOURCES/rabbitmq-server.service + cp rabbitmq-server.tmpfiles SOURCES/rabbitmq-server.tmpfiles + sed \ + -e 's|^START_PROG=.*$$|START_PROG="$(START_PROG)"|' \ + -e 's|^@FUNCTION_LIBRARY@|$(FUNCTION_LIBRARY)|' \ + < rabbitmq-server.init \ + > SOURCES/rabbitmq-server.init + cp rabbitmq-server.logrotate SOURCES/rabbitmq-server.logrotate +# Possibly update the changelog inside the spec (in the created build +# directory): +# - if it contains an entry for the specified version, do nothing; +# - otherwise, prepend a generated entry using "1" as the package +# revision. + scripts/update-changelog.sh SPECS/rabbitmq-server.spec.in "$(RPM_VERSION)" + sed -e 's|%%VERSION%%|$(RPM_VERSION)|;s|%%REQUIRES%%|$(REQUIRES)|' \ + < SPECS/rabbitmq-server.spec.in \ + > SPECS/rabbitmq-server.spec +# Finally build the package! + rpmbuild -ba --nodeps SPECS/rabbitmq-server.spec $(DEFINES) \ + $(OS_DEFINES) $(SPEC_DEFINES) +# Before we remove the source directory, copy the possibly updated +# debian/changelog to the original debian subdirectory, if the caller +# asks for it. He is then responsible for committing it. +ifeq ($(SAVE_CHANGELOG),yes) + mv SPECS/rabbitmq-server.spec.in rabbitmq-server.spec +endif + rm -rf SOURCES SPECS BUILD tmp +# If a PGP key is specified, sign source and binary packages. We start +# rpm(1) in a new session and redirect its stdin so that it doesn't +# prompt for a passphrase. +# https://ask.fedoraproject.org/en/question/56107/can-gpg-agent-be-used-when-signing-rpm-packages/?answer=76395#post-id-76395 +ifeq ($(DO_SIGN),yes) +ifneq ($(SIGNING_KEY),) + setsid \ + rpm --addsign \ + --define '_signature gpg' \ + --define '_gpg_name $(SIGNING_KEY)' \ + SRPMS/*-$(RPM_VERSION)*.rpm \ + RPMS/noarch/*-$(RPM_VERSION)*.rpm \ + < /dev/null +endif +endif +# If $(PACKAGES_DIR) is specified, move all package files to that +# location. +ifneq ($(PACKAGES_DIR),) + mkdir -p "$(PACKAGES_DIR)" + mv SRPMS/*-$(RPM_VERSION)*.rpm RPMS/noarch/*-$(RPM_VERSION)*.rpm \ + "$(PACKAGES_DIR)" +endif + +clean: + rm -rf SOURCES SPECS RPMS SRPMS BUILD tmp diff --git a/packaging/RPMS/Fedora/rabbitmq-server.init b/packaging/RPMS/Fedora/rabbitmq-server.init new file mode 100644 index 0000000000..0b848ff6d9 --- /dev/null +++ b/packaging/RPMS/Fedora/rabbitmq-server.init @@ -0,0 +1,192 @@ +#!/bin/sh +# +# rabbitmq-server RabbitMQ broker +# +# chkconfig: - 80 05 +# description: RabbitMQ is a multi-protocol messaging broker +# + +### BEGIN INIT INFO +# Provides: rabbitmq-server +# Required-Start: $remote_fs $network +# Required-Stop: $remote_fs $network +# Default-Start: 3 5 +# Default-Stop: 0 1 2 6 +# Description: RabbitMQ broker +# Short-Description: RabbitMQ is a multi-protocol messaging broker +### END INIT INFO + +@FUNCTION_LIBRARY@ + +PATH=/sbin:/usr/sbin:/bin:/usr/bin +NAME=rabbitmq-server +DAEMON=/usr/sbin/${NAME} +CONTROL=/usr/sbin/rabbitmqctl +DESC=rabbitmq-server +USER=rabbitmq +PID_FILE=/var/run/rabbitmq/pid +RABBITMQ_STARTUP_TIMEOUT=600 + +START_PROG= # Set when building package +LOCK_FILE=/var/lock/subsys/$NAME + +test -x $DAEMON || exit 0 +test -x $CONTROL || exit 0 + +RETVAL=0 +set -e + +[ -f /etc/default/${NAME} ] && . /etc/default/${NAME} + +# $RABBITMQ_SERVER_CONSOLE_OUTPUT_DIR is a directory where rabbitmq-server(8) +# console output (both stdout and sterr) is redirected. It defaults to +# /var/log/rabbitmq which is configured by the package already (i.e. the +# directory is created and its ownership is set). +# +# We still look at the value of $RABBITMQ_LOG_BASE, possibly set in +# /etc/default/rabbitmq-server for backward compatibility. But we use a +# specific variable name here (instead of $RABBITMQ_LOG_BASE) to avoid any +# confusion with RabbitMQ's own logging configuration. Indeed, the console +# output redirection is a responsibility of the package, not RabbitMQ itself. +: ${RABBITMQ_SERVER_CONSOLE_OUTPUT_DIR:=${RABBITMQ_LOG_BASE:-/var/log/rabbitmq}} + +ensure_pid_dir () { + PID_DIR=`dirname ${PID_FILE}` + if [ ! -d ${PID_DIR} ] ; then + mkdir -p ${PID_DIR} + chown -R ${USER}:${USER} ${PID_DIR} + chmod 755 ${PID_DIR} + fi +} + +remove_pid () { + rm -f ${PID_FILE} + rmdir `dirname ${PID_FILE}` || : +} + +start_rabbitmq () { + status_rabbitmq quiet + if [ $RETVAL = 0 ] ; then + echo RabbitMQ is currently running + else + RETVAL=0 + ensure_pid_dir + set +e + RABBITMQ_PID_FILE=$PID_FILE $START_PROG $DAEMON \ + > "${RABBITMQ_SERVER_CONSOLE_OUTPUT_DIR}/startup_log" \ + 2> "${RABBITMQ_SERVER_CONSOLE_OUTPUT_DIR}/startup_err" \ + 0<&- & + $CONTROL wait --timeout $RABBITMQ_STARTUP_TIMEOUT $PID_FILE >/dev/null 2>&1 + RETVAL=$? + set -e + case "$RETVAL" in + 0) + echo SUCCESS + if [ -n "$LOCK_FILE" ] ; then + touch $LOCK_FILE + fi + ;; + *) + remove_pid + echo FAILED - check ${RABBITMQ_SERVER_CONSOLE_OUTPUT_DIR}/startup_\{log, _err\} + RETVAL=1 + ;; + esac + fi +} + +stop_rabbitmq () { + status_rabbitmq quiet + if [ $RETVAL = 0 ] ; then + set +e + $CONTROL stop ${PID_FILE} \ + > ${RABBITMQ_SERVER_CONSOLE_OUTPUT_DIR}/shutdown_log \ + 2> ${RABBITMQ_SERVER_CONSOLE_OUTPUT_DIR}/shutdown_err + RETVAL=$? + set -e + if [ $RETVAL = 0 ] ; then + remove_pid + if [ -n "$LOCK_FILE" ] ; then + rm -f $LOCK_FILE + fi + else + echo FAILED - check ${RABBITMQ_SERVER_CONSOLE_OUTPUT_DIR}/shutdown_\{log, _err\} + fi + else + echo RabbitMQ is not running + RETVAL=0 + fi +} + +status_rabbitmq() { + set +e + if [ "$1" != "quiet" ] ; then + $CONTROL status 2>&1 + else + $CONTROL status > /dev/null 2>&1 + fi + if [ $? != 0 ] ; then + RETVAL=3 + fi + set -e +} + +rotate_logs_rabbitmq() { + set +e + $CONTROL rotate_logs + if [ $? != 0 ] ; then + RETVAL=1 + fi + set -e +} + +restart_running_rabbitmq () { + status_rabbitmq quiet + if [ $RETVAL = 0 ] ; then + restart_rabbitmq + else + echo RabbitMQ is not runnning + RETVAL=0 + fi +} + +restart_rabbitmq() { + stop_rabbitmq + start_rabbitmq +} + +case "$1" in + start) + echo -n "Starting $DESC: " + start_rabbitmq + echo "$NAME." + ;; + stop) + echo -n "Stopping $DESC: " + stop_rabbitmq + echo "$NAME." + ;; + status) + status_rabbitmq + ;; + rotate-logs) + echo -n "Rotating log files for $DESC: " + rotate_logs_rabbitmq + ;; + force-reload|reload|restart) + echo -n "Restarting $DESC: " + restart_rabbitmq + echo "$NAME." + ;; + try-restart) + echo -n "Restarting $DESC: " + restart_running_rabbitmq + echo "$NAME." + ;; + *) + echo "Usage: $0 {start|stop|status|rotate-logs|restart|condrestart|try-restart|reload|force-reload}" >&2 + RETVAL=1 + ;; +esac + +exit $RETVAL diff --git a/packaging/RPMS/Fedora/rabbitmq-server.logrotate b/packaging/RPMS/Fedora/rabbitmq-server.logrotate new file mode 100644 index 0000000000..21a9fc0b84 --- /dev/null +++ b/packaging/RPMS/Fedora/rabbitmq-server.logrotate @@ -0,0 +1,7 @@ +/var/log/rabbitmq/*.log { + weekly + missingok + rotate 20 + compress + notifempty +} diff --git a/packaging/RPMS/Fedora/rabbitmq-server.service b/packaging/RPMS/Fedora/rabbitmq-server.service new file mode 100644 index 0000000000..4002a6517e --- /dev/null +++ b/packaging/RPMS/Fedora/rabbitmq-server.service @@ -0,0 +1,41 @@ +[Unit] +Description=RabbitMQ broker +After=syslog.target network.target + +[Service] +Type=notify +User=rabbitmq +Group=rabbitmq +UMask=0027 +NotifyAccess=all +TimeoutStartSec=600 + +# To override LimitNOFILE, create the following file: +# +# /etc/systemd/system/rabbitmq-server.service.d/limits.conf +# +# with the following content: +# +# [Service] +# LimitNOFILE=65536 + +LimitNOFILE=32768 + +# Note: systemd on CentOS 7 complains about in-line comments, +# so only append them here +# +# Restart: +# The following setting will automatically restart RabbitMQ +# in the event of a failure. systemd service restarts are not a +# replacement for service monitoring. Please see +# https://www.rabbitmq.com/monitoring.html +Restart=on-failure +RestartSec=10 +WorkingDirectory=/var/lib/rabbitmq +ExecStart=/usr/sbin/rabbitmq-server +ExecStop=/usr/sbin/rabbitmqctl shutdown +# See rabbitmq/rabbitmq-server-release#51 +SuccessExitStatus=69 + +[Install] +WantedBy=multi-user.target diff --git a/packaging/RPMS/Fedora/rabbitmq-server.spec b/packaging/RPMS/Fedora/rabbitmq-server.spec new file mode 100644 index 0000000000..48bf1b1f2b --- /dev/null +++ b/packaging/RPMS/Fedora/rabbitmq-server.spec @@ -0,0 +1,520 @@ +%define debug_package %{nil} +%define erlang_minver 22.3 + +Name: rabbitmq-server +Version: %%VERSION%% +Release: 1%{?dist} +License: MPLv2.0 and MIT and ASL 2.0 and BSD +Group: %{group_tag} +Source: https://www.rabbitmq.com/releases/rabbitmq-server/v%{upstream_version}/%{name}-%{upstream_version}.tar.xz +Source1: rabbitmq-server.init +Source2: rabbitmq-server.logrotate +Source3: rabbitmq-server.service +Source4: rabbitmq-server.tmpfiles +URL: https://www.rabbitmq.com/ +BuildArch: noarch +BuildRequires: erlang >= %{erlang_minver} +BuildRequires: elixir +BuildRequires: gzip, sed, zip, rsync + +%if 0%{?fedora} || 0%{?rhel} >= 7 || 0%{?suse_version} >= 1315 +BuildRequires: systemd +%endif + +Requires: erlang >= %{erlang_minver} +Requires: logrotate, socat +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-%{_arch}-root +Summary: The RabbitMQ server + +%if 0%{?fedora} || 0%{?rhel} >= 7 || 0%{?suse_version} >= 1315 +Requires(pre): systemd +Requires(post): systemd +Requires(preun): systemd +%else +Requires(post): %%REQUIRES%% +Requires(pre): %%REQUIRES%% +%endif + +%description +RabbitMQ is an open source multi-protocol messaging broker. + +# We want to install into /usr/lib, even on 64-bit platforms +%define _rabbit_libdir %{_exec_prefix}/lib/rabbitmq +%define _rabbit_erllibdir %{_rabbit_libdir}/lib/rabbitmq_server-%{upstream_version} +%define _rabbit_server_ocf scripts/rabbitmq-server.ocf +%define _plugins_state_dir %{_localstatedir}/lib/rabbitmq/plugins +%define _rabbit_server_ha_ocf scripts/rabbitmq-server-ha.ocf +%define _rabbitmqctl_autocomplete scripts/rabbitmqctl-autocomplete.sh +%define _rabbitmq_user rabbitmq +%define _rabbitmq_group rabbitmq + + +%define _maindir %{buildroot}%{_rabbit_erllibdir} + + +%prep +%setup -q -n %{name}-%{upstream_version} + +%build +cp -a deps/rabbit/docs/README-for-packages %{_builddir}/rabbitmq-server-%{upstream_version}/README +env -u DEPS_DIR make dist manpages + +%install +rm -rf %{buildroot} + +env -u DEPS_DIR make install install-bin install-man DESTDIR=%{buildroot} PREFIX=%{_exec_prefix} RMQ_ROOTDIR=%{_rabbit_libdir} RMQ_ERLAPP_DIR=%{_rabbit_erllibdir} MANDIR=%{_mandir} + +mkdir -p %{buildroot}%{_localstatedir}/lib/rabbitmq/mnesia +mkdir -p %{buildroot}%{_localstatedir}/log/rabbitmq + +#Copy all necessary lib files etc. + +%if 0%{?fedora} || 0%{?rhel} >= 7 || 0%{?suse_version} >= 1315 +install -p -D -m 0644 %{S:3} %{buildroot}%{_unitdir}/%{name}.service +%else +install -p -D -m 0755 %{S:1} %{buildroot}%{_initrddir}/rabbitmq-server +%endif + +install -p -D -m 0755 %{_rabbit_server_ocf} %{buildroot}%{_exec_prefix}/lib/ocf/resource.d/rabbitmq/rabbitmq-server +install -p -D -m 0755 %{_rabbit_server_ha_ocf} %{buildroot}%{_exec_prefix}/lib/ocf/resource.d/rabbitmq/rabbitmq-server-ha +install -p -D -m 0644 %{S:2} %{buildroot}%{_sysconfdir}/logrotate.d/rabbitmq-server + +install -p -D -m 0755 %{_rabbitmqctl_autocomplete} %{buildroot}%{_sysconfdir}/profile.d/rabbitmqctl-autocomplete.sh +install -p -D -m 0755 scripts/zsh_autocomplete.sh %{buildroot}%{_datarootdir}/zsh/vendor-functions/_enable_rabbitmqctl_completion + + +mkdir -p %{buildroot}%{_sysconfdir}/rabbitmq + +mkdir -p %{buildroot}%{_sbindir} +sed \ + -e 's|@RABBITMQ_USER@|%{_rabbitmq_user}|' -e 's|@RABBITMQ_GROUP@|%{_rabbitmq_group}|' \ + < scripts/rabbitmq-script-wrapper \ + > %{buildroot}%{_sbindir}/rabbitmqctl +chmod 0755 %{buildroot}%{_sbindir}/rabbitmqctl +for script in rabbitmq-server rabbitmq-plugins rabbitmq-diagnostics rabbitmq-queues rabbitmq-upgrade; do \ + cp -a %{buildroot}%{_sbindir}/rabbitmqctl \ + %{buildroot}%{_sbindir}/$script; \ +done + +%if 0%{?fedora} > 14 || 0%{?rhel} >= 7 || 0%{?suse_version} >= 1315 +install -D -p -m 0644 %{SOURCE4} %{buildroot}%{_prefix}/lib/tmpfiles.d/%{name}.conf +%endif + +rm %{_maindir}/LICENSE* %{_maindir}/INSTALL + +#Build the list of files +echo '%defattr(-,root,root, -)' >%{_builddir}/%{name}.files +find %{buildroot} -path %{buildroot}%{_sysconfdir} -prune -o '!' -type d -printf "/%%P\n" >>%{_builddir}/%{name}.files +find %{buildroot} -path "*%{_initrddir}*" -type f -printf "/%%P\n" >>%{_builddir}/%{name}.files + +%pre + +# If the log directory exists, record its permissions so we can restore +# them after an upgrade. The goal is to set the permissions to 0750 on a +# fresh install but to keep permissions set by the user or a different +# default from a previous package. +if test -d /var/log/rabbitmq; then + stat --format '%a' /var/log/rabbitmq > /var/log/rabbitmq/permissions +fi + +if [ "$1" = 2 ]; then + # Upgrade: + # Stop previous instance of rabbitmq-server. But before doing this, we + # also record if the service is running: it is used again in %post to + # restart the service. + if %{_sbindir}/rabbitmqctl status >/dev/null 2>&1; then + touch %{_localstatedir}/lib/rabbitmq/rabbitmq-running-before-upgrade + else + rm -f %{_localstatedir}/lib/rabbitmq/rabbitmq-running-before-upgrade + fi + +%if 0%{?fedora} || 0%{?rhel} >= 7 || 0%{?suse_version} >= 1315 + systemctl stop rabbitmq-server +%else + /sbin/service rabbitmq-server stop +%endif +fi + +# create rabbitmq group +if ! getent group rabbitmq >/dev/null; then + groupadd -r rabbitmq +fi + +# create rabbitmq user +if ! getent passwd rabbitmq >/dev/null; then + useradd -r -g rabbitmq -d %{_localstatedir}/lib/rabbitmq -s /sbin/nologin rabbitmq \ + -c "RabbitMQ messaging server" +fi + +%post + +%if 0%{?fedora} || 0%{?rhel} >= 7 || 0%{?suse_version} >= 1315 +# %%systemd_post %%{name}.service +# manual expansion of systemd_post as this doesn't appear to +# expand correctly on debian machines +if [ $1 -eq 1 ] ; then + # Initial installation + systemctl preset %{name}.service >/dev/null 2>&1 || : +fi +systemctl daemon-reload +%else +/sbin/chkconfig --add %{name} +%endif + +chmod -R o-rwx,g-w %{_localstatedir}/lib/rabbitmq/mnesia +chgrp rabbitmq %{_sysconfdir}/rabbitmq + +# Restore permissions saved during %pre. See comment in %pre for the +# reason behind this. +if test -f /var/log/rabbitmq/permissions; then + chmod "$(cat /var/log/rabbitmq/permissions)" /var/log/rabbitmq + rm -f /var/log/rabbitmq/permissions +fi + +if [ "$1" = 2 ] ; then + # Upgrade: + # Restart the service if it was running before the upgrade. + if [ -f %{_localstatedir}/lib/rabbitmq/rabbitmq-running-before-upgrade ]; then +%if 0%{?fedora} || 0%{?rhel} >= 7 || 0%{?suse_version} >= 1315 + # %%systemd_postun_with_restart %%{name}.service + # manual expansion of systemd_postun_with_restart as this doesn't appear to + # expand correctly on debian machines + systemctl restart %{name}.service >/dev/null 2>&1 || : +%else + /sbin/service %{name} restart +%endif + rm -f %{_localstatedir}/lib/rabbitmq/rabbitmq-running-before-upgrade + fi +fi + +if [ -n "$ZSH_VERSION" ]; then + echo "Z Shell detected. +to enable rabbitmqctl autocompletion add the following to your .zshrc file: +autoload _enable_rabbitmqctl_completion; _enable_rabbitmqctl_completion" +fi + +%preun + +if [ $1 = 0 ]; then + #Complete uninstall +%if 0%{?fedora} || 0%{?rhel} >= 7 || 0%{?suse_version} >= 1315 + systemctl stop rabbitmq-server +%else + /sbin/service rabbitmq-server stop + /sbin/chkconfig --del rabbitmq-server +%endif + + # We do not remove /var/log and /var/lib directories + # Leave rabbitmq user and group +fi + +# Clean out plugin activation state, both on uninstall and upgrade +rm -rf %{_plugins_state_dir} +for ext in rel script boot ; do + rm -f %{_rabbit_erllibdir}/ebin/rabbit.$ext +done + +%postun + +%if 0%{?fedora} > 17 || 0%{?rhel} >= 7 || 0%{?suse_version} >= 1315 +# For prior versions older than this, do a conversion +# from sysv to systemd +%triggerun -- %{name} < 3.6.5 +# Save the current service runlevel info +# User must manually run systemd-sysv-convert --apply opensips +# to migrate them to systemd targets +systemd-sysv-convert --save %{name} >/dev/null 2>&1 ||: + +# Run these because the SysV package being removed won't do them +/sbin/chkconfig --del %{name} >/dev/null 2>&1 || : +systemctl try-restart %{name}.service >/dev/null 2>&1 || : +%endif + +%files -f ../%{name}.files +%defattr(-,root,root,-) +%attr(0755, rabbitmq, rabbitmq) %dir %{_localstatedir}/lib/rabbitmq +%attr(0750, rabbitmq, rabbitmq) %dir %{_localstatedir}/lib/rabbitmq/mnesia +%attr(0755, rabbitmq, rabbitmq) %dir %{_localstatedir}/log/rabbitmq +%attr(2755, -, rabbitmq) %dir %{_sysconfdir}/rabbitmq + +%{_sysconfdir}/profile.d/rabbitmqctl-autocomplete.sh +%{_datarootdir}/zsh/vendor-functions/_enable_rabbitmqctl_completion + +%config(noreplace) %{_sysconfdir}/logrotate.d/rabbitmq-server +%doc LICENSE* +%doc README +%doc deps/rabbit/docs/set_rabbitmq_policy.sh.example + +%clean +rm -rf %{buildroot} + +%changelog +* Sun Sep 8 2019 info@rabbitmq.com 3.8.0~rc.1-1 +- New upstream release. + +* Tue Aug 20 2019 info@rabbitmq.com 3.8.0~beta.7-1 +- New upstream release. + +* Sun Aug 4 2019 info@rabbitmq.com 3.8.0~beta.6-1 +- New upstream release. + +* Tue Jul 9 2019 info@rabbitmq.com 3.8.0~beta.5-1 +- New upstream release. + +* Fri May 10 2019 info@rabbitmq.com 3.8.0~beta.4-1 +- New upstream release. + +* Wed Mar 6 2019 info@rabbitmq.com 3.8.0~beta.3-1 +- New upstream release. + +* Thu Jan 31 2019 info@rabbitmq.com 3.8.0~beta.2-1 +- New upstream release. + +* Thu Nov 8 2018 info@rabbitmq.com 3.8.0~beta.1-1 +- New upstream release. + +* Wed Dec 13 2017 info@rabbitmq.com 3.7.1~beta.1-1 +- New upstream release. + +* Wed Nov 29 2017 info@rabbitmq.com 3.7.0-1 +- New upstream release. + +* Thu Nov 16 2017 info@rabbitmq.com 3.7.0~rc.2-1 +- New upstream release. + +* Mon Sep 18 2017 info@rabbitmq.com 3.7.0~rc.1-1 +- New upstream release. + +* Tue Sep 12 2017 info@rabbitmq.com 3.7.0~beta.20-1 +- New upstream release. + +* Mon Sep 11 2017 michael@rabbitmq.com 3.6.12-1 +- New Upstream Release + +* Wed Aug 16 2017 michael@rabbitmq.com 3.6.11-1 +- New Upstream Release + +* Thu May 25 2017 michael@rabbitmq.com 3.6.10-1 +- New Upstream Release + +* Wed Mar 29 2017 michael@rabbitmq.com 3.6.9-1 +- New Upstream Release + +* Fri Mar 17 2017 michael@rabbitmq.com 3.6.8-1 +- New Upstream Release + +* Wed Mar 15 2017 michael@rabbitmq.com 3.6.7-1 +- New Upstream Release + +* Mon Nov 21 2016 michael@rabbitmq.com 3.6.6-1 +- New Upstream Release + +* Fri Aug 5 2016 michael@rabbitmq.com 3.6.5-1 +- New Upstream Release + +* Fri Jul 29 2016 michael@rabbitmq.com 3.6.4-1 +- New Upstream Release + +* Wed Jul 6 2016 michael@rabbitmq.com 3.6.3-1 +- New Upstream Release + +* Thu May 19 2016 michael@rabbitmq.com 3.6.2-1 +- New Upstream Release + +* Tue Mar 1 2016 michael@rabbitmq.com 3.6.1-1 +- New Upstream Release + +* Tue Dec 22 2015 michael@rabbitmq.com 3.6.0-1 +- New Upstream Release + +* Tue Dec 15 2015 michael@rabbitmq.com 3.5.7-1 +- New Upstream Release + +* Wed Oct 7 2015 michael@rabbitmq.com 3.5.6-1 +- New Upstream Release + +* Thu Sep 24 2015 jean-sebastien@rabbitmq.com 3.5.5-3 +- Fix bashism in rabbitmq-script-wrapper + +* Thu Sep 24 2015 jean-sebastien@rabbitmq.com 3.5.5-1 +- New Upstream Release + +* Tue Jul 21 2015 michael@rabbitmq.com 3.5.4-1 +- New Upstream Release + +* Fri May 22 2015 jean-sebastien@rabbitmq.com 3.5.3-1 +- New Upstream Release + +* Tue May 12 2015 jean-sebastien@rabbitmq.com 3.5.2-1 +- New Upstream Release + +* Thu Apr 2 2015 michael@rabbitmq.com 3.5.1-1 +- New Upstream Release + +* Wed Mar 11 2015 jean-sebastien@rabbitmq.com 3.5.0-1 +- New Upstream Release + +* Wed Feb 11 2015 michael@rabbitmq.com 3.4.4-1 +- New Upstream Release + +* Tue Jan 6 2015 jean-sebastien@rabbitmq.com 3.4.3-1 +- New Upstream Release + +* Wed Nov 26 2014 simon@rabbitmq.com 3.4.2-1 +- New Upstream Release + +* Wed Oct 29 2014 simon@rabbitmq.com 3.4.1-1 +- New Upstream Release + +* Tue Oct 21 2014 simon@rabbitmq.com 3.4.0-1 +- New Upstream Release + +* Mon Aug 11 2014 simon@rabbitmq.com 3.3.5-1 +- New Upstream Release + +* Tue Jun 24 2014 simon@rabbitmq.com 3.3.4-1 +- New Upstream Release + +* Mon Jun 16 2014 simon@rabbitmq.com 3.3.3-1 +- New Upstream Release + +* Mon Jun 9 2014 simon@rabbitmq.com 3.3.2-1 +- New Upstream Release + +* Tue Apr 29 2014 simon@rabbitmq.com 3.3.1-1 +- New Upstream Release + +* Wed Apr 2 2014 simon@rabbitmq.com 3.3.0-1 +- New Upstream Release + +* Mon Mar 3 2014 simon@rabbitmq.com 3.2.4-1 +- New Upstream Release + +* Thu Jan 23 2014 emile@rabbitmq.com 3.2.3-1 +- New Upstream Release + +* Tue Dec 10 2013 emile@rabbitmq.com 3.2.2-1 +- New Upstream Release + +* Wed Oct 23 2013 emile@rabbitmq.com 3.2.0-1 +- New Upstream Release + +* Thu Aug 15 2013 simon@rabbitmq.com 3.1.5-1 +- New Upstream Release + +* Tue Jun 25 2013 tim@rabbitmq.com 3.1.3-1 +- New Upstream Release + +* Mon Jun 24 2013 tim@rabbitmq.com 3.1.2-1 +- New Upstream Release + +* Mon May 20 2013 tim@rabbitmq.com 3.1.1-1 +- Test release + +* Wed May 1 2013 simon@rabbitmq.com 3.1.0-1 +- New Upstream Release + +* Tue Dec 11 2012 simon@rabbitmq.com 3.0.1-1 +- New Upstream Release + +* Fri Nov 16 2012 simon@rabbitmq.com 3.0.0-1 +- New Upstream Release + +* Fri Dec 16 2011 steve@rabbitmq.com 2.7.1-1 +- New Upstream Release + +* Tue Nov 8 2011 steve@rabbitmq.com 2.7.0-1 +- New Upstream Release + +* Fri Sep 9 2011 tim@rabbitmq.com 2.6.1-1 +- New Upstream Release + +* Fri Aug 26 2011 tim@rabbitmq.com 2.6.0-1 +- New Upstream Release + +* Mon Jun 27 2011 simon@rabbitmq.com 2.5.1-1 +- New Upstream Release + +* Thu Jun 9 2011 jerryk@vmware.com 2.5.0-1 +- New Upstream Release + +* Thu Apr 7 2011 Alexandru Scvortov 2.4.1-1 +- New Upstream Release + +* Tue Mar 22 2011 Alexandru Scvortov 2.4.0-1 +- New Upstream Release + +* Thu Feb 3 2011 simon@rabbitmq.com 2.3.1-1 +- New Upstream Release + +* Tue Feb 1 2011 simon@rabbitmq.com 2.3.0-1 +- New Upstream Release + +* Mon Nov 29 2010 rob@rabbitmq.com 2.2.0-1 +- New Upstream Release + +* Tue Oct 19 2010 vlad@rabbitmq.com 2.1.1-1 +- New Upstream Release + +* Tue Sep 14 2010 marek@rabbitmq.com 2.1.0-1 +- New Upstream Release + +* Mon Aug 23 2010 mikeb@rabbitmq.com 2.0.0-1 +- New Upstream Release + +* Wed Jul 14 2010 Emile Joubert 1.8.1-1 +- New Upstream Release + +* Tue Jun 15 2010 Matthew Sackman 1.8.0-1 +- New Upstream Release + +* Mon Feb 15 2010 Matthew Sackman 1.7.2-1 +- New Upstream Release + +* Fri Jan 22 2010 Matthew Sackman 1.7.1-1 +- New Upstream Release + +* Mon Oct 5 2009 David Wragg 1.7.0-1 +- New upstream release + +* Wed Jun 17 2009 Matthias Radestock 1.6.0-1 +- New upstream release + +* Tue May 19 2009 Matthias Radestock 1.5.5-1 +- Maintenance release for the 1.5.x series + +* Mon Apr 6 2009 Matthias Radestock 1.5.4-1 +- Maintenance release for the 1.5.x series + +* Tue Feb 24 2009 Tony Garnock-Jones 1.5.3-1 +- Maintenance release for the 1.5.x series + +* Mon Feb 23 2009 Tony Garnock-Jones 1.5.2-1 +- Maintenance release for the 1.5.x series + +* Mon Jan 19 2009 Ben Hood <0x6e6562@gmail.com> 1.5.1-1 +- Maintenance release for the 1.5.x series + +* Wed Dec 17 2008 Matthias Radestock 1.5.0-1 +- New upstream release + +* Thu Jul 24 2008 Tony Garnock-Jones 1.4.0-1 +- New upstream release + +* Mon Mar 3 2008 Adrien Pierard 1.3.0-1 +- New upstream release + +* Wed Sep 26 2007 Simon MacMullen 1.2.0-1 +- New upstream release + +* Wed Aug 29 2007 Simon MacMullen 1.1.1-1 +- New upstream release + +* Mon Jul 30 2007 Simon MacMullen 1.1.0-1.alpha +- New upstream release + +* Tue Jun 12 2007 Hubert Plociniczak 1.0.0-1.20070607 +- Building from source tarball, added starting script, stopping + +* Mon May 21 2007 Hubert Plociniczak 1.0.0-1.alpha +- Initial build of server library of RabbitMQ package diff --git a/packaging/RPMS/Fedora/rabbitmq-server.tmpfiles b/packaging/RPMS/Fedora/rabbitmq-server.tmpfiles new file mode 100644 index 0000000000..c2681827e0 --- /dev/null +++ b/packaging/RPMS/Fedora/rabbitmq-server.tmpfiles @@ -0,0 +1 @@ +D /var/run/rabbitmq 0755 rabbitmq rabbitmq - diff --git a/packaging/RPMS/Fedora/scripts/compare-rpm-versions.py b/packaging/RPMS/Fedora/scripts/compare-rpm-versions.py new file mode 100755 index 0000000000..874af0281b --- /dev/null +++ b/packaging/RPMS/Fedora/scripts/compare-rpm-versions.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python2 + +import os.path +import rpm +import sys + +if len(sys.argv) != 3: + print('Syntax: %s ' % (os.path.basename(sys.argv[0]))) + sys.exit(64) + +a = sys.argv[1] +b = sys.argv[2] + +def parse_rpm_version(v): + splitted = v.split(':', 1) + try: + epoch = splitted[0] + v = splitted[1] + except IndexError: + epoch = '0' + + splitted = v.split('-', 1) + version = splitted[0] + try: + release = splitted[1] + except IndexError: + release = '' + + return (epoch, version, release) + +a_parsed = parse_rpm_version(a) +b_parsed = parse_rpm_version(b) + +vc = rpm.labelCompare(a_parsed, b_parsed) + +if vc > 0: + print('%s < %s' % (b, a)) +elif vc == 0: + print('%s = %s' % (a, b)) +elif vc < 0: + print('%s < %s' % (a, b)) diff --git a/packaging/RPMS/Fedora/scripts/format-package-version b/packaging/RPMS/Fedora/scripts/format-package-version new file mode 100755 index 0000000000..9239b53af9 --- /dev/null +++ b/packaging/RPMS/Fedora/scripts/format-package-version @@ -0,0 +1,8 @@ +#!/bin/sh +# vim:sw=2:et: + +set -e + +VERSION=$1 + +echo "$VERSION" | sed -E -e 's/-/~/g' diff --git a/packaging/RPMS/Fedora/scripts/parse-changelog.sh b/packaging/RPMS/Fedora/scripts/parse-changelog.sh new file mode 100755 index 0000000000..35eeddcee2 --- /dev/null +++ b/packaging/RPMS/Fedora/scripts/parse-changelog.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +set -e + +awk ' +/^%changelog/ { + in_changelog = 1; + next; +} +{ + if (in_changelog) { + print; + } +}' "$@" diff --git a/packaging/RPMS/Fedora/scripts/update-changelog.sh b/packaging/RPMS/Fedora/scripts/update-changelog.sh new file mode 100755 index 0000000000..52043dc69a --- /dev/null +++ b/packaging/RPMS/Fedora/scripts/update-changelog.sh @@ -0,0 +1,56 @@ +#!/bin/sh +# vim:sw=2:et: + +set -e + +case $# in + 1) + SPEC=$(dirname "$0")/../rabbitmq-server.spec + PACKAGE_VERSION=$1 + ;; + 2) + SPEC=$1 + PACKAGE_VERSION=$2 + ;; +esac + +SCRIPT=$(basename "$0") +SCRIPTS_DIR=$(dirname "$0") + +if test -z "$SPEC" -o ! -f "$SPEC" -o -z "$PACKAGE_VERSION"; then + echo "Syntax: $SCRIPT [] " 1>&2 + exit 64 +fi + +if "$SCRIPTS_DIR/parse-changelog.sh" "$SPEC" | \ + grep -E -q "^\*.+ ${PACKAGE_VERSION}-[^ ]+$"; then + exit 0 +fi + +CHANGELOG_PKG_REV=1 +CHANGELOG_EMAIL='info@rabbitmq.com' +CHANGELOG_COMMENT='New upstream release.' + +awk " +/^Release:/ { + if (!release_modified) { + release = \$0; + sub(/[0-9]+/, \"${CHANGELOG_PKG_REV}\", release); + print release; + release_modified = 1; + next; + } +} +/^%changelog/ { + print; + print \"* $(date +'%a %b %-d %Y') ${CHANGELOG_EMAIL} ${PACKAGE_VERSION}-${CHANGELOG_PKG_REV}\"; + print \"- ${CHANGELOG_COMMENT}\"; + print \"\"; + next; +} +{ + print; +} +" < "$SPEC" > "$SPEC.updated" + +mv "$SPEC.updated" "$SPEC" diff --git a/packaging/debs/Debian/.gitignore b/packaging/debs/Debian/.gitignore new file mode 100644 index 0000000000..6a4aec11b5 --- /dev/null +++ b/packaging/debs/Debian/.gitignore @@ -0,0 +1,3 @@ +/debian/postrm +/debian/stamp-makefile-build +/rabbitmq-server_* diff --git a/packaging/debs/Debian/Makefile b/packaging/debs/Debian/Makefile new file mode 100644 index 0000000000..010293fc65 --- /dev/null +++ b/packaging/debs/Debian/Makefile @@ -0,0 +1,128 @@ +SOURCE_DIST_FILE ?= $(wildcard ../../../rabbitmq-server-*.tar.xz) + +ifneq ($(filter-out clean,$(MAKECMDGOALS)),) +ifeq ($(SOURCE_DIST_FILE),) +$(error Cannot find source archive; please specify SOURCE_DIST_FILE) +endif +ifneq ($(words $(SOURCE_DIST_FILE)),1) +$(error Multiple source archives found; please specify SOURCE_DIST_FILE) +endif +endif + +VERSION ?= $(patsubst rabbitmq-server-%.tar.xz,%,$(notdir $(SOURCE_DIST_FILE))) +ifeq ($(VERSION),) +$(error Cannot determine version; please specify VERSION) +endif + +# $(DEBIAN_VERSION) doesn't include the package revision: this one is +# only set in debian/changelog. +DEBIAN_VERSION = $(subst -,~,$(VERSION)) +DEBIAN_ORIG_TARBALL = rabbitmq-server_$(DEBIAN_VERSION).orig.tar.xz +UNPACKED_DIR = $(patsubst %.tar.xz,%,$(notdir $(SOURCE_DIST_FILE))) + +DEB_HOST_ARCH = $(shell dpkg-architecture -qDEB_HOST_ARCH) +CHANGES_FILE = rabbitmq-server_$(DEBIAN_VERSION)-*_$(DEB_HOST_ARCH).changes + +# Package signing. +# +# At least the key ID is mandatory ($(SIGNING_KEY)). If it's set, we +# enable signing in dpkg-build-package(1), otherwise we ask for an +# unsigned package. +# +# To maintain backward compatibility, the caller can also specify +# $(KEYSDIR) or $(GNUPG_PATH) and we set GNUPGHOME accordingly. + +ifneq ($(SIGNING_KEY),) + SIGNING_FLAG = -k$(SIGNING_KEY) +ifneq ($(KEYSDIR),) + GNUPGHOME = $(KEYSDIR)/keyring/.gnupg + export GNUPGHOME +endif +ifneq ($(GNUPG_PATH),) + GNUPGHOME = $(GNUPG_PATH)/.gnupg + export GNUPGHOME +endif +else + SIGNING_FLAG = -us -uc +endif + +unexport DEPS_DIR +unexport ERL_LIBS +MAKEOVERRIDES = + +.PHONY: all package clean + +all: package + @: + +package: clean +# If a signing key ID was specified, verify that the key is available +# before starting a possibly long build. At the same time, display some +# useful informations on the key so the caller can double-check if he +# wants. +ifneq ($(SIGNING_KEY),) + @echo + @echo '--------------------------------------------------' + @echo "The package will be signed with key $(SIGNING_KEY):" + @gpg -K "$(SIGNING_KEY)" + @echo '--------------------------------------------------' + @echo +endif +# Because we are creating a source package as well, Debian expects the +# source archive to have a specially formatted name. Copy the original +# archive to a correctly named file. + cp -a "$(SOURCE_DIST_FILE)" "$(DEBIAN_ORIG_TARBALL)" +# Prepare the source directory: we extract the source archive and copy +# the debian/ subdirectory. + xzcat "$(DEBIAN_ORIG_TARBALL)" | tar -xf - + cp -a debian "$(UNPACKED_DIR)/debian" +ifeq ($(INSTALL_BUILD_DEPS),yes) +# Install build dependencies. To help us, we use mk-build-deps(1) from +# the devscripts package. +# +# We ignore errors from the first `dpkg -i` because the command will +# fail: dependencies are missing and dpkg(8) doesn't install them. +# That's why we have `apt-get install -f` following. To double-check +# everything went fine, we have the second `dpkg -i`. + apt-get install -y --no-install-recommends devscripts equivs + mk-build-deps debian/control + -dpkg -i ./rabbitmq-server-build-deps_*_all.deb + apt-get install -y -f -V --no-install-recommends + dpkg -i ./rabbitmq-server-build-deps_*_all.deb +endif +# Log Erlang version. + @echo + @echo '--------------------------------------------------' + @echo "Erlang and Elixir versions used to compile:" + @elixir --version + @echo '--------------------------------------------------' + @echo +# Possibly update debian/changelog (in the created source directory): +# - if it contains an entry for the specified version, do nothing; +# - otherwise, prepend a generated entry using "1" as the package +# revision. + cd "$(UNPACKED_DIR)"; \ + ../scripts/update-changelog.sh "$(DEBIAN_VERSION)" +# Finally build the package! We ask for both the source package and one +# or more binary packages. + cd "$(UNPACKED_DIR)"; \ + dpkg-buildpackage -sa $(SIGNING_FLAG) +# Before we remove the source directory, copy the possibly updated +# debian/changelog to the original debian subdirectory, if the caller +# asks for it. He is then responsible for committing it. +ifeq ($(SAVE_CHANGELOG),yes) + cp -a "$(UNPACKED_DIR)/debian/changelog" debian/changelog +endif + rm -rf "$(UNPACKED_DIR)" +# If $(PACKAGES_DIR) is specified, move all package files to that +# location. +ifneq ($(PACKAGES_DIR),) + mkdir -p "$(PACKAGES_DIR)" + mv $$(./scripts/get-debian-package-files-list.sh $(CHANGES_FILE)) \ + "$(PACKAGES_DIR)" +endif + +clean: + rm -rf $(UNPACKED_DIR) + rm -f $(DEBIAN_ORIG_TARBALL) + ./scripts/get-debian-package-files-list.sh $(CHANGES_FILE) | xargs rm -f diff --git a/packaging/debs/Debian/debian/changelog b/packaging/debs/Debian/debian/changelog new file mode 100644 index 0000000000..f3ba52425d --- /dev/null +++ b/packaging/debs/Debian/debian/changelog @@ -0,0 +1,547 @@ +rabbitmq-server (3.8.0~rc.1-1) unstable; urgency=low + + * New Upstream Release. + + -- RabbitMQ Team Sun, 08 Sep 2019 20:26:33 +0000 + +rabbitmq-server (3.8.0~beta.7-1) unstable; urgency=low + + * New Upstream Release. + + -- RabbitMQ Team Tue, 20 Aug 2019 19:44:41 +0000 + +rabbitmq-server (3.8.0~beta.6-1) unstable; urgency=low + + * New Upstream Release. + + -- RabbitMQ Team Sun, 04 Aug 2019 00:18:13 +0000 + +rabbitmq-server (3.8.0~beta.5-1) unstable; urgency=low + + * New Upstream Release. + + -- RabbitMQ Team Tue, 09 Jul 2019 16:11:20 +0000 + +rabbitmq-server (3.8.0~beta.4-1) unstable; urgency=low + + * New Upstream Release. + + -- RabbitMQ Team Fri, 10 May 2019 14:13:38 +0000 + +rabbitmq-server (3.8.0~beta.3-1) unstable; urgency=low + + * New Upstream Release. + + -- RabbitMQ Team Wed, 06 Mar 2019 05:08:03 +0000 + +rabbitmq-server (3.8.0~beta.2-1) unstable; urgency=low + + * New Upstream Release. + + -- RabbitMQ Team Thu, 31 Jan 2019 10:16:50 +0000 + +rabbitmq-server (3.8.0~beta.1-1) unstable; urgency=low + + * New Upstream Release. + + -- RabbitMQ Team Thu, 08 Nov 2018 14:41:04 +0000 + +rabbitmq-server (3.7.1~beta.1-1) unstable; urgency=low + + * New Upstream Release. + + -- RabbitMQ Team Wed, 13 Dec 2017 18:07:55 +0000 + +rabbitmq-server (3.7.0-1) unstable; urgency=low + + * New Upstream Release. + + -- RabbitMQ Team Wed, 29 Nov 2017 16:52:39 +0000 + +rabbitmq-server (3.7.0~rc.2-1) unstable; urgency=low + + * New Upstream Release. + + -- RabbitMQ Team Thu, 16 Nov 2017 17:50:24 +0000 + +rabbitmq-server (3.7.0~rc.1-1) unstable; urgency=low + + * New Upstream Release. + + -- RabbitMQ Team Mon, 18 Sep 2017 14:43:34 +0000 + +rabbitmq-server (3.7.0~beta.20-1) unstable; urgency=low + + * New Upstream Release. + + -- RabbitMQ Team Tue, 12 Sep 2017 07:49:21 +0000 + +rabbitmq-server (3.6.12-1) unstable; urgency=medium + + * New Upstream Release + + -- Michael Klishin Mon, 11 Sep 2017 16:19:10 +0100 + +rabbitmq-server (3.6.11-1) unstable; urgency=medium + + * New Upstream Release + + -- Michael Klishin Wed, 16 Aug 2017 13:06:42 +0100 + +rabbitmq-server (3.6.10-1) unstable; urgency=low + + * New Upstream Release + + -- Michael Klishin Thu, 25 May 2017 11:46:23 +0100 + +rabbitmq-server (3.6.9-1) unstable; urgency=low + + * New Upstream Release + + -- Michael Klishin Wed, 29 Mar 2017 10:13:44 +0100 + +rabbitmq-server (3.6.8-1) unstable; urgency=low + + * New Upstream Release + + -- Michael Klishin Fri, 17 Mar 2017 12:04:45 +0000 + +rabbitmq-server (3.6.7-1) unstable; urgency=low + + * New Upstream Release + + -- Michael Klishin Wed, 15 Mar 2017 09:11:30 +0000 + +rabbitmq-server (3.6.6-1) unstable; urgency=low + + * New Upstream Release + + -- Michael Klishin Mon, 21 Nov 2016 10:36:28 +0000 + +rabbitmq-server (3.6.5-1) unstable; urgency=low + + * New Upstream Release + + -- Michael Klishin Fri, 05 Aug 2016 14:20:47 +0100 + +rabbitmq-server (3.6.4-1) unstable; urgency=low + + * New Upstream Release + + -- Michael Klishin Fri, 29 Jul 2016 11:40:53 +0100 + +rabbitmq-server (3.6.3-1) unstable; urgency=low + + * New Upstream Release + + -- Michael Klishin Wed, 06 Jul 2016 19:19:21 +0100 + +rabbitmq-server (3.6.2-1) unstable; urgency=low + + * New Upstream Release + + -- Michael Klishin Thu, 19 May 2016 09:20:06 +0100 + +rabbitmq-server (3.6.1-1) unstable; urgency=low + + * New Upstream Release + + -- Michael Klishin Tue, 01 Mar 2016 13:19:57 +0000 + +rabbitmq-server (3.6.0-1) unstable; urgency=low + + * New Upstream Release + + -- Michael Klishin Tue, 22 Dec 2015 13:21:56 +0000 + +rabbitmq-server (3.5.7-1) unstable; urgency=low + + * New Upstream Release + + -- Michael Klishin Tue, 15 Dec 2015 10:10:46 +0000 + +rabbitmq-server (3.5.6-1) unstable; urgency=low + + * New Upstream Release + + -- Michael Klishin Wed, 07 Oct 2015 13:31:24 +0100 + +rabbitmq-server (3.5.5-3) unstable; urgency=low + + * Fix bashism in rabbitmq-script-wrapper + + -- Jean-Sébastien Pédron Thu, 24 Sep 2015 19:18:17 +0100 + +rabbitmq-server (3.5.5-1) unstable; urgency=low + + * New Upstream Release + + -- Jean-Sébastien Pédron Thu, 24 Sep 2015 10:57:25 +0100 + +rabbitmq-server (3.5.4-1) unstable; urgency=low + + * New Upstream Release + + -- Michael Klishin Tue, 21 Jul 2015 20:25:48 +0100 + +rabbitmq-server (3.5.3-1) unstable; urgency=low + + * New Upstream Release + + -- Jean-Sébastien Pédron Fri, 22 May 2015 11:04:17 +0100 + +rabbitmq-server (3.5.2-1) unstable; urgency=low + + * New Upstream Release + + -- Jean-Sébastien Pédron Tue, 12 May 2015 16:21:44 +0100 + +rabbitmq-server (3.5.1-1) unstable; urgency=low + + * New Upstream Release + + -- Michael Klishin Thu, 02 Apr 2015 10:17:30 +0100 + +rabbitmq-server (3.5.0-1) unstable; urgency=low + + * New Upstream Release + + -- Jean-Sébastien Pédron Wed, 11 Mar 2015 13:56:19 +0000 + +rabbitmq-server (3.4.4-1) unstable; urgency=low + + * New Upstream Release + + -- Michael Klishin Wed, 11 Feb 2015 12:05:01 +0000 + +rabbitmq-server (3.4.3-1) unstable; urgency=low + + * New Upstream Release + + -- Jean-Sébastien Pédron Tue, 06 Jan 2015 15:58:45 +0000 + +rabbitmq-server (3.4.2-1) unstable; urgency=low + + * New Upstream Release + + -- Simon MacMullen Wed, 26 Nov 2014 12:11:12 +0000 + +rabbitmq-server (3.4.1-1) unstable; urgency=low + + * New Upstream Release + + -- Simon MacMullen Wed, 29 Oct 2014 13:31:10 +0000 + +rabbitmq-server (3.4.0-1) unstable; urgency=low + + * New Upstream Release + + -- Simon MacMullen Tue, 21 Oct 2014 14:21:36 +0100 + +rabbitmq-server (3.3.5-1) unstable; urgency=low + + * New Upstream Release + * Changed Uploaders from Emile Joubert to Blair Hester + + -- Simon MacMullen Mon, 11 Aug 2014 12:23:31 +0100 + +rabbitmq-server (3.3.4-1) unstable; urgency=low + + * New Upstream Release + + -- Simon MacMullen Tue, 24 Jun 2014 12:50:29 +0100 + +rabbitmq-server (3.3.3-1) unstable; urgency=low + + * New Upstream Release + + -- Simon MacMullen Mon, 16 Jun 2014 13:00:00 +0100 + +rabbitmq-server (3.3.2-1) unstable; urgency=low + + * New Upstream Release + + -- Simon MacMullen Mon, 09 Jun 2014 10:25:22 +0100 + +rabbitmq-server (3.3.1-1) unstable; urgency=low + + * New Upstream Release + + -- Simon MacMullen Tue, 29 Apr 2014 11:49:23 +0100 + +rabbitmq-server (3.3.0-1) unstable; urgency=low + + * New Upstream Release + + -- Simon MacMullen Wed, 02 Apr 2014 14:23:14 +0100 + +rabbitmq-server (3.2.4-1) unstable; urgency=low + + * New Upstream Release + + -- Simon MacMullen Mon, 03 Mar 2014 14:50:18 +0000 + +rabbitmq-server (3.2.3-1) unstable; urgency=low + + * New Upstream Release + + -- Emile Joubert Thu, 23 Jan 2014 14:46:37 +0000 + +rabbitmq-server (3.2.2-1) unstable; urgency=low + + * New Upstream Release + + -- Emile Joubert Tue, 10 Dec 2013 16:08:08 +0000 + +rabbitmq-server (3.2.0-1) unstable; urgency=low + + * New Upstream Release + + -- Emile Joubert Wed, 23 Oct 2013 12:44:10 +0100 + +rabbitmq-server (3.1.5-1) unstable; urgency=low + + * New Upstream Release + + -- Simon MacMullen Thu, 15 Aug 2013 11:03:13 +0100 + +rabbitmq-server (3.1.3-1) unstable; urgency=low + + * New Upstream Release + + -- Tim Watson Tue, 25 Jun 2013 15:01:12 +0100 + +rabbitmq-server (3.1.2-1) unstable; urgency=low + + * New Upstream Release + + -- Tim Watson Mon, 24 Jun 2013 11:16:41 +0100 + +rabbitmq-server (3.1.1-1) unstable; urgency=low + + * Test release + + -- Tim Watson Mon, 20 May 2013 16:21:20 +0100 + +rabbitmq-server (3.1.0-1) unstable; urgency=low + + * New Upstream Release + + -- Simon MacMullen Wed, 01 May 2013 11:57:58 +0100 + +rabbitmq-server (3.0.1-1) unstable; urgency=low + + * New Upstream Release + + -- Simon MacMullen Tue, 11 Dec 2012 11:29:55 +0000 + +rabbitmq-server (3.0.0-1) unstable; urgency=low + + * New Upstream Release + + -- Simon MacMullen Fri, 16 Nov 2012 14:15:29 +0000 + +rabbitmq-server (2.7.1-1) natty; urgency=low + + * New Upstream Release + + -- Steve Powell Fri, 16 Dec 2011 12:12:36 +0000 + +rabbitmq-server (2.7.0-1) natty; urgency=low + + * New Upstream Release + + -- Steve Powell Tue, 08 Nov 2011 16:47:50 +0000 + +rabbitmq-server (2.6.1-1) natty; urgency=low + + * New Upstream Release + + -- Tim Fri, 09 Sep 2011 14:38:45 +0100 + +rabbitmq-server (2.6.0-1) natty; urgency=low + + * New Upstream Release + + -- Tim Fri, 26 Aug 2011 16:29:40 +0100 + +rabbitmq-server (2.5.1-1) lucid; urgency=low + + * New Upstream Release + + -- Simon MacMullen Mon, 27 Jun 2011 11:21:49 +0100 + +rabbitmq-server (2.5.0-1) lucid; urgency=low + + * New Upstream Release + + -- Thu, 09 Jun 2011 07:20:29 -0700 + +rabbitmq-server (2.4.1-1) lucid; urgency=low + + * New Upstream Release + + -- Alexandru Scvortov Thu, 07 Apr 2011 16:49:22 +0100 + +rabbitmq-server (2.4.0-1) lucid; urgency=low + + * New Upstream Release + + -- Alexandru Scvortov Tue, 22 Mar 2011 17:34:31 +0000 + +rabbitmq-server (2.3.1-1) lucid; urgency=low + + * New Upstream Release + + -- Simon MacMullen Thu, 03 Feb 2011 12:43:56 +0000 + +rabbitmq-server (2.3.0-1) lucid; urgency=low + + * New Upstream Release + + -- Simon MacMullen Tue, 01 Feb 2011 12:52:16 +0000 + +rabbitmq-server (2.2.0-1) lucid; urgency=low + + * New Upstream Release + + -- Rob Harrop Mon, 29 Nov 2010 12:24:48 +0000 + +rabbitmq-server (2.1.1-1) lucid; urgency=low + + * New Upstream Release + + -- Vlad Alexandru Ionescu Tue, 19 Oct 2010 17:20:10 +0100 + +rabbitmq-server (2.1.0-1) lucid; urgency=low + + * New Upstream Release + + -- Marek Majkowski Tue, 14 Sep 2010 14:20:17 +0100 + +rabbitmq-server (2.0.0-1) karmic; urgency=low + + * New Upstream Release + + -- Michael Bridgen Mon, 23 Aug 2010 14:55:39 +0100 + +rabbitmq-server (1.8.1-1) lucid; urgency=low + + * New Upstream Release + + -- Emile Joubert Wed, 14 Jul 2010 15:05:24 +0100 + +rabbitmq-server (1.8.0-1) intrepid; urgency=low + + * New Upstream Release + + -- Matthew Sackman Tue, 15 Jun 2010 12:48:48 +0100 + +rabbitmq-server (1.7.2-1) intrepid; urgency=low + + * New Upstream Release + + -- Matthew Sackman Mon, 15 Feb 2010 15:54:47 +0000 + +rabbitmq-server (1.7.1-1) intrepid; urgency=low + + * New Upstream Release + + -- Matthew Sackman Fri, 22 Jan 2010 14:14:29 +0000 + +rabbitmq-server (1.7.0-1) intrepid; urgency=low + + * New Upstream Release + + -- David Wragg Mon, 05 Oct 2009 13:44:41 +0100 + +rabbitmq-server (1.6.0-1) hardy; urgency=low + + * New Upstream Release + + -- Matthias Radestock Tue, 16 Jun 2009 15:02:58 +0100 + +rabbitmq-server (1.5.5-1) hardy; urgency=low + + * New Upstream Release + + -- Matthias Radestock Tue, 19 May 2009 09:57:54 +0100 + +rabbitmq-server (1.5.4-1) hardy; urgency=low + + * New Upstream Release + + -- Matthias Radestock Mon, 06 Apr 2009 09:19:32 +0100 + +rabbitmq-server (1.5.3-1) hardy; urgency=low + + * New Upstream Release + + -- Tony Garnock-Jones Tue, 24 Feb 2009 18:23:33 +0000 + +rabbitmq-server (1.5.2-1) hardy; urgency=low + + * New Upstream Release + + -- Tony Garnock-Jones Mon, 23 Feb 2009 16:03:38 +0000 + +rabbitmq-server (1.5.1-1) hardy; urgency=low + + * New Upstream Release + + -- Simon MacMullen Mon, 19 Jan 2009 15:46:13 +0000 + +rabbitmq-server (1.5.0-1) testing; urgency=low + + * New Upstream Release + + -- Matthias Radestock Wed, 17 Dec 2008 18:23:47 +0000 + +rabbitmq-server (1.4.0-1) testing; urgency=low + + * New Upstream Release + + -- Tony Garnock-Jones Thu, 24 Jul 2008 13:21:48 +0100 + +rabbitmq-server (1.3.0-1) testing; urgency=low + + * New Upstream Release + + -- Adrien Pierard Mon, 03 Mar 2008 15:34:38 +0000 + +rabbitmq-server (1.2.0-2) testing; urgency=low + + * Fixed rabbitmqctl wrapper script + + -- Simon MacMullen Fri, 05 Oct 2007 11:55:00 +0100 + +rabbitmq-server (1.2.0-1) testing; urgency=low + + * New upstream release + + -- Simon MacMullen Wed, 26 Sep 2007 11:49:26 +0100 + +rabbitmq-server (1.1.1-1) testing; urgency=low + + * New upstream release + + -- Simon MacMullen Wed, 29 Aug 2007 12:03:15 +0100 + +rabbitmq-server (1.1.0-alpha-2) testing; urgency=low + + * Fixed erlang-nox dependency + + -- Simon MacMullen Thu, 02 Aug 2007 11:27:13 +0100 + +rabbitmq-server (1.1.0-alpha-1) testing; urgency=low + + * New upstream release + + -- Simon MacMullen Fri, 20 Jul 2007 18:17:33 +0100 + +rabbitmq-server (1.0.0-alpha-1) unstable; urgency=low + + * Initial release + + -- Tony Garnock-Jones Wed, 31 Jan 2007 19:06:33 +0000 + diff --git a/packaging/debs/Debian/debian/compat b/packaging/debs/Debian/debian/compat new file mode 100644 index 0000000000..ec635144f6 --- /dev/null +++ b/packaging/debs/Debian/debian/compat @@ -0,0 +1 @@ +9 diff --git a/packaging/debs/Debian/debian/control b/packaging/debs/Debian/debian/control new file mode 100644 index 0000000000..31d1429293 --- /dev/null +++ b/packaging/debs/Debian/debian/control @@ -0,0 +1,89 @@ +Source: rabbitmq-server +Section: net +Priority: extra +Maintainer: RabbitMQ Team +Uploaders: Michael Klishin , + Karl Nilsson , + Jean-Sébastien Pédron +Build-Depends: debhelper (>= 9), + dh-systemd (>= 1.5), + erlang-base (>= 1:22.3) | erlang-base-hipe (>= 1:22.3) | esl-erlang (>= 1:22.3), + erlang-base (<< 1:24.0) | erlang-base-hipe (<< 1:24.0) | esl-erlang (<< 1:24.0), + erlang-crypto (>= 1:22.3) | esl-erlang (>= 1:22.3), + erlang-crypto (<< 1:24.0) | esl-erlang (<< 1:24.0), + erlang-edoc (>= 1:22.3) | esl-erlang (>= 1:22.3), + erlang-edoc (<< 1:24.0) | esl-erlang (<< 1:24.0), + erlang-eldap (>= 1:22.3) | esl-erlang (>= 1:22.3), + erlang-eldap (<< 1:24.0) | esl-erlang (<< 1:24.0), + erlang-erl-docgen (>= 1:22.3) | esl-erlang (>= 1:22.3), + erlang-erl-docgen (<< 1:24.0) | esl-erlang (<< 1:24.0), + erlang-eunit (>= 1:22.3) | esl-erlang (>= 1:22.3), + erlang-eunit (<< 1:24.0) | esl-erlang (<< 1:24.0), + erlang-inets (>= 1:22.3) | esl-erlang (>= 1:22.3), + erlang-inets (<< 1:24.0) | esl-erlang (<< 1:24.0), + erlang-mnesia (>= 1:22.3) | esl-erlang (>= 1:22.3), + erlang-mnesia (<< 1:24.0) | esl-erlang (<< 1:24.0), + erlang-os-mon (>= 1:22.3) | esl-erlang (>= 1:22.3), + erlang-os-mon (<< 1:24.0) | esl-erlang (<< 1:24.0), + erlang-parsetools (>= 1:22.3) | esl-erlang (>= 1:22.3), + erlang-parsetools (<< 1:24.0) | esl-erlang (<< 1:24.0), + erlang-public-key (>= 1:22.3) | esl-erlang (>= 1:22.3), + erlang-public-key (<< 1:24.0) | esl-erlang (<< 1:24.0), + erlang-runtime-tools (>= 1:22.3) | esl-erlang (>= 1:22.3), + erlang-runtime-tools (<< 1:24.0) | esl-erlang (<< 1:24.0), + erlang-ssl (>= 1:22.3) | esl-erlang (>= 1:22.3), + erlang-ssl (<< 1:24.0) | esl-erlang (<< 1:24.0), + erlang-syntax-tools (>= 1:22.3) | esl-erlang (>= 1:22.3), + erlang-syntax-tools (<< 1:24.0) | esl-erlang (<< 1:24.0), + erlang-tools (>= 1:22.3) | esl-erlang (>= 1:22.3), + erlang-tools (<< 1:24.0) | esl-erlang (<< 1:24.0), + erlang-xmerl (>= 1:22.3) | esl-erlang (>= 1:22.3), + erlang-xmerl (<< 1:24.0) | esl-erlang (<< 1:24.0), + erlang-dev (>= 1:22.3) | esl-erlang (>= 1:22.3), + erlang-dev (<< 1:24.0) | esl-erlang (<< 1:24.0), + erlang-src (>= 1:22.3) | esl-erlang (>= 1:22.3), + erlang-src (<< 1:24.0) | esl-erlang (<< 1:24.0), + elixir (>= 1.10.4), + zip, + rsync +Standards-Version: 3.9.6 + +Package: rabbitmq-server +Architecture: all +# FIXME: We remove ${misc:Depends} and hard-code the dependency on +# init-system-helpers. we need this because we build the package on +# Debian, where dh-systemd/init-system-helpers is at version 1.18, but +# Ubuntu 14.04 only has init-system-helpers 1.14. +Depends: init-system-helpers (>= 1.13~), + erlang-base (>= 1:22.3) | erlang-base-hipe (>= 1:22.3) | esl-erlang (>= 1:22.3), + erlang-base (<< 1:24.0) | erlang-base-hipe (<< 1:24.0) | esl-erlang (<< 1:24.0), + erlang-crypto (>= 1:22.3) | esl-erlang (>= 1:22.3), + erlang-crypto (<< 1:24.0) | esl-erlang (<< 1:24.0), + erlang-eldap (>= 1:22.3) | esl-erlang (>= 1:22.3), + erlang-eldap (<< 1:24.0) | esl-erlang (<< 1:24.0), + erlang-inets (>= 1:22.3) | esl-erlang (>= 1:22.3), + erlang-inets (<< 1:24.0) | esl-erlang (<< 1:24.0), + erlang-mnesia (>= 1:22.3) | esl-erlang (>= 1:22.3), + erlang-mnesia (<< 1:24.0) | esl-erlang (<< 1:24.0), + erlang-os-mon (>= 1:22.3) | esl-erlang (>= 1:22.3), + erlang-os-mon (<< 1:24.0) | esl-erlang (<< 1:24.0), + erlang-parsetools (>= 1:22.3) | esl-erlang (>= 1:22.3), + erlang-parsetools (<< 1:24.0) | esl-erlang (<< 1:24.0), + erlang-public-key (>= 1:22.3) | esl-erlang (>= 1:22.3), + erlang-public-key (<< 1:24.0) | esl-erlang (<< 1:24.0), + erlang-runtime-tools (>= 1:22.3) | esl-erlang (>= 1:22.3), + erlang-runtime-tools (<< 1:24.0) | esl-erlang (<< 1:24.0), + erlang-ssl (>= 1:22.3) | esl-erlang (>= 1:22.3), + erlang-ssl (<< 1:24.0) | esl-erlang (<< 1:24.0), + erlang-syntax-tools (>= 1:22.3) | esl-erlang (>= 1:22.3), + erlang-syntax-tools (<< 1:24.0) | esl-erlang (<< 1:24.0), + erlang-tools (>= 1:22.3) | esl-erlang (>= 1:22.3), + erlang-tools (<< 1:24.0) | esl-erlang (<< 1:24.0), + erlang-xmerl (>= 1:22.3) | esl-erlang (>= 1:22.3), + erlang-xmerl (<< 1:24.0) | esl-erlang (<< 1:24.0), + adduser, + logrotate, + socat +Description: Multi-protocol messaging broker + RabbitMQ is an open source multi-protocol messaging broker. +Homepage: https://www.rabbitmq.com/ diff --git a/packaging/debs/Debian/debian/copyright b/packaging/debs/Debian/debian/copyright new file mode 100644 index 0000000000..b5b083d80a --- /dev/null +++ b/packaging/debs/Debian/debian/copyright @@ -0,0 +1,405 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: rabbitmq-server +Upstream-Contact: Jean-Sébastien Pédron +Source: https://github.com/rabbitmq/rabbitmq-server + +Files: * +Copyright: 2007-2020 VMware, Inc. or its affiliates. +License: MPL-2.0 + +Files: deps/rabbit_common/src/rabbit_numerical.erl deps/rabbit_common/src/rabbit_http_util.erl +Copyright: 2007 Mochi Media, Inc. +License: MIT + +License: MPL-2.0 +Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +1.6. "Executable Form" + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +1.8. "License" + means this document. + +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +1.10. "Modifications" + means any of the following: + + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + + (b) any new file in Source Code Form that contains any Covered + Software. + +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +1.13. "Source Code Form" + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; + or + +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + + 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 http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +Copyright (c) 2007-2020 VMware, Inc. or its affiliates. + +License: MIT + This is the MIT license + . + Copyright (c) 2007 Mochi Media, Inc + . + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions + : + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/packaging/debs/Debian/debian/dirs b/packaging/debs/Debian/debian/dirs new file mode 100644 index 0000000000..6df23a5f85 --- /dev/null +++ b/packaging/debs/Debian/debian/dirs @@ -0,0 +1,9 @@ +usr/lib/rabbitmq/bin +usr/lib/erlang/lib +usr/sbin +usr/share/man +var/lib/rabbitmq/mnesia +var/log/rabbitmq +etc/logrotate.d +etc/profile.d +etc/rabbitmq diff --git a/packaging/debs/Debian/debian/postinst b/packaging/debs/Debian/debian/postinst new file mode 100644 index 0000000000..379608aa8b --- /dev/null +++ b/packaging/debs/Debian/debian/postinst @@ -0,0 +1,79 @@ +#!/bin/sh +# postinst script for rabbitmq +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `configure' +# * `abort-upgrade' +# * `abort-remove' `in-favour' +# +# * `abort-remove' +# * `abort-deconfigure' `in-favour' +# `removing' +# +# for details, see https://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +# create rabbitmq group +if ! getent group rabbitmq >/dev/null; then + addgroup --system rabbitmq +fi + +# create rabbitmq user +if ! getent passwd rabbitmq >/dev/null; then + adduser --system --ingroup rabbitmq --home /var/lib/rabbitmq \ + --no-create-home --gecos "RabbitMQ messaging server" \ + --disabled-login rabbitmq +fi + +chown -R rabbitmq:rabbitmq /var/lib/rabbitmq +chown -R rabbitmq:adm /var/log/rabbitmq +chgrp rabbitmq /etc/rabbitmq +chmod g+s /etc/rabbitmq +chmod 750 /var/lib/rabbitmq/mnesia +chmod -R o-rwx,g-w /var/lib/rabbitmq/mnesia + +case "$1" in + configure) + if test -z "$2"; then + # This is a fresh install of the package. + + # On a fresh install, we want to limit permissions on the + # log directory to the owner and the group. Others won't + # have any access to log files: this is in case sensitive + # data are accidentally logged (like process crash data). + chmod 2750 /var/log/rabbitmq + else + # The package was already configured: it's an upgrade over + # a previously installed version, or it's an install over + # a non-purged version (i.e. deinstalled but configuration + # files and data are still there). + true + fi + + if [ -n "$ZSH_VERSION" ]; then + echo "Z Shell detected. +to enable rabbitmqctl autocompletion add the following to your .zshrc file: +autoload _enable_rabbitmqctl_completion; _enable_rabbitmqctl_completion" + fi + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/packaging/debs/Debian/debian/postrm b/packaging/debs/Debian/debian/postrm new file mode 100644 index 0000000000..e5f97ba86e --- /dev/null +++ b/packaging/debs/Debian/debian/postrm @@ -0,0 +1,75 @@ +#!/bin/sh +# postrm script for rabbitmq +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `remove' +# * `purge' +# * `upgrade' +# * `failed-upgrade' +# * `abort-install' +# * `abort-install' +# * `abort-upgrade' +# * `disappear' +# +# for details, see https://www.debian.org/doc/debian-policy/ or +# the debian-policy package + +remove_plugin_traces() { + # Remove traces of plugins + rm -rf /var/lib/rabbitmq/plugins-scratch +} + +remove_autocomplete_script() { + if [ -f /etc/profile.d/rabbitmqctl-autocomplete.sh ]; then + rm -rf /etc/profile.d/rabbitmqctl-autocomplete.sh + rm -rf /usr/share/zsh/vendor-functions/_enable_rabbitmqctl_completion + fi +} + +case "$1" in + purge) + rm -f /etc/default/rabbitmq + if [ -d /var/lib/rabbitmq ]; then + rm -r /var/lib/rabbitmq + fi + if [ -d /var/log/rabbitmq ]; then + rm -r /var/log/rabbitmq + fi + if [ -d /etc/rabbitmq ]; then + rm -r /etc/rabbitmq + fi + remove_autocomplete_script + remove_plugin_traces + if getent passwd rabbitmq >/dev/null; then + # Stop epmd if run by the rabbitmq user + pkill -u rabbitmq epmd || : + fi + ;; + + remove) + remove_autocomplete_script + remove_plugin_traces + ;; + upgrade) + remove_plugin_traces + ;; + + failed-upgrade|abort-install|abort-upgrade|disappear) + ;; + + *) + echo "postrm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/packaging/debs/Debian/debian/rabbitmq-server.default b/packaging/debs/Debian/debian/rabbitmq-server.default new file mode 100644 index 0000000000..bde5e30895 --- /dev/null +++ b/packaging/debs/Debian/debian/rabbitmq-server.default @@ -0,0 +1,9 @@ +# This file is sourced by /etc/init.d/rabbitmq-server. Its primary +# reason for existing is to allow adjustment of system limits for the +# rabbitmq-server process. +# +# Maximum number of open file handles. This will need to be increased +# to handle many simultaneous connections. Refer to the system +# documentation for ulimit (in man bash) for more information. +# +#ulimit -n 1024 diff --git a/packaging/debs/Debian/debian/rabbitmq-server.docs b/packaging/debs/Debian/debian/rabbitmq-server.docs new file mode 100644 index 0000000000..89e6828d70 --- /dev/null +++ b/packaging/debs/Debian/debian/rabbitmq-server.docs @@ -0,0 +1 @@ +deps/rabbit/docs/set_rabbitmq_policy.sh.example diff --git a/packaging/debs/Debian/debian/rabbitmq-server.init b/packaging/debs/Debian/debian/rabbitmq-server.init new file mode 100644 index 0000000000..80c792bba8 --- /dev/null +++ b/packaging/debs/Debian/debian/rabbitmq-server.init @@ -0,0 +1,200 @@ +#!/bin/sh +# +# rabbitmq-server RabbitMQ broker +# +# chkconfig: - 80 05 +# description: Manages RabbitMQ server +# + +### BEGIN INIT INFO +# Provides: rabbitmq-server +# Required-Start: $remote_fs $network +# Required-Stop: $remote_fs $network +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Description: RabbitMQ broker +# Short-Description: Manages RabbitMQ server +### END INIT INFO + +PATH=/sbin:/usr/sbin:/bin:/usr/bin +NAME=rabbitmq-server +DAEMON=/usr/sbin/${NAME} +CONTROL=/usr/sbin/rabbitmqctl +DESC="message broker" +USER=rabbitmq +PID_FILE=/var/run/rabbitmq/pid +RABBITMQ_STARTUP_TIMEOUT=600 + +test -x $DAEMON || exit 0 +test -x $CONTROL || exit 0 + +RETVAL=0 +set -e + +[ -f /etc/default/${NAME} ] && . /etc/default/${NAME} + +# $RABBITMQ_SERVER_CONSOLE_OUTPUT_DIR is a directory where rabbitmq-server(8) +# console output (both stdout and sterr) is redirected. It defaults to +# /var/log/rabbitmq which is configured by the package already (i.e. the +# directory is created and its ownership is set). +# +# We still look at the value of $RABBITMQ_LOG_BASE, possibly set in +# /etc/default/rabbitmq-server for backward compatibility. But we use a +# specific variable name here (instead of $RABBITMQ_LOG_BASE) to avoid any +# confusion with RabbitMQ's own logging configuration. Indeed, the console +# output redirection is a responsibility of the package, not RabbitMQ itself. +: ${RABBITMQ_SERVER_CONSOLE_OUTPUT_DIR:=${RABBITMQ_LOG_BASE:-/var/log/rabbitmq}} + +. /lib/lsb/init-functions +. /lib/init/vars.sh + +ensure_pid_dir () { + PID_DIR=`dirname ${PID_FILE}` + if [ ! -d ${PID_DIR} ] ; then + mkdir -p ${PID_DIR} + chown -R ${USER}:${USER} ${PID_DIR} + chmod 755 ${PID_DIR} + fi +} + +remove_pid () { + rm -f ${PID_FILE} + rmdir `dirname ${PID_FILE}` || : +} + +start_rabbitmq () { + status_rabbitmq quiet + if [ $RETVAL != 0 ] ; then + RETVAL=0 + ensure_pid_dir + set +e + RABBITMQ_PID_FILE=$PID_FILE start-stop-daemon --quiet \ + --chuid rabbitmq --start \ + --pidfile "$PID_FILE" --background \ + --startas /bin/sh -- -c "exec $DAEMON >'${RABBITMQ_SERVER_CONSOLE_OUTPUT_DIR}/startup_log' 2>'${RABBITMQ_SERVER_CONSOLE_OUTPUT_DIR}/startup_err'" + $CONTROL wait --timeout $RABBITMQ_STARTUP_TIMEOUT $PID_FILE >/dev/null 2>&1 + RETVAL=$? + set -e + if [ $RETVAL != 0 ] ; then + remove_pid + fi + else + RETVAL=3 + fi +} + +stop_rabbitmq () { + status_rabbitmq quiet + if [ $RETVAL = 0 ] ; then + set +e + $CONTROL stop ${PID_FILE} \ + > ${RABBITMQ_SERVER_CONSOLE_OUTPUT_DIR}/shutdown_log \ + 2> ${RABBITMQ_SERVER_CONSOLE_OUTPUT_DIR}/shutdown_err + RETVAL=$? + set -e + if [ $RETVAL = 0 ] ; then + remove_pid + fi + else + RETVAL=3 + fi +} + +status_rabbitmq() { + set +e + if [ "$1" != "quiet" ] ; then + $CONTROL status 2>&1 + else + $CONTROL status > /dev/null 2>&1 + fi + if [ $? != 0 ] ; then + RETVAL=3 + fi + set -e +} + +rotate_logs_rabbitmq() { + set +e + $CONTROL -q rotate_logs + if [ $? != 0 ] ; then + RETVAL=1 + fi + set -e +} + +restart_running_rabbitmq () { + status_rabbitmq quiet + if [ $RETVAL = 0 ] ; then + restart_rabbitmq + else + log_warning_msg "${DESC} not running" + fi +} + +restart_rabbitmq() { + stop_rabbitmq + start_rabbitmq +} + +restart_end() { + if [ $RETVAL = 0 ] ; then + log_end_msg 0 + else + log_end_msg 1 + fi +} + +start_stop_end() { + case "$RETVAL" in + 0) + [ -x /sbin/initctl ] && /sbin/initctl emit --no-wait "${NAME}-${1}" + log_end_msg 0 + ;; + 3) + log_warning_msg "${DESC} already ${1}" + log_end_msg 0 + RETVAL=0 + ;; + *) + log_warning_msg "FAILED - check ${RABBITMQ_SERVER_CONSOLE_OUTPUT_DIR}/startup_\{log, _err\}" + log_end_msg 1 + ;; + esac +} + +case "$1" in + start) + log_daemon_msg "Starting ${DESC}" $NAME + start_rabbitmq + start_stop_end "running" + ;; + stop) + log_daemon_msg "Stopping ${DESC}" $NAME + stop_rabbitmq + start_stop_end "stopped" + ;; + status) + status_rabbitmq + ;; + rotate-logs) + log_action_begin_msg "Rotating log files for ${DESC}: ${NAME}" + rotate_logs_rabbitmq + log_action_end_msg $RETVAL + ;; + force-reload|reload|restart) + log_daemon_msg "Restarting ${DESC}" $NAME + restart_rabbitmq + restart_end + ;; + try-restart) + log_daemon_msg "Restarting ${DESC}" $NAME + restart_running_rabbitmq + restart_end + ;; + *) + echo "Usage: $0 {start|stop|status|rotate-logs|restart|condrestart|try-restart|reload|force-reload}" >&2 + RETVAL=1 + ;; +esac + +exit $RETVAL diff --git a/packaging/debs/Debian/debian/rabbitmq-server.logrotate b/packaging/debs/Debian/debian/rabbitmq-server.logrotate new file mode 100644 index 0000000000..21a9fc0b84 --- /dev/null +++ b/packaging/debs/Debian/debian/rabbitmq-server.logrotate @@ -0,0 +1,7 @@ +/var/log/rabbitmq/*.log { + weekly + missingok + rotate 20 + compress + notifempty +} diff --git a/packaging/debs/Debian/debian/rabbitmq-server.manpages b/packaging/debs/Debian/debian/rabbitmq-server.manpages new file mode 100644 index 0000000000..2ef2376ee2 --- /dev/null +++ b/packaging/debs/Debian/debian/rabbitmq-server.manpages @@ -0,0 +1,4 @@ +deps/rabbit/docs/rabbitmq-env.conf.5 +deps/rabbit/docs/rabbitmq-plugins.8 +deps/rabbit/docs/rabbitmq-server.8 +deps/rabbit/docs/rabbitmqctl.8 diff --git a/packaging/debs/Debian/debian/rabbitmq-server.service b/packaging/debs/Debian/debian/rabbitmq-server.service new file mode 100644 index 0000000000..3339a2f5f0 --- /dev/null +++ b/packaging/debs/Debian/debian/rabbitmq-server.service @@ -0,0 +1,39 @@ +# systemd unit example +[Unit] +Description=RabbitMQ broker +After=network.target epmd@0.0.0.0.socket +Wants=network.target epmd@0.0.0.0.socket + +[Service] +Type=notify +User=rabbitmq +Group=rabbitmq +UMask=0027 +NotifyAccess=all +TimeoutStartSec=600 + +# To override LimitNOFILE, create the following file: +# +# /etc/systemd/system/rabbitmq-server.service.d/limits.conf +# +# with the following content: +# +# [Service] +# LimitNOFILE=65536 + +LimitNOFILE=32768 + +# The following setting will automatically restart RabbitMQ +# in the event of a failure. systemd service restarts are not a +# replacement for service monitoring. Please see +# https://www.rabbitmq.com/monitoring.html +Restart=on-failure +RestartSec=10 +WorkingDirectory=/var/lib/rabbitmq +ExecStart=/usr/lib/rabbitmq/bin/rabbitmq-server +ExecStop=/usr/lib/rabbitmq/bin/rabbitmqctl shutdown +# See rabbitmq/rabbitmq-server-release#51 +SuccessExitStatus=69 + +[Install] +WantedBy=multi-user.target diff --git a/packaging/debs/Debian/debian/rules b/packaging/debs/Debian/debian/rules new file mode 100755 index 0000000000..1a98c2831e --- /dev/null +++ b/packaging/debs/Debian/debian/rules @@ -0,0 +1,63 @@ +#!/usr/bin/make -f +# -*- makefile -*- + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +DEB_DESTDIR = debian/rabbitmq-server +RABBITMQ_USER ?= rabbitmq +RABBITMQ_GROUP ?= rabbitmq + +unexport DEPS_DIR + +%: + dh $@ --parallel --with systemd + +override_dh_auto_clean: + $(MAKE) clean clean-unpacked-source-dist distclean-manpages + rm -rf .erlang.mk + +override_dh_auto_build: + $(MAKE) dist manpages + +override_dh_auto_test: + @: + +export PREFIX RMQ_ROOTDIR + +override_dh_auto_install: PREFIX = /usr +override_dh_auto_install: RMQ_ROOTDIR = $(PREFIX)/lib/rabbitmq +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|@RABBITMQ_USER@|$(RABBITMQ_USER)|' -e 's|@RABBITMQ_GROUP@|$(RABBITMQ_GROUP)|' \ + < scripts/rabbitmq-script-wrapper \ + > $(DEB_DESTDIR)$(PREFIX)/sbin/rabbitmqctl + chmod 0755 $(DEB_DESTDIR)$(PREFIX)/sbin/rabbitmqctl + for script in rabbitmq-server rabbitmq-plugins rabbitmq-diagnostics rabbitmq-queues rabbitmq-upgrade; do \ + cp -a $(DEB_DESTDIR)$(PREFIX)/sbin/rabbitmqctl \ + $(DEB_DESTDIR)$(PREFIX)/sbin/$$script; \ + done + install -p -D -m 0644 debian/rabbitmq-server.default \ + $(DEB_DESTDIR)/etc/default/rabbitmq-server + + install -p -D -m 0755 scripts/rabbitmq-server.ocf \ + $(DEB_DESTDIR)$(PREFIX)/lib/ocf/resource.d/rabbitmq/rabbitmq-server + install -p -D -m 0755 scripts/rabbitmq-server-ha.ocf \ + $(DEB_DESTDIR)$(PREFIX)/lib/ocf/resource.d/rabbitmq/rabbitmq-server-ha + + install -p -D -m 0755 scripts/rabbitmqctl-autocomplete.sh \ + $(DEB_DESTDIR)/etc/profile.d/rabbitmqctl-autocomplete.sh + + install -p -D -m 0755 scripts/zsh_autocomplete.sh \ + $(DEB_DESTDIR)/usr/share/zsh/vendor-functions/_enable_rabbitmqctl_completion + + rm $(DEB_DESTDIR)$(RMQ_ERLAPP_DIR)/LICENSE* \ + $(DEB_DESTDIR)$(RMQ_ERLAPP_DIR)/INSTALL + + rmdir $(DEB_DESTDIR)$(PREFIX)/lib/erlang/lib \ + $(DEB_DESTDIR)$(PREFIX)/lib/erlang diff --git a/packaging/debs/Debian/debian/source/format b/packaging/debs/Debian/debian/source/format new file mode 100644 index 0000000000..163aaf8d82 --- /dev/null +++ b/packaging/debs/Debian/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/packaging/debs/Debian/debian/watch b/packaging/debs/Debian/debian/watch new file mode 100644 index 0000000000..cbf9b949db --- /dev/null +++ b/packaging/debs/Debian/debian/watch @@ -0,0 +1,4 @@ +version=4 +opts="filenamemangle=s%(?:.*?)?v?@PACKAGE@-(\d[\d.]*)\.tar\.xz%@PACKAGE@-$1.tar.xz%" \ + https://github.com/rabbitmq/@PACKAGE@/releases \ + (?:.*?/)?v?@PACKAGE@-(\d[\d.]*)\.tar\.xz debian uupdate diff --git a/packaging/debs/Debian/scripts/compare-debian-versions.py b/packaging/debs/Debian/scripts/compare-debian-versions.py new file mode 100755 index 0000000000..ec138fa623 --- /dev/null +++ b/packaging/debs/Debian/scripts/compare-debian-versions.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python2 + +import apt_pkg +import os.path +import sys + +if len(sys.argv) != 3: + print('Syntax: %s ' % (os.path.basename(sys.argv[0]))) + sys.exit(64) + +a = sys.argv[1] +b = sys.argv[2] + +apt_pkg.init_system() +vc = apt_pkg.version_compare(a,b) + +if vc > 0: + print('%s < %s' % (b, a)) +elif vc == 0: + print('%s = %s' % (a, b)) +elif vc < 0: + print('%s < %s' % (a, b)) diff --git a/packaging/debs/Debian/scripts/format-package-version b/packaging/debs/Debian/scripts/format-package-version new file mode 100755 index 0000000000..9239b53af9 --- /dev/null +++ b/packaging/debs/Debian/scripts/format-package-version @@ -0,0 +1,8 @@ +#!/bin/sh +# vim:sw=2:et: + +set -e + +VERSION=$1 + +echo "$VERSION" | sed -E -e 's/-/~/g' diff --git a/packaging/debs/Debian/scripts/get-debian-package-files-list.sh b/packaging/debs/Debian/scripts/get-debian-package-files-list.sh new file mode 100755 index 0000000000..5865ede557 --- /dev/null +++ b/packaging/debs/Debian/scripts/get-debian-package-files-list.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +set -e + +changes_file=$1 +if [ -z "$changes_file" ]; then + echo "Syntax: $(basename $0) " 1>&2 + exit 64 +fi + +if [ ! -f "$changes_file" ]; then + exit 0 +fi + +changes_file_dir=$(dirname "$changes_file") +if test "$changes_file_dir" = '.'; then + changes_file_dir= +else + changes_file_dir="$changes_file_dir/" +fi + +# Include the .changes file itself in the list. +echo "$changes_file_dir$(basename "$changes_file")" + +# We want to match lines with the following format (it starts +# with a single space): +# f752d307528f0ca87d57995c217344ec 5184732 net extra rabbitmq-(...) +awk ' +/^ [a-fA-F0-9]+ / { + if (length($1) == 32) { + print "'$changes_file_dir'" $5; + } +}' < "$changes_file" diff --git a/packaging/debs/Debian/scripts/update-changelog.sh b/packaging/debs/Debian/scripts/update-changelog.sh new file mode 100755 index 0000000000..70076bfaf6 --- /dev/null +++ b/packaging/debs/Debian/scripts/update-changelog.sh @@ -0,0 +1,36 @@ +#!/bin/sh + +set -e + +PACKAGE_VERSION=$1 + +if test -z "$PACKAGE_VERSION"; then + echo "Syntax: $(basename "$0") " 1>&2 + exit 64 +fi + +PACKAGE_NAME=$(awk '/^Source:/ { print $2; }' < debian/control) +CHANGELOG_DATE=$(date -R) + +if dpkg-parsechangelog --all | \ + grep -E -q "^ $PACKAGE_NAME \(${PACKAGE_VERSION}-[^)]\) "; then + exit 0 +fi + +cat > debian/changelog.tmp < ${CHANGELOG_DATE} + +EOF + +cat debian/changelog >> debian/changelog.tmp +mv -f debian/changelog.tmp debian/changelog + +echo +echo '--------------------------------------------------' +dpkg-parsechangelog +echo '--------------------------------------------------' +echo