[qpid-cpp/f18] Added systemd support.

Darryl L. Pierce mcpierce at fedoraproject.org
Wed Sep 26 12:59:59 UTC 2012


commit 7f66a5f73b78ff62ce8a6fa4529c730472a973fb
Author: Darryl L. Pierce <dpierce at redhat.com>
Date:   Tue Sep 25 14:33:04 2012 -0400

    Added systemd support.
    
    - Removed SysVInit support.
    - Resolves: BZ#832724

 05-Provides-systemd-support-to-qpidd.patch |   62 ++++++++++++++++++++++++++++
 qpid-cpp.spec                              |   45 ++++++++++++++------
 2 files changed, 94 insertions(+), 13 deletions(-)
---
diff --git a/05-Provides-systemd-support-to-qpidd.patch b/05-Provides-systemd-support-to-qpidd.patch
new file mode 100644
index 0000000..8929a8e
--- /dev/null
+++ b/05-Provides-systemd-support-to-qpidd.patch
@@ -0,0 +1,62 @@
+From 5fb17312500bcad280f4edc2828546170788209f Mon Sep 17 00:00:00 2001
+From: "Darryl L. Pierce" <dpierce at redhat.com>
+Date: Fri, 21 Sep 2012 14:47:58 -0400
+Subject: [PATCH] Provides systemd support to qpidd.
+
+Systemd is a replacement for SysVInit scripts for starting up daemons on
+Linux systems.
+---
+ qpid/cpp/etc/Makefile.am      |  8 +++++---
+ qpid/cpp/etc/qpidd.service.in | 13 +++++++++++++
+ 2 files changed, 18 insertions(+), 3 deletions(-)
+ create mode 100644 qpid/cpp/etc/qpidd.service.in
+
+diff --git a/qpid/cpp/etc/Makefile.am b/qpid/cpp/etc/Makefile.am
+index aa41c65..7af495f 100644
+--- a/qpid/cpp/etc/Makefile.am
++++ b/qpid/cpp/etc/Makefile.am
+@@ -20,7 +20,7 @@ SASL_CONF = sasl2/qpidd.conf
+ 
+ EXTRA_DIST = \
+ 	$(SASL_CONF) \
+-	qpidd.in qpidd-primary.in qpidd.conf qpidc.conf CMakeLists.txt \
++	qpidd.service.in qpidd.in qpidd-primary.in qpidd.conf qpidc.conf CMakeLists.txt \
+ 	cluster.conf-example.xml.in
+ 
+ confdir = $(sysconfdir)/qpid
+@@ -47,9 +47,11 @@ qpidd-primary: qpidd-primary.in
+ 	sed $(SUBST) $< > $@
+ cluster.conf-example.xml: cluster.conf-example.xml.in
+ 	sed $(SUBST) $< > $@
++qpidd.service: qpidd.service.in
++	sed $(SUBST) $< > $@
+ 
+-CLEANFILES = qpidd qpidd-primary cluster.conf-example.xml
++CLEANFILES = qpidd qpidd-primary cluster.conf-example.xml qpidd.service
+ 
+ initddir = $(sysconfdir)/init.d
+-nobase_initd_SCRIPTS = qpidd qpidd-primary
++nobase_initd_SCRIPTS = qpidd qpidd-primary qpidd.service
+ 
+diff --git a/qpid/cpp/etc/qpidd.service.in b/qpid/cpp/etc/qpidd.service.in
+new file mode 100644
+index 0000000..ec89e12
+--- /dev/null
++++ b/qpid/cpp/etc/qpidd.service.in
+@@ -0,0 +1,13 @@
++[Unit]
++Description=An AMQP message broker daemon.
++Documentation=man:qpidd(1) http://qpid.apache.org/
++After=network.target
++
++[Service]
++User=qpidd
++Group=qpidd
++Type=simple
++ExecStart=/usr/sbin/qpidd --config /etc/qpidd.conf
++
++[Install]
++WantedBy=multi-user.target
+-- 
+1.7.11.4
+
diff --git a/qpid-cpp.spec b/qpid-cpp.spec
index ac77eef..85daf3e 100644
--- a/qpid-cpp.spec
+++ b/qpid-cpp.spec
@@ -30,7 +30,7 @@
 
 Name:           qpid-cpp
 Version:        0.18
-Release:        1.1%{?dist}
+Release:        2%{?dist}
 Summary:        Libraries for Qpid C++ client applications
 License:        ASL 2.0
 URL:            http://qpid.apache.org
@@ -71,6 +71,7 @@ Patch1: 01-Adds-a-Cmake-target-to-generate-a-source-tarball-for.patch
 Patch2: 02-Relocated-all-swig-.i-files-to-the-include-directory.patch
 Patch3: 03-Fixed-db4-on-Fedora.patch
 Patch4: 04-Fix-boost-filesystem-for-1.50.patch
+Patch5: 05-Provides-systemd-support-to-qpidd.patch
 
 %description
 
@@ -187,12 +188,16 @@ format for easy browsing.
 %package -n qpid-cpp-server
 Summary:   An AMQP message broker daemon
 Obsoletes: qpid-cpp-server-devel <= %{version}-%{release}
