diff options
author | Alvaro Videla <alvaro@rabbitmq.com> | 2013-08-26 11:18:49 -0700 |
---|---|---|
committer | Alvaro Videla <alvaro@rabbitmq.com> | 2013-08-26 11:18:49 -0700 |
commit | 9110ec0663597a52cde39186239c281af1ee4c55 (patch) | |
tree | f0a17d61e6f2172c944848c5fa6bc9e5777484fc | |
parent | d65d6cad62c79239c3116fca499226c16ffc2c4c (diff) | |
download | rabbitmq-server-bug25283.tar.gz |
adds standalone RPM filesbug25283
-rw-r--r-- | packaging/RPMS/standalone/Makefile | 61 | ||||
-rw-r--r-- | packaging/RPMS/standalone/rabbitmq-server.init | 179 | ||||
-rw-r--r-- | packaging/RPMS/standalone/rabbitmq-server.logrotate | 12 | ||||
-rw-r--r-- | packaging/RPMS/standalone/rabbitmq-server.spec | 261 |
4 files changed, 513 insertions, 0 deletions
diff --git a/packaging/RPMS/standalone/Makefile b/packaging/RPMS/standalone/Makefile new file mode 100644 index 00000000..b0b1c2c2 --- /dev/null +++ b/packaging/RPMS/standalone/Makefile @@ -0,0 +1,61 @@ +STANDALONE_DIR=../../standalone +# TODO we should produce a rabbitmq-server-standalone-VERSION.tar.gz and then rename it +STANDALONE_TAR=$(notdir $(wildcard $(STANDALONE_DIR)/rabbitmq-server-mac-standalone-[0-9.]*.tar.gz)) +COMMON_DIR=../../common +VERSION=$(shell echo $(STANDALONE_TAR) | sed -e 's:rabbitmq-server-mac-standalone-\(.*\)\.tar\.gz:\1:g') + +$(info $(STANDALONE_TAR)) + +TOP_DIR=$(shell pwd) +#Under debian we do not want to check build dependencies, since that +#only checks build-dependencies using rpms, not debs +DEFINES=--define '_topdir $(TOP_DIR)' --define '_tmppath $(TOP_DIR)/tmp' --define '_sysconfdir /etc' --define '_localstatedir /var' + +ifndef RPM_OS +RPM_OS=fedora +endif + +ifeq "$(RPM_OS)" "suse" +FUNCTION_LIBRARY= +REQUIRES=/sbin/chkconfig /sbin/service +OS_DEFINES=--define '_initrddir /etc/init.d' --define 'dist .suse' +SPEC_DEFINES=--define 'group_tag Productivity/Networking/Other' +START_PROG=startproc +else +FUNCTION_LIBRARY=\# Source function library.\n. /etc/init.d/functions +REQUIRES=chkconfig initscripts +OS_DEFINES=--define '_initrddir /etc/rc.d/init.d' +SPEC_DEFINES=--define 'group_tag Development/Libraries' +START_PROG=daemon +endif + +rpms: clean server + +prepare: + mkdir -p BUILD SOURCES SPECS SRPMS RPMS tmp + cp $(STANDALONE_DIR)/$(STANDALONE_TAR) SOURCES/rabbitmq-server-$(VERSION).tar.gz + cp rabbitmq-server.spec SPECS + sed -i 's|%%VERSION%%|$(VERSION)|;s|%%REQUIRES%%|$(REQUIRES)|' \ + SPECS/rabbitmq-server.spec + + cp ${COMMON_DIR}/* SOURCES/ + cp rabbitmq-server.init SOURCES/rabbitmq-server.init + sed -i \ + -e 's|^START_PROG=.*$$|START_PROG="$(START_PROG)"|' \ + -e 's|^@FUNCTION_LIBRARY@|$(FUNCTION_LIBRARY)|' \ + SOURCES/rabbitmq-server.init +ifeq "$(RPM_OS)" "fedora" +# Fedora says that only vital services should have Default-Start + sed -i -e '/^# Default-Start:/d;/^# Default-Stop:/d' \ + SOURCES/rabbitmq-server.init +endif + sed -i -e 's|@SU_RABBITMQ_SH_C@|su rabbitmq -s /bin/sh -c|' \ + -e 's|@STDOUT_STDERR_REDIRECTION@||' \ + SOURCES/rabbitmq-script-wrapper + cp rabbitmq-server.logrotate SOURCES/rabbitmq-server.logrotate + +server: prepare + rpmbuild -ba --nodeps SPECS/rabbitmq-server.spec $(DEFINES) $(OS_DEFINES) $(SPEC_DEFINES) + +clean: + rm -rf SOURCES SPECS RPMS SRPMS BUILD tmp diff --git a/packaging/RPMS/standalone/rabbitmq-server.init b/packaging/RPMS/standalone/rabbitmq-server.init new file mode 100644 index 00000000..3e48147b --- /dev/null +++ b/packaging/RPMS/standalone/rabbitmq-server.init @@ -0,0 +1,179 @@ +#!/bin/sh +# +# rabbitmq-server RabbitMQ broker +# +# chkconfig: - 80 05 +# description: Enable AMQP service provided by RabbitMQ +# + +### BEGIN INIT INFO +# Provides: rabbitmq-server +# Required-Start: $remote_fs $network +# Required-Stop: $remote_fs $network +# Default-Start: 3 5 +# Default-Stop: 0 1 2 6 +# Description: RabbitMQ broker +# Short-Description: Enable AMQP service provided by RabbitMQ broker +### END INIT INFO + +@FUNCTION_LIBRARY@ + +PATH=/sbin:/usr/sbin:/bin:/usr/bin +NAME=rabbitmq-server +DAEMON=/usr/sbin/${NAME} +CONTROL=/usr/sbin/rabbitmqctl +DESC=rabbitmq-server +USER=rabbitmq +ROTATE_SUFFIX= +INIT_LOG_DIR=/var/log/rabbitmq +PID_FILE=/var/run/rabbitmq/pid + +START_PROG= # Set when building package +LOCK_FILE=/var/lock/subsys/$NAME + +test -x $DAEMON || exit 0 +test -x $CONTROL || exit 0 + +RETVAL=0 +set -e + +[ -f /etc/default/${NAME} ] && . /etc/default/${NAME} + +ensure_pid_dir () { + PID_DIR=`dirname ${PID_FILE}` + if [ ! -d ${PID_DIR} ] ; then + mkdir -p ${PID_DIR} + chown -R ${USER}:${USER} ${PID_DIR} + chmod 755 ${PID_DIR} + fi +} + +remove_pid () { + rm -f ${PID_FILE} + rmdir `dirname ${PID_FILE}` || : +} + +start_rabbitmq () { + status_rabbitmq quiet + if [ $RETVAL = 0 ] ; then + echo RabbitMQ is currently running + else + RETVAL=0 + ensure_pid_dir + set +e + RABBITMQ_PID_FILE=$PID_FILE $START_PROG $DAEMON \ + > "${INIT_LOG_DIR}/startup_log" \ + 2> "${INIT_LOG_DIR}/startup_err" \ + 0<&- & + $CONTROL wait $PID_FILE >/dev/null 2>&1 + RETVAL=$? + set -e + case "$RETVAL" in + 0) + echo SUCCESS + if [ -n "$LOCK_FILE" ] ; then + touch $LOCK_FILE + fi + ;; + *) + remove_pid + echo FAILED - check ${INIT_LOG_DIR}/startup_\{log, _err\} + RETVAL=1 + ;; + esac + fi +} + +stop_rabbitmq () { + status_rabbitmq quiet + if [ $RETVAL = 0 ] ; then + set +e + $CONTROL stop ${PID_FILE} > ${INIT_LOG_DIR}/shutdown_log 2> ${INIT_LOG_DIR}/shutdown_err + RETVAL=$? + set -e + if [ $RETVAL = 0 ] ; then + remove_pid + if [ -n "$LOCK_FILE" ] ; then + rm -f $LOCK_FILE + fi + else + echo FAILED - check ${INIT_LOG_DIR}/shutdown_log, _err + fi + else + echo RabbitMQ is not running + RETVAL=0 + fi +} + +status_rabbitmq() { + set +e + if [ "$1" != "quiet" ] ; then + $CONTROL status 2>&1 + else + $CONTROL status > /dev/null 2>&1 + fi + if [ $? != 0 ] ; then + RETVAL=3 + fi + set -e +} + +rotate_logs_rabbitmq() { + set +e + $CONTROL rotate_logs ${ROTATE_SUFFIX} + if [ $? != 0 ] ; then + RETVAL=1 + fi + set -e +} + +restart_running_rabbitmq () { + status_rabbitmq quiet + if [ $RETVAL = 0 ] ; then + restart_rabbitmq + else + echo RabbitMQ is not runnning + RETVAL=0 + fi +} + +restart_rabbitmq() { + stop_rabbitmq + start_rabbitmq +} + +case "$1" in + start) + echo -n "Starting $DESC: " + start_rabbitmq + echo "$NAME." + ;; + stop) + echo -n "Stopping $DESC: " + stop_rabbitmq + echo "$NAME." + ;; + status) + status_rabbitmq + ;; + rotate-logs) + echo -n "Rotating log files for $DESC: " + rotate_logs_rabbitmq + ;; + force-reload|reload|restart) + echo -n "Restarting $DESC: " + restart_rabbitmq + echo "$NAME." + ;; + try-restart) + echo -n "Restarting $DESC: " + restart_running_rabbitmq + echo "$NAME." + ;; + *) + echo "Usage: $0 {start|stop|status|rotate-logs|restart|condrestart|try-restart|reload|force-reload}" >&2 + RETVAL=1 + ;; +esac + +exit $RETVAL diff --git a/packaging/RPMS/standalone/rabbitmq-server.logrotate b/packaging/RPMS/standalone/rabbitmq-server.logrotate new file mode 100644 index 00000000..6b657614 --- /dev/null +++ b/packaging/RPMS/standalone/rabbitmq-server.logrotate @@ -0,0 +1,12 @@ +/var/log/rabbitmq/*.log { + weekly + missingok + rotate 20 + compress + delaycompress + notifempty + sharedscripts + postrotate + /sbin/service rabbitmq-server rotate-logs > /dev/null + endscript +} diff --git a/packaging/RPMS/standalone/rabbitmq-server.spec b/packaging/RPMS/standalone/rabbitmq-server.spec new file mode 100644 index 00000000..5ef65e89 --- /dev/null +++ b/packaging/RPMS/standalone/rabbitmq-server.spec @@ -0,0 +1,261 @@ +%define debug_package %{nil} + +Name: rabbitmq-server +Version: %%VERSION%% +Release: 1%{?dist} +License: MPLv1.1 and MIT and ASL 2.0 and BSD +Group: %{group_tag} +Source: http://www.rabbitmq.com/releases/rabbitmq-server/v%{version}/%{name}-%{version}.tar.gz +Source1: rabbitmq-server.init +Source2: rabbitmq-script-wrapper +Source3: rabbitmq-server.logrotate +Source4: rabbitmq-server.ocf +URL: http://www.rabbitmq.com/ +BuildRequires: erlang >= R13B03, python-simplejson, xmlto, libxslt +Requires: logrotate, openssl = 1.0.0 +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-%{_arch}-root +Summary: The RabbitMQ server +Requires(post): %%REQUIRES%% +Requires(pre): %%REQUIRES%% + +%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. + +# We want to install into /usr/lib, even on 64-bit platforms +%define _rabbit_libdir %{_exec_prefix}/lib/rabbitmq +%define _rabbit_erllibdir %{_rabbit_libdir}/lib/rabbitmq_server-%{version} +%define _rabbit_wrapper %{_builddir}/`basename %{S:2}` +%define _rabbit_server_ocf %{_builddir}/`basename %{S:4}` +%define _plugins_state_dir %{_localstatedir}/lib/rabbitmq/plugins + + +%define _maindir %{buildroot}%{_rabbit_erllibdir} + + +%prep + +%setup -q -c + +%build +mv rabbitmq_server-%{version}/* . +rm -rf rabbitmq_server-%{version} +cp %{S:2} %{_rabbit_wrapper} +cp %{S:4} %{_rabbit_server_ocf} +# make %{?_smp_mflags} + +%install + +rm -rf %{buildroot} + +mkdir -p %{_maindir} +# copy server files (ebin, sbin, etc) to _maindir +cp -r * %{_maindir}/ +mkdir -p %{buildroot}%{_rabbit_libdir} +mkdir -p %{buildroot}%{_mandir} + +# TODO refactor these functions into one taking 2 args +fix_env () { + sed -e $1 sbin/rabbitmq-env > sbin/rabbitmq-env.tmp && mv sbin/rabbitmq-env.tmp sbin/rabbitmq-env +} + +fix_defaults () { + sed -e $1 sbin/rabbitmq-defaults > sbin/rabbitmq-defaults.tmp && mv sbin/rabbitmq-defaults.tmp sbin/rabbitmq-defaults +} + +fix_env 's:RABBITMQ_HOME="\${SCRIPT_DIR}/..":RABBITMQ_HOME="\${SCRIPT_DIR}/../lib/rabbitmq_server-3.1.3/":' +fix_defaults 's:CLEAN_BOOT_FILE="\${SYS_PREFIX}/releases/3.1.3/start_clean":CLEAN_BOOT_FILE="\${RABBITMQ_HOME}/releases/3.1.3/start_clean":' +fix_defaults 's:SASL_BOOT_FILE="\${SYS_PREFIX}/releases/3.1.3/start_sasl":SASL_BOOT_FILE="\${RABBITMQ_HOME}/releases/3.1.3/start_sasl":' +fix_defaults 's:SYS_PREFIX=\${RABBITMQ_HOME}:SYS_PREFIX=:' + +mv sbin %{buildroot}%{_rabbit_libdir}/bin +mv share/man/* %{buildroot}%{_mandir}/ + +mkdir -p %{buildroot}%{_localstatedir}/lib/rabbitmq/mnesia +mkdir -p %{buildroot}%{_localstatedir}/log/rabbitmq + +#Copy all necessary lib files etc. +install -p -D -m 0755 %{S:1} %{buildroot}%{_initrddir}/rabbitmq-server +install -p -D -m 0755 %{_rabbit_wrapper} %{buildroot}%{_sbindir}/rabbitmqctl +install -p -D -m 0755 %{_rabbit_wrapper} %{buildroot}%{_sbindir}/rabbitmq-server +install -p -D -m 0755 %{_rabbit_wrapper} %{buildroot}%{_sbindir}/rabbitmq-plugins +install -p -D -m 0755 %{_rabbit_server_ocf} %{buildroot}%{_exec_prefix}/lib/ocf/resource.d/rabbitmq/rabbitmq-server + +install -p -D -m 0644 %{S:3} %{buildroot}%{_sysconfdir}/logrotate.d/rabbitmq-server + +mkdir -p %{buildroot}%{_sysconfdir}/rabbitmq + +#Build the list of files +echo '%defattr(-,root,root, -)' >%{_builddir}/%{name}.files +find %{buildroot} -path %{buildroot}%{_sysconfdir} -prune -o '!' -type d -printf "/%%P\n" >>%{_builddir}/%{name}.files + +%pre + +if [ $1 -gt 1 ]; then + # Upgrade - stop previous instance of rabbitmq-server init.d script + /sbin/service rabbitmq-server stop +fi + +# create rabbitmq group +if ! getent group rabbitmq >/dev/null; then + groupadd -r rabbitmq +fi + +# create rabbitmq user +if ! getent passwd rabbitmq >/dev/null; then + useradd -r -g rabbitmq -d %{_localstatedir}/lib/rabbitmq rabbitmq \ + -c "RabbitMQ messaging server" +fi + +%post +/sbin/chkconfig --add %{name} +if [ -f %{_sysconfdir}/rabbitmq/rabbitmq.conf ] && [ ! -f %{_sysconfdir}/rabbitmq/rabbitmq-env.conf ]; then + mv %{_sysconfdir}/rabbitmq/rabbitmq.conf %{_sysconfdir}/rabbitmq/rabbitmq-env.conf +fi + +%preun +if [ $1 = 0 ]; then + #Complete uninstall + /sbin/service rabbitmq-server stop + /sbin/chkconfig --del rabbitmq-server + + # We do not remove /var/log and /var/lib directories + # Leave rabbitmq user and group +fi + +# Clean out plugin activation state, both on uninstall and upgrade +rm -rf %{_plugins_state_dir} +for ext in rel script boot ; do + rm -f %{_rabbit_erllibdir}/ebin/rabbit.$ext +done + +%files -f ../%{name}.files +%defattr(-,root,root,-) +%attr(0755, rabbitmq, rabbitmq) %dir %{_localstatedir}/lib/rabbitmq +%attr(0755, rabbitmq, rabbitmq) %dir %{_localstatedir}/log/rabbitmq +%dir %{_sysconfdir}/rabbitmq +%{_initrddir}/rabbitmq-server +%config(noreplace) %{_sysconfdir}/logrotate.d/rabbitmq-server +# %doc LICENSE* + +%clean +rm -rf %{buildroot} + +%changelog +* Tue Jun 25 2013 tim@rabbitmq.com 3.1.3-1 +- New Upstream Release + +* Mon Jun 24 2013 tim@rabbitmq.com 3.1.2-1 +- New Upstream Release + +* Mon May 20 2013 tim@rabbitmq.com 3.1.1-1 +- Test release + +* Wed May 1 2013 simon@rabbitmq.com 3.1.0-1 +- New Upstream Release + +* Tue Dec 11 2012 simon@rabbitmq.com 3.0.1-1 +- New Upstream Release + +* Fri Nov 16 2012 simon@rabbitmq.com 3.0.0-1 +- New Upstream Release + +* Fri Dec 16 2011 steve@rabbitmq.com 2.7.1-1 +- New Upstream Release + +* Tue Nov 8 2011 steve@rabbitmq.com 2.7.0-1 +- New Upstream Release + +* Fri Sep 9 2011 tim@rabbitmq.com 2.6.1-1 +- New Upstream Release + +* Fri Aug 26 2011 tim@rabbitmq.com 2.6.0-1 +- New Upstream Release + +* Mon Jun 27 2011 simon@rabbitmq.com 2.5.1-1 +- New Upstream Release + +* Thu Jun 9 2011 jerryk@vmware.com 2.5.0-1 +- New Upstream Release + +* Thu Apr 7 2011 Alexandru Scvortov <alexandru@rabbitmq.com> 2.4.1-1 +- New Upstream Release + +* Tue Mar 22 2011 Alexandru Scvortov <alexandru@rabbitmq.com> 2.4.0-1 +- New Upstream Release + +* Thu Feb 3 2011 simon@rabbitmq.com 2.3.1-1 +- New Upstream Release + +* Tue Feb 1 2011 simon@rabbitmq.com 2.3.0-1 +- New Upstream Release + +* Mon Nov 29 2010 rob@rabbitmq.com 2.2.0-1 +- New Upstream Release + +* Tue Oct 19 2010 vlad@rabbitmq.com 2.1.1-1 +- New Upstream Release + +* Tue Sep 14 2010 marek@rabbitmq.com 2.1.0-1 +- New Upstream Release + +* Mon Aug 23 2010 mikeb@rabbitmq.com 2.0.0-1 +- New Upstream Release + +* Wed Jul 14 2010 Emile Joubert <emile@rabbitmq.com> 1.8.1-1 +- New Upstream Release + +* Tue Jun 15 2010 Matthew Sackman <matthew@rabbitmq.com> 1.8.0-1 +- New Upstream Release + +* Mon Feb 15 2010 Matthew Sackman <matthew@lshift.net> 1.7.2-1 +- New Upstream Release + +* Fri Jan 22 2010 Matthew Sackman <matthew@lshift.net> 1.7.1-1 +- New Upstream Release + +* Mon Oct 5 2009 David Wragg <dpw@lshift.net> 1.7.0-1 +- New upstream release + +* Wed Jun 17 2009 Matthias Radestock <matthias@lshift.net> 1.6.0-1 +- New upstream release + +* Tue May 19 2009 Matthias Radestock <matthias@lshift.net> 1.5.5-1 +- Maintenance release for the 1.5.x series + +* Mon Apr 6 2009 Matthias Radestock <matthias@lshift.net> 1.5.4-1 +- Maintenance release for the 1.5.x series + +* Tue Feb 24 2009 Tony Garnock-Jones <tonyg@lshift.net> 1.5.3-1 +- Maintenance release for the 1.5.x series + +* Mon Feb 23 2009 Tony Garnock-Jones <tonyg@lshift.net> 1.5.2-1 +- Maintenance release for the 1.5.x series + +* Mon Jan 19 2009 Ben Hood <0x6e6562@gmail.com> 1.5.1-1 +- Maintenance release for the 1.5.x series + +* Wed Dec 17 2008 Matthias Radestock <matthias@lshift.net> 1.5.0-1 +- New upstream release + +* Thu Jul 24 2008 Tony Garnock-Jones <tonyg@lshift.net> 1.4.0-1 +- New upstream release + +* Mon Mar 3 2008 Adrien Pierard <adrian@lshift.net> 1.3.0-1 +- New upstream release + +* Wed Sep 26 2007 Simon MacMullen <simon@lshift.net> 1.2.0-1 +- New upstream release + +* Wed Aug 29 2007 Simon MacMullen <simon@lshift.net> 1.1.1-1 +- New upstream release + +* Mon Jul 30 2007 Simon MacMullen <simon@lshift.net> 1.1.0-1.alpha +- New upstream release + +* Tue Jun 12 2007 Hubert Plociniczak <hubert@lshift.net> 1.0.0-1.20070607 +- Building from source tarball, added starting script, stopping + +* Mon May 21 2007 Hubert Plociniczak <hubert@lshift.net> 1.0.0-1.alpha +- Initial build of server library of RabbitMQ package |