[packages/rabbitmq-server] Version: 3.5.0, systemd support, fixes

jajcus jajcus at pld-linux.org
Wed Mar 25 15:58:43 CET 2015


commit a827eddd0ea50471da74eb1cf0e61bb61f69f078
Author: Jacek Konieczny <j.konieczny at eggsoft.pl>
Date:   Wed Mar 25 15:50:52 2015 +0100

    Version: 3.5.0, systemd support, fixes
    
    – upgraded
    – 'status' action of the init script fixed
    - systemd unit added (erlang-sd_notify dependency for proper startup
      notification)
    - duplicate file removed
    - adapterized

 rabbitmq-server.init    | 18 +++++++++++++++++-
 rabbitmq-server.service | 12 ++++++++++++
 rabbitmq-server.spec    | 39 ++++++++++++++++++++++++++-------------
 3 files changed, 55 insertions(+), 14 deletions(-)
---
diff --git a/rabbitmq-server.spec b/rabbitmq-server.spec
index be49c67..ae8fba2 100644
--- a/rabbitmq-server.spec
+++ b/rabbitmq-server.spec
@@ -2,25 +2,29 @@
 %define		gid	257
 Summary:	Implementation of an AMQP broker
 Name:		rabbitmq-server
-Version:	2.7.1
+Version:	3.5.0
 Release:	1
 License:	MPL v1.1
 Group:		Applications/Communications
-Source0:	http://www.rabbitmq.com/releases/%{name}/v%{version}/%{name}-%{version}.tar.gz
-# Source0-md5:	44eb09d2dff8ce641a1fe7f255a4c546
+Source0:	http://www.rabbitmq.com/releases/rabbitmq-server/v%{version}/%{name}-%{version}.tar.gz
+# Source0-md5:	e599837e6d6984781a6b93b90d3b7edc
 Source1:	rabbitmq.conf
 Source2:	%{name}.init
 Source3:	%{name}.sysconfig
+Source4:	%{name}.service
 URL:		http://www.rabbitmq.com/
 BuildRequires:	docbook-dtd45-xml
 BuildRequires:	erlang
+BuildRequires:	erlang-sd_notify
 BuildRequires:	python
 BuildRequires:	python-modules
-BuildRequires:	rpmbuild(macros) >= 1.268
+BuildRequires:	rpmbuild(macros) >= 1.644
 BuildRequires:	xmlto
 Requires(post,preun):	/sbin/chkconfig
 Requires:	erlang
+Requires:	erlang-sd_notify
 Requires:	rc-scripts
+Requires:	systemd-units >= 38
 BuildRoot:	%{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
 %description
@@ -36,18 +40,19 @@ operating systems and developer platforms.
 
 %install
 rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT{/var/{lib,log}/rabbitmq,/etc/{sysconfig,rc.d/init.d,rabbitmq}}
+install -d $RPM_BUILD_ROOT{/var/{lib,log}/rabbitmq,/etc/{sysconfig,rc.d/init.d,rabbitmq},%{systemdunitdir}}
 
 %{__make} install \
 	TARGET_DIR=$RPM_BUILD_ROOT%{_libdir}/%{name} \
 	SBIN_DIR=$RPM_BUILD_ROOT%{_sbindir} \
 	MAN_DIR=$RPM_BUILD_ROOT%{_mandir}
 
-%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{name}/{INSTALL,LICENSE*} 
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{name}/{INSTALL,LICENSE*}
 
-install %{SOURCE1} $RPM_BUILD_ROOT/etc/rabbitmq/rabbitmq-env.conf
-install %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}
-install %{SOURCE3} $RPM_BUILD_ROOT/etc/sysconfig/%{name}
+cp -p %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/rabbitmq/rabbitmq-env.conf
+cp -p %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}
+cp -p %{SOURCE3} $RPM_BUILD_ROOT/etc/sysconfig/%{name}
+cp -p %{SOURCE4} $RPM_BUILD_ROOT%{systemdunitdir}
 
 %clean
 rm -rf $RPM_BUILD_ROOT
@@ -59,21 +64,29 @@ rm -rf $RPM_BUILD_ROOT
 %post
 /sbin/chkconfig --add %{name}
 %service %{name} restart
+%systemd_post %{name}.service
 
 %preun
 if [ "$1" = "0" ]; then
 	%service %{name} stop
 	/sbin/chkconfig --del %{name}
 fi
+%systemd_preun %{name}.service
+
+%postun
+%systemd_reload
+
+%triggerpostun -- %{name} < 3.5.0
+%systemd_trigger %{name}.service
 
 %files
 %defattr(644,root,root,755)
 %doc README
-%dir /etc/rabbitmq
-%config(noreplace) %verify(not md5 mtime size) /etc/rabbitmq/rabbitmq-env.conf
+%dir %{_sysconfdir}/rabbitmq
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/rabbitmq/rabbitmq-env.conf
 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/rabbitmq-server
-%attr(754,root,root) %{_sysconfdir}/rc.d/init.d/%{name}
-%{_sysconfdir}/sysconfig/%{name}
+%attr(754,root,root) /etc/rc.d/init.d/%{name}
+%{systemdunitdir}/rabbitmq-server.service
 %attr(755,root,root) %{_sbindir}/*
 %dir %{_libdir}/%{name}
 %{_libdir}/%{name}/ebin
diff --git a/rabbitmq-server.init b/rabbitmq-server.init
index 1cfdef3..b8f9ebc 100644
--- a/rabbitmq-server.init
+++ b/rabbitmq-server.init
@@ -48,6 +48,22 @@ stop() {
 	fi
 }
 
+rmq_status() {
+
+	if output="$(/usr/sbin/rabbitmqctl status 2>/dev/null)" ; then
+		pid=$(echo "$output" | awk '/{pid,/ { match($0, "{pid,[0-9]+}"); print substr($0,RSTART+5,RLENGTH-6) }')
+		uptime=$(echo "$output" | awk '/{uptime,/ { match($0, "{uptime,[0-9]+}"); print substr($0,RSTART+8,RLENGTH-9) }')
+		nls "%s (pid %s) is running%s" "rabbitmq-server" "$pid" "$cpuset_msg"
+		return 0
+	fi
+	if [ -f /var/lock/subsys/rabbitmq-server ]; then
+		nls "daemon %s dead but subsys (%s) locked" "rabbitmq-server" "rabbitmq-server"
+		return 2
+	fi
+	nls "%s is stopped" "rabbitmq-server"
+	return 3
+}
+
 RETVAL=0
 # See how we were called.
 case "$1" in
@@ -62,7 +78,7 @@ case "$1" in
 	start
 	;;
   status)
-	status rabbitmq-server
+	rmq_status
 	;;
   *)
 	msg_usage "$0 {start|stop|status}"
diff --git a/rabbitmq-server.service b/rabbitmq-server.service
new file mode 100644
index 0000000..a730867
--- /dev/null
+++ b/rabbitmq-server.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=RabbitMQ server
+
+[Service]
+Environment=NODE_COUNT=1
+EnvironmentFile=/etc/sysconfig/rabbitmq-server
+Type=notify
+ExecStart=/usr/sbin/rabbitmq-server start_all $NODE_COUNT
+User=rabbitmq
+
+[Install]
+WantedBy=multi-user.target
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/rabbitmq-server.git/commitdiff/a827eddd0ea50471da74eb1cf0e61bb61f69f078



More information about the pld-cvs-commit mailing list