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/RPMS | |
| download | rabbitmq-server-git-675869a27714307bce377638dfe8f6a5f069e757.tar.gz | |
Initial commit, from repo-rebase-20080703121916_default (e96543d904a2)
Diffstat (limited to 'packaging/RPMS')
| -rw-r--r-- | packaging/RPMS/Fedora/Makefile | 34 | ||||
| -rw-r--r-- | packaging/RPMS/Fedora/README.txt | 53 | ||||
| -rw-r--r-- | packaging/RPMS/Fedora/init.d | 79 | ||||
| -rw-r--r-- | packaging/RPMS/Fedora/rabbitmq-server.spec | 138 | ||||
| -rw-r--r-- | packaging/RPMS/Fedora/rabbitmqctl_wrapper | 14 |
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}" + |
