summaryrefslogtreecommitdiff
path: root/packaging/RPMS
diff options
context:
space:
mode:
Diffstat (limited to 'packaging/RPMS')
-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
5 files changed, 318 insertions, 0 deletions
diff --git a/packaging/RPMS/Fedora/Makefile b/packaging/RPMS/Fedora/Makefile
new file mode 100644
index 0000000000..c8e979a737
--- /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 0000000000..a7db530b24
--- /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 0000000000..09ca02c906
--- /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 0000000000..4f3dafaa40
--- /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 0000000000..c484bb27ea
--- /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}"
+