-Obsoletes: qpid-cpp-server-daemon <= %{version}-%{release}
+Obsoletes: qpid-cpp-server-daemon < %{version}-%{release}
 Provides:  qpid-cpp-server-daemon = %{version}-%{release}
 
 Requires:  qpid-cpp-client = %{version}-%{release}
 Requires:  cyrus-sasl
 
+Requires(post): systemd-units
+Requires(preun): systemd-units
+Requires(postun): systemd-units
+
 %description -n qpid-cpp-server
 A message broker daemon that receives stores and routes messages using
 the open AMQP messaging protocol.
@@ -203,7 +208,7 @@ the open AMQP messaging protocol.
 %{_libdir}/qpid/daemon/replicating_listener.so
 %{_libdir}/qpid/daemon/replication_exchange.so
 %{_sbindir}/qpidd
-%{_initrddir}/qpidd
+%{_unitdir}/qpidd.service
 %config(noreplace) %{_sysconfdir}/qpidd.conf
 %config(noreplace) %{_sysconfdir}/sasl2/qpidd.conf
 %dir %{_libdir}/qpid/daemon
@@ -221,20 +226,23 @@ getent passwd qpidd >/dev/null || \
 exit 0
 
 %post -n qpid-cpp-server
-# This adds the proper /etc/rc*.d links for the script
-/sbin/chkconfig --add qpidd
-/sbin/ldconfig
+if [$1 -eq 1] ; then
+    # Initial installation
+    /sbin/systemctl --no-reload enable qpidd.service >/dev/null 2>&1 || :
+fi
 
 %preun -n qpid-cpp-server
-# Check that this is actual deinstallation, not just removing for upgrade.
-if [ $1 = 0 ]; then
-        /sbin/service qpidd stop >/dev/null 2>&1 || :
-        /sbin/chkconfig --del qpidd
+if [ $1 -eq 0 ] ; then
+   # Package removal, not upgrade
+   /bin/systemctl --no-reload disable qpidd.service > /dev/null 2>&1 || :
+   /bin/systemctl stop qpidd.service > /dev/null 2>&1 || :
 fi
 
 %postun -n qpid-cpp-server
-if [ $1 -ge 1 ]; then
-        /sbin/service qpidd condrestart >/dev/null 2>&1 || :
+if [ $1 -ge 1 ] ; then
+   # Package upgrade, not uninstall
+   /bin/systemctl stop qpidd.service > /dev/null 2>&1 || :
+   /bin/systemctl start qpidd.service > /dev/null 2>&1 || :
 fi
 /sbin/ldconfig
 
@@ -584,6 +592,7 @@ Summary: Perl bindings for Apache Qpid Messaging
 %patch1 -p2
 %patch2 -p2
 %patch4 -p2
+%patch5 -p2
 
 # qpid-store
 pushd ../store-%{version}.%{store_svnrev}
@@ -641,13 +650,13 @@ popd
 %install
 rm -rf %{buildroot}
 mkdir -p -m0755 %{buildroot}/%{_bindir}
+mkdir -p -m0755 %{buildroot}/%{_unitdir}
 
 (cd python; %{__python} setup.py install --skip-build --install-purelib %{python_sitearch} --root %{buildroot})
 (cd extras/qmf; %{__python} setup.py install --skip-build --install-purelib %{python_sitearch} --root %{buildroot})
 pushd %{_builddir}/qpid-%{version}/cpp
 make install DESTDIR=%{buildroot}
 
-install -Dp -m0755 etc/qpidd %{buildroot}%{_initrddir}/qpidd
 install -d -m0755 %{buildroot}%{_localstatedir}/lib/qpidd
 install -d -m0755 %{buildroot}%{_libdir}/qpidd
 install -d -m0755 %{buildroot}/var/run/qpidd
@@ -698,6 +707,11 @@ rm -rf %{buildroot}%{_datadir}/qpidc/examples/request-response
 rm -rf %{buildroot}%{_datadir}/qpidc/examples/tradedemo
 rm -rf %{buildroot}%{_datadir}/qpidc/examples/xml-exchange
 
+# install systemd files
+install -pm 644 %{_builddir}/qpid-%{version}/cpp/etc/qpidd.service %{buildroot}/%{_unitdir}
+rm -f %{buildroot}/%{_initrddir}/qpidd
+rm -f %{buildroot}/%{_sysconfdir}/init.d/qpidd.service
+
 install -d %{buildroot}%{python_sitearch}
 install -pm 644 %{_builddir}/qpid-%{version}/cpp/bindings/qpid/python/cqpid.py %{buildroot}%{python_sitearch}
 install -pm 644 %{_builddir}/qpid-%{version}/cpp/bindings/qpid/python/.libs/_cqpid.so %{buildroot}%{python_sitearch}
@@ -774,6 +788,11 @@ rm -rf %{buildroot}
 
 
 %changelog
+* Fri Sep 21 2012 Darryl L. Pierce <dpierce at redhat.com> - 0.18-2
+- Added systemd support.
+- Removed SysVInit support.
+- Related: BZ#832724
+
 * Fri Sep 14 2012 Darryl L. Pierce <dpierce at redhat.com> - 0.18-1.1
 - Fixed qpid-cpp-server to Provide qpid-cpp-server-daemon
 


More information about the scm-commits mailing list