diff options
author | Tony Garnock-Jones <tonyg@lshift.net> | 2008-07-03 13:35:11 +0100 |
---|---|---|
committer | Tony Garnock-Jones <tonyg@lshift.net> | 2008-07-03 13:35:11 +0100 |
commit | 675869a27714307bce377638dfe8f6a5f069e757 (patch) | |
tree | e4f9872242be02145702775f5c563f2b246f57ce /packaging | |
download | rabbitmq-server-675869a27714307bce377638dfe8f6a5f069e757.tar.gz |
Initial commit, from repo-rebase-20080703121916_default (e96543d904a2)
Diffstat (limited to 'packaging')
31 files changed, 1631 insertions, 0 deletions
diff --git a/packaging/Makefile b/packaging/Makefile new file mode 100644 index 00000000..44a9b328 --- /dev/null +++ b/packaging/Makefile @@ -0,0 +1,3 @@ +check_tools: + @sh ./checks.sh + @echo All the needed tools seem to be installed, great! diff --git a/packaging/RPMS/Fedora/Makefile b/packaging/RPMS/Fedora/Makefile new file mode 100644 index 00000000..c8e979a7 --- /dev/null +++ b/packaging/RPMS/Fedora/Makefile @@ -0,0 +1,34 @@ +# Read README.txt for instructions + +VERSION=0.0.0 +SOURCE_TARBALL_DIR=../../../dist +TARBALL=$(SOURCE_TARBALL_DIR)/rabbitmq-server-$(VERSION).tar.gz +TOP_DIR=$(shell pwd) +RPM_VERSION=$(shell echo $(VERSION) | tr - _) +DEFINES=--define '_topdir $(TOP_DIR)' --define '_tmppath $(TOP_DIR)/tmp' --define 'main_version $(VERSION)' --define 'rpm_version $(RPM_VERSION)' + +rpms: clean server + +#Create proper environment for making rpms +prepare: + mkdir -p $(TOP_DIR)/BUILD + mkdir -p $(TOP_DIR)/SOURCES + mkdir -p $(TOP_DIR)/SPECS + mkdir -p $(TOP_DIR)/SRPMS + mkdir -p $(TOP_DIR)/RPMS + mkdir -p $(TOP_DIR)/tmp + cp $(TOP_DIR)/$(TARBALL) $(TOP_DIR)/SOURCES + cp $(TOP_DIR)/rabbitmq-server.spec $(TOP_DIR)/SPECS + cp $(TOP_DIR)/init.d $(TOP_DIR)/BUILD + cp $(TOP_DIR)/rabbitmqctl_wrapper $(TOP_DIR)/BUILD + +server: prepare + rpmbuild -ba $(TOP_DIR)/SPECS/rabbitmq-server.spec $(DEFINES) --target noarch + +clean: + rm -rf $(TOP_DIR)/SOURCES/ + rm -rf $(TOP_DIR)/SPECS/ + rm -rf $(TOP_DIR)/RPMS/ + rm -rf $(TOP_DIR)/SRPMS/ + rm -rf $(TOP_DIR)/BUILD/ + rm -rf $(TOP_DIR)/tmp/ diff --git a/packaging/RPMS/Fedora/README.txt b/packaging/RPMS/Fedora/README.txt new file mode 100644 index 00000000..a7db530b --- /dev/null +++ b/packaging/RPMS/Fedora/README.txt @@ -0,0 +1,53 @@ +Notes on creating rpms for rabbitmq + +Assuming that rpm will be built under $TOP_DIR/rpm +directory the rpm macros configuration file +would look like: + +%_topdir $TOP_DIR/rpm +%_tmppath $TOP_DIR/rpm/tmp +%_bindir /usr/bin +%_libdir /usr/lib +%_includedir /usr/include +%_mandir /usr/share/man + +Where $TOP_DIR can be any directory (usually $HOME) +However this configuration has to be under the following +path: +$HOME/.rpmmacros +since this is a fixed place where rpmbuild looks for macros. + +The $TOP_DIR/rpm directory has following structure: + +rpm + +---- BUILD // directory where tarballs are unpacked + +---- SOURCES // where source tarballs are put + +---- SPECS // directory containing specs + +---- SRPMS // rpmbuild puts here srpms + +---- RPMS // rpmbuils puts here rpms + +---- tmp // where rpm packages are built + +Makefile will copy the source tarball from fixed directory +specified by $TARBALL_DIR to SOURCES directory and +similarly specs from $SPEC_DIR to SPECS directory. + +'make rpms' should create both client and server rabbitmq. +If there are any errors reported by rpmbuild this is +possibly due to incorrect name of the packages +(if all dependencies are satisifed) - different distros +can have slightly different names. + +rpms and srpms are placed in their respective directories. + +'make prepare' will create the necessary structure and +create the rpmmacros file. Change top variables to adjust +it to your system. Note that it will *overwrite* any current +rpmmacros configuration file. + +The first thing to do for building rpms is to create you own +source tarball of AMQ. In the spec files two top variables +determine the name of the tarball. Adjust it to you needs. +The final name has to match the *Source* tag in specs' headers. + +For information on how to sign the package see: +http://fedoranews.org/tchung/gpg/ diff --git a/packaging/RPMS/Fedora/init.d b/packaging/RPMS/Fedora/init.d new file mode 100644 index 00000000..09ca02c9 --- /dev/null +++ b/packaging/RPMS/Fedora/init.d @@ -0,0 +1,79 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: rabbitmq +# Required-Start: $remote_fs $network +# Required-Stop: $remote_fs $network +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +### END INIT INFO + +#chkconfig: 2345 80 05 +#description: RabbitMQ Server + +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin +DAEMON=/usr/sbin/rabbitmq-multi +NAME=rabbitmq-server +DESC=rabbitmq-server +USER=rabbitmq +NODE_COUNT=1 + +test -x $DAEMON || exit 0 + +# Include rabbitmq defaults if available +if [ -f /etc/default/rabbitmq ] ; then + . /etc/default/rabbitmq +fi + +set -e +cd / + +start_rabbitmq () { + set +e + su rabbitmq -s /bin/sh -c "$DAEMON start_all ${NODE_COUNT}" > /var/log/rabbitmq/startup.log 2> /var/log/rabbitmq/startup.err + case "$?" in + 0) + echo SUCCESS;; + 1) + echo TIMEOUT - check /var/log/rabbitmq/startup.\{log,err\};; + *) + echo FAILED - check /var/log/rabbitmq/startup.log, .err + exit 1;; + esac + set -e +} + +stop_rabbitmq () { + set +e + su rabbitmq -s /bin/sh -c "$DAEMON stop_all" > /var/log/rabbitmq/shutdown.log 2> /var/log/rabbitmq/shutdown.err + if [ $? != 0 ] ; then + echo FAILED - check /var/log/rabbitmq/shutdown.log, .err + exit 0 + fi + set -e +} + +case "$1" in + start) + echo -n "Starting $DESC: " + start_rabbitmq + echo "$NAME." + ;; + stop) + echo -n "Stopping $DESC: " + stop_rabbitmq + echo "$NAME." + ;; + force-reload|restart) + echo -n "Restarting $DESC: " + stop_rabbitmq + start_rabbitmq + echo "$NAME." + ;; + *) + N=/etc/init.d/$NAME + echo "Usage: $N {start|stop|restart|force-reload}" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/packaging/RPMS/Fedora/rabbitmq-server.spec b/packaging/RPMS/Fedora/rabbitmq-server.spec new file mode 100644 index 00000000..4f3dafaa --- /dev/null +++ b/packaging/RPMS/Fedora/rabbitmq-server.spec @@ -0,0 +1,138 @@ +%define source_name rabbitmq-server + +Name: rabbitmq-server +Version: %{rpm_version} +Release: 1 +License: Mozilla Public License +Group: Development/Libraries +Source: http://www.rabbitmq.com/releases/%{source_name}-%{main_version}.tar.gz +URL: http://www.rabbitmq.com/ +Vendor: LShift Ltd., Cohesive Financial Technologies LLC., Rabbit Technlogies Ltd. +Requires: erlang +Packager: Hubert Plociniczak <hubert@lshift.net> +BuildRoot: %{_tmppath}/%{name}-%{main_version}-%{release}-root +Summary: The RabbitMQ server + +%description +RabbitMQ is an implementation of AMQP, the emerging standard for high +performance enterprise messaging. The RabbitMQ server is a robust and +scalable implementation of an AMQP broker. + +%define _libdir /usr/lib/erlang +%define _docdir /usr/share/doc +%define _maindir $RPM_BUILD_ROOT%{_libdir}/lib/rabbitmq_server-%{main_version} +%define package_name rabbitmq-server-dist + +%pre +if [ $1 -gt 1 ]; then + #Upgrade - stop and remove previous instance of rabbitmq init.d script + /etc/init.d/rabbitmq-server stop + /sbin/chkconfig --del rabbitmq-server +fi + +%prep +%setup -n %{source_name}-%{main_version} + +%build +mkdir %{package_name} +mkdir %{package_name}/sbin +make install TARGET_DIR=`pwd`/%{package_name} \ + SBIN_DIR=`pwd`/%{package_name}/sbin \ + VERSION=%{main_version} + +%install +mkdir -p %{_maindir} +mkdir -p $RPM_BUILD_ROOT%{_docdir}/rabbitmq-server +mkdir -p $RPM_BUILD_ROOT/etc/init.d +mkdir -p $RPM_BUILD_ROOT/usr/sbin + +mkdir -p $RPM_BUILD_ROOT/var/lib/rabbitmq/mnesia +mkdir -p $RPM_BUILD_ROOT/var/log/rabbitmq + +#Copy all necessary lib files etc. +cp -r %{package_name}/ebin %{_maindir} +cp -r %{package_name}/src %{_maindir} +cp -r %{package_name}/include %{_maindir} +chmod 755 %{package_name}/sbin/* +cp %{package_name}/sbin/* $RPM_BUILD_ROOT/usr/sbin/ + +cp ../init.d $RPM_BUILD_ROOT/etc/init.d/rabbitmq-server +chmod 775 $RPM_BUILD_ROOT/etc/init.d/rabbitmq-server + +mv $RPM_BUILD_ROOT/usr/sbin/rabbitmqctl $RPM_BUILD_ROOT/usr/sbin/rabbitmqctl_real +cp ../rabbitmqctl_wrapper $RPM_BUILD_ROOT/usr/sbin/rabbitmqctl +chmod 755 $RPM_BUILD_ROOT/usr/sbin/rabbitmqctl + +%post +# 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 --home /var/lib/rabbitmq rabbitmq + usermod -c "Rabbit AMQP Messaging Server" rabbitmq +fi + +# On 64bit /usr/lib64 contains Erlang, not /usr/lib. Fix with a symlink +ERL_LIB_DIR=$(erl -noshell -eval "io:format(\"~s~n\", [code:lib_dir()]), halt().") +if [ ! ${ERL_LIB_DIR} = "/usr/lib/erlang/lib" ] ; then + ln -s /usr/lib/erlang/lib/rabbitmq_server-%{main_version} ${ERL_LIB_DIR} +fi + +chown -R rabbitmq:rabbitmq /var/lib/rabbitmq +chown -R rabbitmq:rabbitmq /var/log/rabbitmq + +/sbin/chkconfig --add rabbitmq-server +/etc/init.d/rabbitmq-server start + +%preun +if [ $1 = 0 ]; then + #Complete uninstall + /etc/init.d/rabbitmq-server stop + /sbin/chkconfig --del rabbitmq-server + + # Remove symlink we added above + ERL_LIB_DIR=$(erl -noshell -eval "io:format(\"~s~n\", [code:lib_dir()]), halt().") + if [ ! ${ERL_LIB_DIR} = "/usr/lib/erlang/lib" ] ; then + rm ${ERL_LIB_DIR}/rabbitmq_server-%{main_version} + fi + + # We do not remove log and lib directories + # Leave rabbitmq user and group +fi + +%files +%defattr(-,root,root) +%{_libdir}/lib/rabbitmq_server-%{main_version}/ +%{_docdir}/rabbitmq-server/ +/usr/sbin/rabbitmq-server +/usr/sbin/rabbitmq-multi +/usr/sbin/rabbitmqctl +/usr/sbin/rabbitmqctl_real +/var/lib/rabbitmq +/var/log/rabbitmq +/etc/init.d/rabbitmq-server + +%clean +rm -rf $RPM_BUILD_ROOT + +%changelog +* Mon Mar 3 2008 Adrien Pierard <adrian@lshift.net> 1.3.0 +- New upstream release + +* Wed Sep 26 2007 Simon MacMullen <simon@lshift.net> 1.2.0 +- New upstream release + +* Wed Aug 29 2007 Simon MacMullen <simon@lshift.net> 1.1.1 +- New upstream release + +* Mon Jul 30 2007 Simon MacMullen <simon@lshift.net> 1.1.0-alpha +- New upstream release + +* Tue Jun 12 2007 Hubert Plociniczak <hubert@lshift.net> hubert-20070607 +- Building from source tarball, added starting script, stopping + +* Mon May 21 2007 Hubert Plociniczak <hubert@lshift.net> 1.0.0-alpha +- Initial build of server library of RabbitMQ package diff --git a/packaging/RPMS/Fedora/rabbitmqctl_wrapper b/packaging/RPMS/Fedora/rabbitmqctl_wrapper new file mode 100644 index 00000000..c484bb27 --- /dev/null +++ b/packaging/RPMS/Fedora/rabbitmqctl_wrapper @@ -0,0 +1,14 @@ +#!/bin/bash +# Escape spaces and quotes, because shell is revolting. +for arg in "$@" ; do + # Escape quotes in parameters, so that they're passed through cleanly. + arg=$(sed -e 's/"/\\"/' <<-END + $arg + END + ) + CMDLINE="${CMDLINE} \"${arg}\"" +done + +cd / +su rabbitmq -s /bin/sh -c "/usr/sbin/rabbitmqctl_real ${CMDLINE}" + diff --git a/packaging/checks.sh b/packaging/checks.sh new file mode 100755 index 00000000..63e88701 --- /dev/null +++ b/packaging/checks.sh @@ -0,0 +1,45 @@ +#! /bin/sh + +# We check for the presence of the tools necessary to build a release on a +# Debian based OS. + +TOOLS_STOP=0 + +checker () { + if [ ! `which $1` ] + then + echo "$1 is missing, please install it" + TOOLS_STOP=1 + NEW_NAME=`echo $1 | sed -e 's/-/_/g'` + eval "$NEW_NAME=1" + else + echo "$1 found" + fi +}; + +echo ~~~~~~~~~~~~ Looking for mandatory programs ~~~~~~~~~~~~ + +for i in cdbs-edit-patch reprepro rpm elinks wget zip gpg rsync +do + checker $i +done +echo ~~~~~~~~~~~~~~~~~~~~~~~~~~ DONE ~~~~~~~~~~~~~~~~~~~~~~~ + +if [ 1 = $TOOLS_STOP ] +then + [ $cdbs_edit_patch ] && cdbs_edit_patch="cdbs " + [ $reprepro ] && reprepro="reprepro " + [ $rpm ] && rpm="rpm " + [ $elinks ] && elinks="elinks " + [ $wget ] && wget="wget " + [ $zip ] && zip="zip " + [ $gpg ] && gpg="gpg " + [ $rsync ] && rsync="rsync " + + echo + echo We suggest you run the command + echo "apt-get install ${cdbs_edit_patch}${reprepro}${rpm}${elinks}${wget}${zip}${gpg}${rsync}" + echo +fi + +exit $TOOLS_STOP diff --git a/packaging/debs/Debian/Makefile b/packaging/debs/Debian/Makefile new file mode 100644 index 00000000..b49094e2 --- /dev/null +++ b/packaging/debs/Debian/Makefile @@ -0,0 +1,32 @@ +TARBALL_DIR=../../../dist +TARBALL=$(shell (cd $(TARBALL_DIR); echo rabbitmq-server-[0-9]*.tar.gz)) +VERSION=$(shell echo $(TARBALL) | sed -e 's:rabbitmq-server-\(.*\)\.tar\.gz:\1:g') +UNPACKED_DIR=rabbitmq-server-$(VERSION) +PACKAGENAME=rabbitmq-server +SIGNING_KEY_ID=056E8E56 + +ifneq "$(UNOFFICIAL_RELEASE)" "" + SIGNING=-us -uc +else + SIGNING=-k$(SIGNING_KEY_ID) +endif + +all: + @echo 'Please choose a target from the Makefile.' + +package: clean + make -C ../.. check_tools + tar -zxvf $(TARBALL_DIR)/$(TARBALL) + cp -r debian $(UNPACKED_DIR) + chmod -R a+x $(UNPACKED_DIR)/debian + UNOFFICIAL_RELEASE=$(UNOFFICIAL_RELEASE) VERSION=$(VERSION) ./check-changelog.sh rabbitmq-server $(UNPACKED_DIR) + cd $(UNPACKED_DIR); dpkg-buildpackage -rfakeroot $(SIGNING) + rm -rf $(UNPACKED_DIR) + +clean: + rm -rf $(UNPACKED_DIR) + rm -f $(PACKAGENAME)_*.tar.gz + rm -f $(PACKAGENAME)_*.diff.gz + rm -f $(PACKAGENAME)_*.dsc + rm -f $(PACKAGENAME)_*_*.changes + rm -f $(PACKAGENAME)_*_*.deb diff --git a/packaging/debs/Debian/check-changelog.sh b/packaging/debs/Debian/check-changelog.sh new file mode 100755 index 00000000..ff25e648 --- /dev/null +++ b/packaging/debs/Debian/check-changelog.sh @@ -0,0 +1,29 @@ +#!/bin/sh + +PACKAGE_NAME=$1 +cd $2 + +CHANGELOG_VERSION=$(dpkg-parsechangelog | sed -n 's/^Version: \(.*\)-[^-]*$/\1/p') + +if [ "${CHANGELOG_VERSION}" != "${VERSION}" ]; then + if [ -n "${UNOFFICIAL_RELEASE}" ]; then + echo "${PACKAGE_NAME} (${VERSION}-1) unstable; urgency=low" > debian/changelog.tmp + echo >> debian/changelog.tmp + echo " * Unofficial release" >> debian/changelog.tmp + echo >> debian/changelog.tmp + echo " -- Nobody <nobody@example.com> $(date -R)" >> debian/changelog.tmp + echo >> debian/changelog.tmp + cat debian/changelog >> debian/changelog.tmp + mv -f debian/changelog.tmp debian/changelog + + exit 0 + else + echo + echo There is no entry in debian/changelog for version ${VERSION}! + echo Please create a changelog entry, or set the variable + echo UNOFFICIAL_RELEASE to automatically create one. + echo + + exit 1 + fi +fi diff --git a/packaging/debs/Debian/debian/changelog b/packaging/debs/Debian/debian/changelog new file mode 100644 index 00000000..08b760e9 --- /dev/null +++ b/packaging/debs/Debian/debian/changelog @@ -0,0 +1,42 @@ +rabbitmq-server (1.3.0-1) testing; urgency=low + + * New Upstream Release + + -- Adrien Pierard <adrien@lshift.net> Mon, 03 Mar 2008 15:34:38 +0000 + +rabbitmq-server (1.2.0-2) testing; urgency=low + + * Fixed rabbitmqctl wrapper script + + -- Simon MacMullen <simon@lshift.net> Fri, 05 Oct 2007 11:55:00 +0100 + +rabbitmq-server (1.2.0-1) testing; urgency=low + + * New upstream release + + -- Simon MacMullen <simon@lshift.net> Wed, 26 Sep 2007 11:49:26 +0100 + +rabbitmq-server (1.1.1-1) testing; urgency=low + + * New upstream release + + -- Simon MacMullen <simon@lshift.net> Wed, 29 Aug 2007 12:03:15 +0100 + +rabbitmq-server (1.1.0-alpha-2) testing; urgency=low + + * Fixed erlang-nox dependency + + -- Simon MacMullen <simon@lshift.net> Thu, 02 Aug 2007 11:27:13 +0100 + +rabbitmq-server (1.1.0-alpha-1) testing; urgency=low + + * New upstream release + + -- Simon MacMullen <simon@lshift.net> Fri, 20 Jul 2007 18:17:33 +0100 + +rabbitmq-server (1.0.0-alpha-1) unstable; urgency=low + + * Initial release + + -- Tony Garnock-Jones <tonyg@shortstop.lshift.net> 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 00000000..7ed6ff82 --- /dev/null +++ b/packaging/debs/Debian/debian/compat @@ -0,0 +1 @@ +5 diff --git a/packaging/debs/Debian/debian/control b/packaging/debs/Debian/debian/control new file mode 100644 index 00000000..ae698e1e --- /dev/null +++ b/packaging/debs/Debian/debian/control @@ -0,0 +1,15 @@ +Source: rabbitmq-server +Section: net +Priority: extra +Maintainer: Tony Garnock-Jones <tonyg@rabbitmq.com> +Build-Depends: cdbs, debhelper (>= 5), erlang-base | erlang-base-hipe, erlang-nox, erlang-dev, erlang-src, make, python +Standards-Version: 3.7.2 + +Package: rabbitmq-server +Architecture: all +Depends: erlang-nox, adduser +Description: An AMQP server written in Erlang + RabbitMQ is an implementation of AMQP, the emerging standard for high + performance enterprise messaging. The RabbitMQ server is a robust and + scalable implementation of an AMQP broker. + Homepage: http://www.rabbitmq.com/ diff --git a/packaging/debs/Debian/debian/copyright b/packaging/debs/Debian/debian/copyright new file mode 100644 index 00000000..e16996e5 --- /dev/null +++ b/packaging/debs/Debian/debian/copyright @@ -0,0 +1,491 @@ +This package was debianized by Tony Garnock-Jones <tonyg@rabbitmq.com> on +Wed, 3 Jan 2007 15:43:44 +0000. + +It was downloaded from http://www.rabbitmq.com/ + +Upstream Author: The RabbitMQ team <info@rabbitmq.com> + +Copyright: 2006-2008 LShift Ltd. + +License: +The RabbitMQ server is licensed under the MPL. + + + + + MOZILLA PUBLIC LICENSE + Version 1.1 + + --------------- + +1. Definitions. + + 1.0.1. "Commercial Use" means distribution or otherwise making the + Covered Code available to a third party. + + 1.1. "Contributor" means each entity that creates or contributes to + the creation of Modifications. + + 1.2. "Contributor Version" means the combination of the Original + Code, prior Modifications used by a Contributor, and the Modifications + made by that particular Contributor. + + 1.3. "Covered Code" means the Original Code or Modifications or the + combination of the Original Code and Modifications, in each case + including portions thereof. + + 1.4. "Electronic Distribution Mechanism" means a mechanism generally + accepted in the software development community for the electronic + transfer of data. + + 1.5. "Executable" means Covered Code in any form other than Source + Code. + + 1.6. "Initial Developer" means the individual or entity identified + as the Initial Developer in the Source Code notice required by Exhibit + A. + + 1.7. "Larger Work" means a work which combines Covered Code or + portions thereof with code not governed by the terms of this License. + + 1.8. "License" means this document. + + 1.8.1. "Licensable" means having the right to grant, to the maximum + extent possible, whether at the time of the initial grant or + subsequently acquired, any and all of the rights conveyed herein. + + 1.9. "Modifications" means any addition to or deletion from the + substance or structure of either the Original Code or any previous + Modifications. When Covered Code is released as a series of files, a + Modification is: + A. Any addition to or deletion from the contents of a file + containing Original Code or previous Modifications. + + B. Any new file that contains any part of the Original Code or + previous Modifications. + + 1.10. "Original Code" means Source Code of computer software code + which is described in the Source Code notice required by Exhibit A as + Original Code, and which, at the time of its release under this + License is not already Covered Code governed by this License. + + 1.10.1. "Patent Claims" means any patent claim(s), now owned or + hereafter acquired, including without limitation, method, process, + and apparatus claims, in any patent Licensable by grantor. + + 1.11. "Source Code" means the preferred form of the Covered Code for + making modifications to it, including all modules it contains, plus + any associated interface definition files, scripts used to control + compilation and installation of an Executable, or source code + differential comparisons against either the Original Code or another + well known, available Covered Code of the Contributor's choice. The + Source Code can be in a compressed or archival form, provided the + appropriate decompression or de-archiving software is widely available + for no charge. + + 1.12. "You" (or "Your") means an individual or a legal entity + exercising rights under, and complying with all of the terms of, this + License or a future version of this License issued under Section 6.1. + For legal entities, "You" includes any entity which 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. Source Code License. + + 2.1. The Initial Developer Grant. + The Initial Developer hereby grants You a world-wide, royalty-free, + non-exclusive license, subject to third party intellectual property + claims: + (a) under intellectual property rights (other than patent or + trademark) Licensable by Initial Developer to use, reproduce, + modify, display, perform, sublicense and distribute the Original + Code (or portions thereof) with or without Modifications, and/or + as part of a Larger Work; and + + (b) under Patents Claims infringed by the making, using or + selling of Original Code, to make, have made, use, practice, + sell, and offer for sale, and/or otherwise dispose of the + Original Code (or portions thereof). + + (c) the licenses granted in this Section 2.1(a) and (b) are + effective on the date Initial Developer first distributes + Original Code under the terms of this License. + + (d) Notwithstanding Section 2.1(b) above, no patent license is + granted: 1) for code that You delete from the Original Code; 2) + separate from the Original Code; or 3) for infringements caused + by: i) the modification of the Original Code or ii) the + combination of the Original Code with other software or devices. + + 2.2. Contributor Grant. + Subject to third party intellectual property claims, 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 Contributor, to use, reproduce, modify, + display, perform, sublicense and distribute the Modifications + created by such Contributor (or portions thereof) either on an + unmodified basis, with other Modifications, as Covered Code + and/or as part of a Larger Work; and + + (b) under Patent Claims infringed by the making, using, or + selling of Modifications made by that Contributor either alone + and/or in combination with its Contributor Version (or portions + of such combination), to make, use, sell, offer for sale, have + made, and/or otherwise dispose of: 1) Modifications made by that + Contributor (or portions thereof); and 2) the combination of + Modifications made by that Contributor with its Contributor + Version (or portions of such combination). + + (c) the licenses granted in Sections 2.2(a) and 2.2(b) are + effective on the date Contributor first makes Commercial Use of + the Covered Code. + + (d) Notwithstanding Section 2.2(b) above, no patent license is + granted: 1) for any code that Contributor has deleted from the + Contributor Version; 2) separate from the Contributor Version; + 3) for infringements caused by: i) third party modifications of + Contributor Version or ii) the combination of Modifications made + by that Contributor with other software (except as part of the + Contributor Version) or other devices; or 4) under Patent Claims + infringed by Covered Code in the absence of Modifications made by + that Contributor. + +3. Distribution Obligations. + + 3.1. Application of License. + The Modifications which You create or to which You contribute are + governed by the terms of this License, including without limitation + Section 2.2. The Source Code version of Covered Code may be + distributed only under the terms of this License or a future version + of this License released under Section 6.1, and You must include a + copy of this License with every copy of the Source Code You + distribute. You may not offer or impose any terms on any Source Code + version that alters or restricts the applicable version of this + License or the recipients' rights hereunder. However, You may include + an additional document offering the additional rights described in + Section 3.5. + + 3.2. Availability of Source Code. + Any Modification which You create or to which You contribute must be + made available in Source Code form under the terms of this License + either on the same media as an Executable version or via an accepted + Electronic Distribution Mechanism to anyone to whom you made an + Executable version available; and if made available via Electronic + Distribution Mechanism, must remain available for at least twelve (12) + months after the date it initially became available, or at least six + (6) months after a subsequent version of that particular Modification + has been made available to such recipients. You are responsible for + ensuring that the Source Code version remains available even if the + Electronic Distribution Mechanism is maintained by a third party. + + 3.3. Description of Modifications. + You must cause all Covered Code to which You contribute to contain a + file documenting the changes You made to create that Covered Code and + the date of any change. You must include a prominent statement that + the Modification is derived, directly or indirectly, from Original + Code provided by the Initial Developer and including the name of the + Initial Developer in (a) the Source Code, and (b) in any notice in an + Executable version or related documentation in which You describe the + origin or ownership of the Covered Code. + + 3.4. Intellectual Property Matters + (a) Third Party Claims. + If Contributor has knowledge that a license under a third party's + intellectual property rights is required to exercise the rights + granted by such Contributor under Sections 2.1 or 2.2, + Contributor must include a text file with the Source Code + distribution titled "LEGAL" which describes the claim and the + party making the claim in sufficient detail that a recipient will + know whom to contact. If Contributor obtains such knowledge after + the Modification is made available as described in Section 3.2, + Contributor shall promptly modify the LEGAL file in all copies + Contributor makes available thereafter and shall take other steps + (such as notifying appropriate mailing lists or newsgroups) + reasonably calculated to inform those who received the Covered + Code that new knowledge has been obtained. + + (b) Contributor APIs. + If Contributor's Modifications include an application programming + interface and Contributor has knowledge of patent licenses which + are reasonably necessary to implement that API, Contributor must + also include this information in the LEGAL file. + + (c) Representations. + Contributor represents that, except as disclosed pursuant to + Section 3.4(a) above, Contributor believes that Contributor's + Modifications are Contributor's original creation(s) and/or + Contributor has sufficient rights to grant the rights conveyed by + this License. + + 3.5. Required Notices. + You must duplicate the notice in Exhibit A in each file of the Source + Code. If it is not possible to put such notice in a particular Source + Code file due to its structure, then You must include such notice in a + location (such as a relevant directory) where a user would be likely + to look for such a notice. If You created one or more Modification(s) + You may add your name as a Contributor to the notice described in + Exhibit A. You must also duplicate this License in any documentation + for the Source Code where You describe recipients' rights or ownership + rights relating to Covered Code. You may choose to offer, and to + charge a fee for, warranty, support, indemnity or liability + obligations to one or more recipients of Covered Code. However, You + may do so only on Your own behalf, and not on behalf of the Initial + Developer or any Contributor. You must make it absolutely clear than + any such warranty, support, indemnity or liability obligation is + offered by You alone, and You hereby agree to indemnify the Initial + Developer and every Contributor for any liability incurred by the + Initial Developer or such Contributor as a result of warranty, + support, indemnity or liability terms You offer. + + 3.6. Distribution of Executable Versions. + You may distribute Covered Code in Executable form only if the + requirements of Section 3.1-3.5 have been met for that Covered Code, + and if You include a notice stating that the Source Code version of + the Covered Code is available under the terms of this License, + including a description of how and where You have fulfilled the + obligations of Section 3.2. The notice must be conspicuously included + in any notice in an Executable version, related documentation or + collateral in which You describe recipients' rights relating to the + Covered Code. You may distribute the Executable version of Covered + Code or ownership rights under a license of Your choice, which may + contain terms different from this License, provided that You are in + compliance with the terms of this License and that the license for the + Executable version does not attempt to limit or alter the recipient's + rights in the Source Code version from the rights set forth in this + License. If You distribute the Executable version under a different + license You must make it absolutely clear that any terms which differ + from this License are offered by You alone, not by the Initial + Developer or any Contributor. You hereby agree to indemnify the + Initial Developer and every Contributor for any liability incurred by + the Initial Developer or such Contributor as a result of any such + terms You offer. + + 3.7. Larger Works. + You may create a Larger Work by combining Covered Code with other code + not governed by the terms of this License and distribute the Larger + Work as a single product. In such a case, You must make sure the + requirements of this License are fulfilled for the Covered Code. + +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 Code 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 included in the LEGAL file described in Section 3.4 and must + be included with all distributions of the Source Code. 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. Application of this License. + + This License applies to code to which the Initial Developer has + attached the notice in Exhibit A and to related Covered Code. + +6. Versions of the License. + + 6.1. New Versions. + Netscape Communications Corporation ("Netscape") may publish revised + and/or new versions of the License from time to time. Each version + will be given a distinguishing version number. + + 6.2. Effect of New Versions. + Once Covered Code has been published under a particular version of the + License, You may always continue to use it under the terms of that + version. You may also choose to use such Covered Code under the terms + of any subsequent version of the License published by Netscape. No one + other than Netscape has the right to modify the terms applicable to + Covered Code created under this License. + + 6.3. Derivative Works. + If You create or use a modified version of this License (which you may + only do in order to apply it to code which is not already Covered Code + governed by this License), You must (a) rename Your license so that + the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", + "MPL", "NPL" or any confusingly similar phrase do not appear in your + license (except to note that your license differs from this License) + and (b) otherwise make it clear that Your version of the license + contains terms which differ from the Mozilla Public License and + Netscape Public License. (Filling in the name of the Initial + Developer, Original Code or Contributor in the notice described in + Exhibit A shall not of themselves be deemed to be modifications of + this License.) + +7. DISCLAIMER OF WARRANTY. + + COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE 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 CODE + IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, + YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER 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 CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + +8. TERMINATION. + + 8.1. This License and the rights granted hereunder will terminate + automatically if You fail to comply with terms herein and fail to cure + such breach within 30 days of becoming aware of the breach. All + sublicenses to the Covered Code which are properly granted shall + survive any termination of this License. Provisions which, by their + nature, must remain in effect beyond the termination of this License + shall survive. + + 8.2. If You initiate litigation by asserting a patent infringement + claim (excluding declatory judgment actions) against Initial Developer + or a Contributor (the Initial Developer or Contributor against whom + You file such action is referred to as "Participant") alleging that: + + (a) such Participant's Contributor Version directly or indirectly + infringes any patent, then any and all rights granted by such + Participant to You under Sections 2.1 and/or 2.2 of this License + shall, upon 60 days notice from Participant terminate prospectively, + unless if within 60 days after receipt of notice You either: (i) + agree in writing to pay Participant a mutually agreeable reasonable + royalty for Your past and future use of Modifications made by such + Participant, or (ii) withdraw Your litigation claim with respect to + the Contributor Version against such Participant. If within 60 days + of notice, a reasonable royalty and payment arrangement are not + mutually agreed upon in writing by the parties or the litigation claim + is not withdrawn, the rights granted by Participant to You under + Sections 2.1 and/or 2.2 automatically terminate at the expiration of + the 60 day notice period specified above. + + (b) any software, hardware, or device, other than such Participant's + Contributor Version, directly or indirectly infringes any patent, then + any rights granted to You by such Participant under Sections 2.1(b) + and 2.2(b) are revoked effective as of the date You first made, used, + sold, distributed, or had made, Modifications made by that + Participant. + + 8.3. If You assert a patent infringement claim against Participant + alleging that such Participant's Contributor Version directly or + indirectly infringes any patent where such claim is resolved (such as + by license or settlement) prior to the initiation of patent + infringement litigation, then the reasonable value of the licenses + granted by such Participant under Sections 2.1 or 2.2 shall be taken + into account in determining the amount or value of any payment or + license. + + 8.4. In the event of termination under Sections 8.1 or 8.2 above, + all end user license agreements (excluding distributors and resellers) + which have been validly granted by You or any distributor hereunder + prior to termination shall survive termination. + +9. LIMITATION OF LIABILITY. + + UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT + (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL + DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, + OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR + ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY + CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR 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. + +10. U.S. GOVERNMENT END USERS. + + The Covered Code is a "commercial item," as that term is defined in + 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer + software" and "commercial computer software documentation," as such + terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 + C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), + all U.S. Government End Users acquire Covered Code with only those + rights set forth herein. + +11. MISCELLANEOUS. + + This License represents the complete agreement concerning 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. This License shall be governed by + California law provisions (except to the extent applicable law, if + any, provides otherwise), excluding its conflict-of-law provisions. + With respect to disputes in which at least one party is a citizen of, + or an entity chartered or registered to do business in the United + States of America, any litigation relating to this License shall be + subject to the jurisdiction of the Federal Courts of the Northern + District of California, with venue lying in Santa Clara County, + California, with the losing party responsible for costs, including + without limitation, court costs and reasonable attorneys' fees and + expenses. The application of the United Nations Convention on + Contracts for the International Sale of Goods is expressly excluded. + Any law or regulation which provides that the language of a contract + shall be construed against the drafter shall not apply to this + License. + +12. RESPONSIBILITY FOR CLAIMS. + + As between Initial Developer and the Contributors, each party is + responsible for claims and damages arising, directly or indirectly, + out of its utilization of rights under this License and You agree to + work with Initial Developer and Contributors to distribute such + responsibility on an equitable basis. Nothing herein is intended or + shall be deemed to constitute any admission of liability. + +13. MULTIPLE-LICENSED CODE. + + Initial Developer may designate portions of the Covered Code as + "Multiple-Licensed". "Multiple-Licensed" means that the Initial + Developer permits you to utilize portions of the Covered Code under + Your choice of the NPL or the alternative licenses, if any, specified + by the Initial Developer in the file described in Exhibit A. + +EXHIBIT A -Mozilla Public License. + + ``The contents of this file are subject to the Mozilla Public License + Version 1.1 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + License for the specific language governing rights and limitations + under the License. + + The Original Code is RabbitMQ. + + The Initial Developers of the Original Code are LShift Ltd., + Cohesive Financial Technologies LLC., and Rabbit Technologies Ltd. + + Portions created by LShift Ltd., Cohesive Financial Technologies + LLC., and Rabbit Technologies Ltd. are Copyright (C) 2007-2008 + LShift Ltd., Cohesive Financial Technologies LLC., and Rabbit + Technologies Ltd.; + + All Rights Reserved. + + Contributor(s): ______________________________________.'' + + [NOTE: The text of this Exhibit A may differ slightly from the text of + the notices in the Source Code files of the Original Code. You should + use the text of this Exhibit A rather than the text found in the + Original Code Source Code for Your Modifications.] + + + + + +If you have any questions regarding licensing, please contact us at +info@rabbitmq.com. + +The Debian packaging is (C) 2007, Tony Garnock-Jones <tonyg@rabbitmq.com> and +is licensed under the GPL, see `/usr/share/common-licenses/GPL'. + + diff --git a/packaging/debs/Debian/debian/dirs b/packaging/debs/Debian/debian/dirs new file mode 100644 index 00000000..74ff60e2 --- /dev/null +++ b/packaging/debs/Debian/debian/dirs @@ -0,0 +1,6 @@ +usr/lib/erlang/lib +usr/sbin +usr/share/linda/overrides +var/lib/rabbitmq/mnesia +var/log/rabbitmq + diff --git a/packaging/debs/Debian/debian/init.d b/packaging/debs/Debian/debian/init.d new file mode 100644 index 00000000..f3999888 --- /dev/null +++ b/packaging/debs/Debian/debian/init.d @@ -0,0 +1,77 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: rabbitmq +# Required-Start: $remote_fs $network +# Required-Stop: $remote_fs $network +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Enable AMQP service provided by RabbitMQ. +### END INIT INFO + +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin +DAEMON=/usr/sbin/rabbitmq-multi +NAME=rabbitmq-server +DESC=rabbitmq-server +USER=rabbitmq +NODE_COUNT=1 + +test -x $DAEMON || exit 0 + +# Include rabbitmq defaults if available +if [ -f /etc/default/rabbitmq ] ; then + . /etc/default/rabbitmq +fi + +set -e +cd / + +start_rabbitmq () { + set +e + su rabbitmq -s /bin/sh -c "$DAEMON start_all ${NODE_COUNT}" > /var/log/rabbitmq/startup.log 2> /var/log/rabbitmq/startup.err + case "$?" in + 0) + echo SUCCESS;; + 1) + echo TIMEOUT - check /var/log/rabbitmq/startup.\{log,err\};; + *) + echo FAILED - check /var/log/rabbitmq/startup.log, .err + exit 1;; + esac + set -e +} + +stop_rabbitmq () { + set +e + su rabbitmq -s /bin/sh -c "$DAEMON stop_all" > /var/log/rabbitmq/shutdown.log 2> /var/log/rabbitmq/shutdown.err + if [ $? != 0 ] ; then + echo FAILED - check /var/log/rabbitmq/shutdown.log, .err + exit 0 + fi + set -e +} + +case "$1" in + start) + echo -n "Starting $DESC: " + start_rabbitmq + echo "$NAME." + ;; + stop) + echo -n "Stopping $DESC: " + stop_rabbitmq + echo "$NAME." + ;; + force-reload|restart) + echo -n "Restarting $DESC: " + stop_rabbitmq + start_rabbitmq + echo "$NAME." + ;; + *) + N=/etc/init.d/$NAME + echo "Usage: $N {start|stop|restart|force-reload}" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/packaging/debs/Debian/debian/postinst b/packaging/debs/Debian/debian/postinst new file mode 100644 index 00000000..f92131d0 --- /dev/null +++ b/packaging/debs/Debian/debian/postinst @@ -0,0 +1,55 @@ +#!/bin/sh +# postinst script for rabbitmq +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * <postinst> `configure' <most-recently-configured-version> +# * <old-postinst> `abort-upgrade' <new version> +# * <conflictor's-postinst> `abort-remove' `in-favour' <package> +# <new-version> +# * <postinst> `abort-remove' +# * <deconfigured's-postinst> `abort-deconfigure' `in-favour' +# <failed-install-package> <version> `removing' +# <conflicting-package> <version> +# for details, see http://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 rabbitmq + usermod -c "Rabbit AMQP Messaging Server" rabbitmq +fi + +chown -R rabbitmq:rabbitmq /var/lib/rabbitmq +chown -R rabbitmq:rabbitmq /var/log/rabbitmq + +case "$1" in + configure) + ;; + + 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 00000000..8d1e92a9 --- /dev/null +++ b/packaging/debs/Debian/debian/postrm @@ -0,0 +1,58 @@ +#!/bin/sh +# postrm script for rabbitmq +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * <postrm> `remove' +# * <postrm> `purge' +# * <old-postrm> `upgrade' <new-version> +# * <new-postrm> `failed-upgrade' <old-version> +# * <new-postrm> `abort-install' +# * <new-postrm> `abort-install' <old-version> +# * <new-postrm> `abort-upgrade' <old-version> +# * <disappearer's-postrm> `disappear' <overwriter> +# <overwriter-version> +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +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 /var/run/rabbitmq ]; then + rm -r /var/run/rabbitmq + fi + if getent passwd rabbitmq >/dev/null; then + deluser rabbitmq + fi + if getent group rabbitmq >/dev/null; then + delgroup rabbitmq + fi + ;; + + remove|upgrade|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/preinst.ex b/packaging/debs/Debian/debian/preinst.ex new file mode 100644 index 00000000..044ce6ba --- /dev/null +++ b/packaging/debs/Debian/debian/preinst.ex @@ -0,0 +1,37 @@ +#!/bin/sh +# preinst script for rabbitmq +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * <new-preinst> `install' +# * <new-preinst> `install' <old-version> +# * <new-preinst> `upgrade' <old-version> +# * <old-preinst> `abort-upgrade' <new-version> +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + install|upgrade) + ;; + + abort-upgrade) + ;; + + *) + echo "preinst 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/prerm.ex b/packaging/debs/Debian/debian/prerm.ex new file mode 100644 index 00000000..c74dc325 --- /dev/null +++ b/packaging/debs/Debian/debian/prerm.ex @@ -0,0 +1,40 @@ +#!/bin/sh +# prerm script for rabbitmq +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * <prerm> `remove' +# * <old-prerm> `upgrade' <new-version> +# * <new-prerm> `failed-upgrade' <old-version> +# * <conflictor's-prerm> `remove' `in-favour' <package> <new-version> +# * <deconfigured's-prerm> `deconfigure' `in-favour' +# <package-being-installed> <version> `removing' +# <conflicting-package> <version> +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + remove|upgrade|deconfigure) + ;; + + failed-upgrade) + ;; + + *) + echo "prerm 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/rabbitmqctl_wrapper b/packaging/debs/Debian/debian/rabbitmqctl_wrapper new file mode 100644 index 00000000..c484bb27 --- /dev/null +++ b/packaging/debs/Debian/debian/rabbitmqctl_wrapper @@ -0,0 +1,14 @@ +#!/bin/bash +# Escape spaces and quotes, because shell is revolting. +for arg in "$@" ; do + # Escape quotes in parameters, so that they're passed through cleanly. + arg=$(sed -e 's/"/\\"/' <<-END + $arg + END + ) + CMDLINE="${CMDLINE} \"${arg}\"" +done + +cd / +su rabbitmq -s /bin/sh -c "/usr/sbin/rabbitmqctl_real ${CMDLINE}" + diff --git a/packaging/debs/Debian/debian/rules b/packaging/debs/Debian/debian/rules new file mode 100644 index 00000000..15b0d50a --- /dev/null +++ b/packaging/debs/Debian/debian/rules @@ -0,0 +1,18 @@ +#!/usr/bin/make -f + +include /usr/share/cdbs/1/rules/debhelper.mk +include /usr/share/cdbs/1/class/makefile.mk + +RABBIT_LIB=$(DEB_DESTDIR)usr/lib/erlang/lib/rabbitmq_server-$(DEB_UPSTREAM_VERSION) + +DEB_MAKE_INSTALL_TARGET := install TARGET_DIR=$(RABBIT_LIB)/ SBIN_DIR=$(DEB_DESTDIR)usr/sbin + +DOCDIR=$(DEB_DESTDIR)usr/share/doc/rabbitmq-server/ + +install/rabbitmq-server:: + mkdir -p $(DOCDIR) + rm $(RABBIT_LIB)/LICENSE* + mv $(DEB_DESTDIR)usr/sbin/rabbitmqctl $(DEB_DESTDIR)usr/sbin/rabbitmqctl_real + cp debian/rabbitmqctl_wrapper $(DEB_DESTDIR)usr/sbin/rabbitmqctl + chmod a+x $(DEB_DESTDIR)usr/sbin/rabbitmqctl + echo "Tag: usr-lib-in-arch-all" > $(DEB_DESTDIR)usr/share/linda/overrides/rabbitmq-server diff --git a/packaging/debs/apt-repository/Makefile b/packaging/debs/apt-repository/Makefile new file mode 100644 index 00000000..ce4347bc --- /dev/null +++ b/packaging/debs/apt-repository/Makefile @@ -0,0 +1,28 @@ +SIGNING_USER_EMAIL=info@rabbitmq.com + +ifeq "$(UNOFFICIAL_RELEASE)" "" +HOME_ARG=HOME=$(GNUPG_PATH) +endif + +all: debian_apt_repository + +clean: + rm -rf debian + +CAN_HAS_REPREPRO=$(shell [ -f /usr/bin/reprepro ] && echo true) +ifeq ($(CAN_HAS_REPREPRO), true) +debian_apt_repository: clean + mkdir -p debian/conf + cp -a distributions debian/conf +ifeq "$(UNOFFICIAL_RELEASE)" "" + echo SignWith: $(SIGNING_USER_EMAIL) >> debian/conf/distributions +endif + for FILE in ../Debian/*.changes ; do \ + $(HOME_ARG) reprepro --ignore=wrongdistribution \ + -Vb debian include kitten $${FILE} ; \ + done + reprepro -Vb debian createsymlinks +else +debian_apt_repository: + @echo Not building APT repository as reprepro could not be found +endif diff --git a/packaging/debs/apt-repository/README b/packaging/debs/apt-repository/README new file mode 100644 index 00000000..514a37f3 --- /dev/null +++ b/packaging/debs/apt-repository/README @@ -0,0 +1,17 @@ +APT repository for RabbitMQ + +Previously we've attempted to run a repository in the same way that +Debian would: have repository management software installed on the +server, and upload new packages to the repository as and when they're +ready. + +This turned out to be both fiddly and annoying to do (and more +particularly to automate) so since our repository is always going to be +small it's easier just to create the entire repository as part of the +build process, just like a package. It can then be moved into place as a +single unit. The make target "debian_apt_repository" (invoked by "dist") +will create it, and it can get moved onto the server with the rest of +the packages. + +Read "README-real-repository" for information on how we used to do +this. diff --git a/packaging/debs/apt-repository/README-real-repository b/packaging/debs/apt-repository/README-real-repository new file mode 100644 index 00000000..b1526227 --- /dev/null +++ b/packaging/debs/apt-repository/README-real-repository @@ -0,0 +1,130 @@ +APT Repository for RabbitMQ in Debian +===================================== + +First, a note on what we're trying to do. We want a single "testing" +repository. When RabbitMQ is more stable we will also want a +"stable" repository. It is very important to understand that these refer +to the state of the rabbit code, *NOT* which Debian distribution they go +with. At the moment our dependencies are very simple so our packages can +be used with any current Debian version (etch, lenny, sid) as well as +with Ubuntu. So although we have a "testing" distribution, this is not +codenamed "lenny". Instead it's currently codenamed "kitten" since +that's a baby rabbit. + +Secondly, a note on software. We need a tool to manage the repository, +and a tool to perform uploads to the repository. Debian being Debian +there are quite a few of each. We will use "rerepro" to manage the +repository since it's modern, maintained, and fairly simple. We will use +"dupload" to perform the uploads since it gives us the ability to run +arbitrary commands after the upload, which means we don't need to run a +cron job on the web server to process uploads. + +Creating a repository +===================== + +Much of this was cribbed from: +http://www.debian-administration.org/articles/286 + +The repository is fundamentally just some files in a folder, served over +HTTP (or FTP etc). So let's make it "debian" in the root of +www.rabbitmq.com. + +This means the repository will be at http://www.rabbitmq.com/debian/ and +can be added to a sources.list as: + +deb http://www.rabbitmq.com/debian/ testing main +deb-src http://www.rabbitmq.com/debian/ testing main + +Inside this folder we need a "conf" folder, and in +that we need a "distributions" configuration file - see the file in this +folder. Note that: + +* We list all architectures so that people can install rabbitmq-server + on to anything. +* We don't list the "all" architecture even though we use it; it's + implied. +* We only have a "main" component, we could have non-free and contrib + here if it was relevant. +* We list the email address associated with the key we want to use to + sign the repository. Yes, even after signing packages we still want to + sign the repository. + +We're now ready to go. Assuming the path to our repository is /path, +(and hence configuration is in /path/conf) we can upload a file to the +repository (creating it in the process) by doing something like this on +the repository host: + +$ reprepro --ignore=wrongdistribution -Vb /path include kitten \ + rabbitmq-server_1.0.0-alpha-1_i386.changes + +Note that we upload to the distribution "kitten" rather than "testing". +We also pass --ignore=wrongdistribution since the current packages are +built to go in "unstable" (this will be changed obviously). + +Note also that the .changes file claims to be for i386 even though the +package is for architecture "all". This is a bug in debhelper. + +Finally, if you've just created a repository, you want to run: + +$ reprepro -Vb /path createsymlinks + +since this will create "kitten" -> "testing" symlinks. You only need to +do this once. + +Removing packages +================= + +Fairly simple: + +$ reprepro --ignore=wrongdistribution -Vb /path remove kitten \ + rabbitmq-server + +Subsequent updates and "dupload" +================================ + +You can run the "reprepro" command above again to update the versions of +software in the repository. Since we probably don't want to have to log +into the machine in question to do this, we can use "dupload". This is a +tool which uploads Debian packages. The supplied file "dupload.conf" can +be renamed to ~/.dupload.conf. If you then run: + +$ dupload -to rabbit --nomail . + +in the folder with the .changes file, dupload will: + +* create an incoming folder in your home directory on the repository +machine +* upload everything there +* run reprepro to move the packages into the repository +* "rm -rf" the uploads folder + +This is a bit cheesy but should be enough for our purposes. The +dupload.conf uses scp and ssh so you need a public-key login (or tpye +your password lots). + +There's still an open question as to whether dupload is really needed +for our case. + +Keys and signing +================ + +We currently sign the package as we build it; but we also need to sign +the repository. The key is currently on my machine (mrforgetful) and has +ID 056E8E56. We should put it on CDs though. + +reprepro will automatically sign the repository if we have the right +SignWith line in the configuration, AND the secret key is installed on +the repository server. This is obviously not ideal; not sure what the +solution is right now. + +You can export the public key with: + +$ gpg --export --armor 056E8E56 > rabbit.pub + +(Open question: do we want to get our key on subkeys.pgp.net?) + +We can then add this key to the website and tell our users to import the +key into apt with: + +# apt-key add rabbit.pub + diff --git a/packaging/debs/apt-repository/distributions b/packaging/debs/apt-repository/distributions new file mode 100644 index 00000000..183eb034 --- /dev/null +++ b/packaging/debs/apt-repository/distributions @@ -0,0 +1,7 @@ +Origin: RabbitMQ +Label: RabbitMQ Repository for Debian / Ubuntu etc +Suite: testing +Codename: kitten +Architectures: arm hppa ia64 mips mipsel s390 sparc i386 amd64 powerpc source +Components: main +Description: RabbitMQ Repository for Debian / Ubuntu etc diff --git a/packaging/debs/apt-repository/dupload.conf b/packaging/debs/apt-repository/dupload.conf new file mode 100644 index 00000000..9ceed760 --- /dev/null +++ b/packaging/debs/apt-repository/dupload.conf @@ -0,0 +1,16 @@ +package config; + +$rabbit_user = "simon"; +$rabbit_host = "mrforgetful.lshift.net"; +$rabbit_repo_path = "/srv/debian"; +$rabbit_reprepro_extra_args = "--ignore=wrongdistribution"; + +$cfg{'rabbit'} = { + fqdn => "$rabbit_host", + login => "$rabbit_user", + method => "scp", + incoming => "incoming", +}; + +$preupload{'deb'} = "ssh ${rabbit_host} mkdir incoming"; +$postupload{'deb'} = "ssh ${rabbit_host} \"cd incoming && reprepro ${$rabbit_reprepro_extra_args} -Vb ${rabbit_repo_path} include kitten *.changes && cd .. && rm -r incoming\""; diff --git a/packaging/generic-unix/Makefile b/packaging/generic-unix/Makefile new file mode 100644 index 00000000..13257522 --- /dev/null +++ b/packaging/generic-unix/Makefile @@ -0,0 +1,25 @@ +VERSION=0.0.0 +SOURCE_DIR=rabbitmq-server-$(VERSION) +TARGET_DIR=rabbitmq_server-$(VERSION) +TARGET_TARBALL=rabbitmq-server-generic-unix-$(VERSION) + +dist: + make -C ../.. VERSION=$(VERSION) srcdist + tar -zxvf ../../dist/$(SOURCE_DIR).tar.gz + + mkdir $(TARGET_DIR) + mkdir $(TARGET_DIR)/sbin + make -C $(SOURCE_DIR) \ + TARGET_DIR=`pwd`/$(TARGET_DIR) \ + SBIN_DIR=`pwd`/$(TARGET_DIR)/sbin \ + install + + tar -zcf $(TARGET_TARBALL).tar.gz $(TARGET_DIR) + rm -rf $(SOURCE_DIR) $(TARGET_DIR) + +clean: clean_partial + rm -f rabbitmq-server-generic-unix-*.tar.gz + +clean_partial: + rm -rf $(SOURCE_DIR) + rm -rf $(TARGET_DIR) diff --git a/packaging/macports/net/rabbitmq-server/Portfile b/packaging/macports/net/rabbitmq-server/Portfile new file mode 100644 index 00000000..82ae62aa --- /dev/null +++ b/packaging/macports/net/rabbitmq-server/Portfile @@ -0,0 +1,79 @@ +# $Id$ -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:filetype=tcl:et:sw=4:ts=4:sts=4 + +PortSystem 1.0 +name rabbitmq-server +version 1.3.0 +revision 0 +categories net +maintainers tonyg@rabbitmq.com +platforms darwin +description The RabbitMQ AMQP Server +long_description \ + RabbitMQ is an implementation of AMQP, the emerging standard for \ + high performance enterprise messaging. The RabbitMQ server is a \ + robust and scalable implementation of an AMQP broker. + +homepage http://www.rabbitmq.com/ +master_sites http://www.rabbitmq.com/releases/source/ + +distname rabbitmq-${version} + +checksums \ + md5 46ee6dbbacdc67b25cc6ccd9c394b6f2 \ + sha1 67e1e640136a1993567ace97dc5f67b1ad8e6304 \ + rmd160 9e92502d36ab5cd1e3f0d39a46bb512b9440f35a + +depends_build port:erlang +depends_run port:erlang + +use_configure no + +worksrcdir rabbitmq-${version}/erlang/rabbit + +use_parallel_build yes + +destroot.destdir \ + DIST_DIR=${destroot}${prefix}/lib/erlang/lib/rabbitmq_server-${version} \ + SBIN_DIR=${destroot}${prefix}/sbin +destroot.target dist-unix + +destroot.keepdirs \ + ${destroot}${prefix}/var/lib/rabbitmq/pids \ + ${destroot}${prefix}/var/log/rabbitmq \ + ${destroot}${prefix}/var/lib/rabbitmq/mnesia + +pre-destroot { + addgroup rabbitmq + adduser rabbitmq gid=[existsgroup rabbitmq] realname=RabbitMQ\ Server home=${prefix}/var/lib/rabbitmq +} + +post-destroot { + xinstall -d ${destroot}${prefix}/etc/default + xinstall -d -g [existsgroup rabbitmq] -m 775 ${destroot}${prefix}/var/log/rabbitmq + xinstall -d -g [existsgroup rabbitmq] -m 775 ${destroot}${prefix}/var/lib/rabbitmq + xinstall -d -g [existsgroup rabbitmq] -m 775 ${destroot}${prefix}/var/lib/rabbitmq/pids + xinstall -d -g [existsgroup rabbitmq] -m 775 ${destroot}${prefix}/var/lib/rabbitmq/mnesia + file rename ${destroot}${prefix}/sbin/rabbitmqctl ${destroot}${prefix}/sbin/rabbitmqctl_real + xinstall -m 555 ${filespath}/rabbitmqctl_wrapper ${destroot}${prefix}/sbin + file rename ${destroot}${prefix}/sbin/rabbitmqctl_wrapper ${destroot}${prefix}/sbin/rabbitmqctl + file copy ${filespath}/rabbitmq-defaults ${destroot}${prefix}/etc/default/rabbitmq + reinplace "s:^CLUSTER_CONFIG_FILE=:CLUSTER_CONFIG_FILE=${prefix}:" \ + ${destroot}${prefix}/sbin/rabbitmq-multi \ + ${destroot}${prefix}/sbin/rabbitmq-server \ + ${destroot}${prefix}/sbin/rabbitmqctl \ + ${destroot}${prefix}/sbin/rabbitmqctl_real + reinplace "s:^CONFIG_FILE=:CONFIG_FILE=${prefix}:" \ + ${destroot}${prefix}/sbin/rabbitmq-multi \ + ${destroot}${prefix}/sbin/rabbitmq-server \ + ${destroot}${prefix}/sbin/rabbitmqctl \ + ${destroot}${prefix}/sbin/rabbitmqctl_real + reinplace "s|@PREFIX@|${prefix}|" \ + ${destroot}${prefix}/sbin/rabbitmqctl \ + ${destroot}${prefix}/etc/default/rabbitmq +} + +startupitem.create yes +startupitem.init "PATH=${prefix}/bin:${prefix}/sbin:\$PATH; export PATH" +startupitem.start "su rabbitmq -c rabbitmq-server 2>&1" +startupitem.stop "rabbitmqctl stop 2>&1" +startupitem.logfile ${prefix}/var/log/rabbitmq/startupitem.log diff --git a/packaging/macports/net/rabbitmq-server/files/rabbitmq-defaults b/packaging/macports/net/rabbitmq-server/files/rabbitmq-defaults new file mode 100644 index 00000000..1f9aad11 --- /dev/null +++ b/packaging/macports/net/rabbitmq-server/files/rabbitmq-defaults @@ -0,0 +1,7 @@ +#!/bin/sh +# defaults file for rabbitmq-server +# + +PIDS_FILE=@PREFIX@/var/lib/rabbitmq/pids +LOG_BASE=@PREFIX@/var/log/rabbitmq +MNESIA_BASE=@PREFIX@/var/lib/rabbitmq/mnesia diff --git a/packaging/macports/net/rabbitmq-server/files/rabbitmqctl_wrapper b/packaging/macports/net/rabbitmq-server/files/rabbitmqctl_wrapper new file mode 100644 index 00000000..392c82ff --- /dev/null +++ b/packaging/macports/net/rabbitmq-server/files/rabbitmqctl_wrapper @@ -0,0 +1,13 @@ +#!/bin/bash +# Escape spaces and quotes, because shell is revolting. +for arg in "$@" ; do + # Escape quotes in parameters, so that they're passed through cleanly. + arg=$(sed -e 's/"/\\"/' <<-END + $arg + END + ) + CMDLINE="${CMDLINE} \"${arg}\"" +done + +cd / +exec su rabbitmq -c "@PREFIX@/sbin/rabbitmqctl_real ${CMDLINE}" diff --git a/packaging/windows/Makefile b/packaging/windows/Makefile new file mode 100644 index 00000000..077461c5 --- /dev/null +++ b/packaging/windows/Makefile @@ -0,0 +1,28 @@ +VERSION=0.0.0 +SOURCE_DIR=rabbitmq-server-$(VERSION) +TARGET_DIR=rabbitmq_server-$(VERSION) +TARGET_ZIP=rabbitmq-server-windows-$(VERSION) + +dist: + make -C ../.. VERSION=$(VERSION) srcdist + tar -zxvf ../../dist/$(SOURCE_DIR).tar.gz + make -C $(SOURCE_DIR) + + mkdir $(SOURCE_DIR)/sbin + mv $(SOURCE_DIR)/scripts/rabbitmq-server.bat $(SOURCE_DIR)/sbin + mv $(SOURCE_DIR)/scripts/rabbitmqctl.bat $(SOURCE_DIR)/sbin + mv $(SOURCE_DIR)/scripts/rabbitmq-multi.bat $(SOURCE_DIR)/sbin + rm -rf $(SOURCE_DIR)/scripts + rm -rf $(SOURCE_DIR)/codegen* $(SOURCE_DIR)/Makefile + rm -f $(SOURCE_DIR)/BUILD + + mv $(SOURCE_DIR) $(TARGET_DIR) + zip -r $(TARGET_ZIP).zip $(TARGET_DIR) + rm -rf $(TARGET_DIR) + +clean: clean_partial + rm -f rabbitmq-server-windows-*.zip + +clean_partial: + rm -rf $(SOURCE_DIR) + rm -rf $(TARGET_DIR) |