summaryrefslogtreecommitdiff
path: root/packaging
diff options
context:
space:
mode:
authorTony Garnock-Jones <tonyg@lshift.net>2008-07-03 13:35:11 +0100
committerTony Garnock-Jones <tonyg@lshift.net>2008-07-03 13:35:11 +0100
commit675869a27714307bce377638dfe8f6a5f069e757 (patch)
treee4f9872242be02145702775f5c563f2b246f57ce /packaging
downloadrabbitmq-server-675869a27714307bce377638dfe8f6a5f069e757.tar.gz
Initial commit, from repo-rebase-20080703121916_default (e96543d904a2)
Diffstat (limited to 'packaging')
-rw-r--r--packaging/Makefile3
-rw-r--r--packaging/RPMS/Fedora/Makefile34
-rw-r--r--packaging/RPMS/Fedora/README.txt53
-rw-r--r--packaging/RPMS/Fedora/init.d79
-rw-r--r--packaging/RPMS/Fedora/rabbitmq-server.spec138
-rw-r--r--packaging/RPMS/Fedora/rabbitmqctl_wrapper14
-rwxr-xr-xpackaging/checks.sh45
-rw-r--r--packaging/debs/Debian/Makefile32
-rwxr-xr-xpackaging/debs/Debian/check-changelog.sh29
-rw-r--r--packaging/debs/Debian/debian/changelog42
-rw-r--r--packaging/debs/Debian/debian/compat1
-rw-r--r--packaging/debs/Debian/debian/control15
-rw-r--r--packaging/debs/Debian/debian/copyright491
-rw-r--r--packaging/debs/Debian/debian/dirs6
-rw-r--r--packaging/debs/Debian/debian/init.d77
-rw-r--r--packaging/debs/Debian/debian/postinst55
-rw-r--r--packaging/debs/Debian/debian/postrm58
-rw-r--r--packaging/debs/Debian/debian/preinst.ex37
-rw-r--r--packaging/debs/Debian/debian/prerm.ex40
-rw-r--r--packaging/debs/Debian/debian/rabbitmqctl_wrapper14
-rw-r--r--packaging/debs/Debian/debian/rules18
-rw-r--r--packaging/debs/apt-repository/Makefile28
-rw-r--r--packaging/debs/apt-repository/README17
-rw-r--r--packaging/debs/apt-repository/README-real-repository130
-rw-r--r--packaging/debs/apt-repository/distributions7
-rw-r--r--packaging/debs/apt-repository/dupload.conf16
-rw-r--r--packaging/generic-unix/Makefile25
-rw-r--r--packaging/macports/net/rabbitmq-server/Portfile79
-rw-r--r--packaging/macports/net/rabbitmq-server/files/rabbitmq-defaults7
-rw-r--r--packaging/macports/net/rabbitmq-server/files/rabbitmqctl_wrapper13
-rw-r--r--packaging/windows/Makefile28
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)