[lldpad] Introduce systemd support

Petr Sabata psabata at fedoraproject.org
Tue Jun 21 14:22:52 UTC 2011


commit af3a878ec4bbb4fb3d28b572ca1c4bddb224624a
Author: Petr Sabata <contyk at redhat.com>
Date:   Tue Jun 21 16:22:29 2011 +0200

    Introduce systemd support

 lldpad-0.9.41-init.patch       |   19 ---------------
 lldpad-0.9.42-clean-exit.patch |   12 ++++++++++
 lldpad.service                 |   10 ++++++++
 lldpad.spec                    |   48 ++++++++++++++++++++++++---------------
 4 files changed, 51 insertions(+), 38 deletions(-)
---
diff --git a/lldpad-0.9.42-clean-exit.patch b/lldpad-0.9.42-clean-exit.patch
new file mode 100644
index 0000000..574335c
--- /dev/null
+++ b/lldpad-0.9.42-clean-exit.patch
@@ -0,0 +1,12 @@
+diff --git a/lldpad.c b/lldpad.c
+index 3a4a721..2f8bc23 100644
+--- a/lldpad.c
++++ b/lldpad.c
+@@ -424,5 +424,7 @@ int main(int argc, char *argv[])
+ 	closelog();
+ 	unlink(PID_FILE);
+ 	eloop_destroy();
++	if (eloop_terminated())
++		exit(0);
+ 	exit(1);
+ }
diff --git a/lldpad.service b/lldpad.service
new file mode 100644
index 0000000..8cc4aed
--- /dev/null
+++ b/lldpad.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Link Layer Discovery Protocol Agent Daemon.
+After=syslog.target network.target
+
+[Service]
+Type=simple
+ExecStart=/usr/sbin/lldpad
+
+[Install]
+WantedBy=multi-user.target
diff --git a/lldpad.spec b/lldpad.spec
index ac4a3ab..9bc46d0 100644
--- a/lldpad.spec
+++ b/lldpad.spec
@@ -1,23 +1,25 @@
 Name:               lldpad
 Version:            0.9.42
-Release:            1%{?dist}
+Release:            2%{?dist}
 Summary:            Intel LLDP Agent
 Group:              System Environment/Daemons
 License:            GPLv2
 URL:                http://open-lldp.org/
 Source0:            %{name}-%{version}.tar.gz
-Patch0:             lldpad-0.9.41-init.patch
-Patch1:             lldpad-0.9.41-make.patch
-Patch2:             lldpad-0.9.41-lldptool-invalid-pointer.patch
+Source1:            %{name}.service
+Patch0:             lldpad-0.9.41-make.patch
+Patch1:             lldpad-0.9.41-lldptool-invalid-pointer.patch
+Patch2:             lldpad-0.9.42-clean-exit.patch
 
 Requires:           kernel >= 2.6.32
+BuildRequires:      systemd-units
 BuildRequires:      libconfig-devel >= 1.3.2 kernel-headers >= 2.6.32
 BuildRequires:      flex >= 2.5.33
 BuildRequires:      automake autoconf libtool
 BuildRequires:      libnl-devel libnl
-Requires(post):     chkconfig
-Requires(preun):    chkconfig initscripts
-Requires(postun):   initscripts
+Requires(post):     systemd-units
+Requires(preun):    systemd-units
+Requires(postun):   systemd-units
 Provides:           dcbd = %{version}-%{release}
 Obsoletes:          dcbd < 0.9.26
 
@@ -39,8 +41,8 @@ that use %{name}.
 %prep
 %setup -q -n open-lldp
 %patch0 -p1 -b .make
-%patch1 -p1 -b .init
-%patch2 -p1 -b .invalid-pointer
+%patch1 -p1 -b .invalid-pointer
+%patch2 -p1 -b .clean-exit
 
 %build
 ./bootstrap.sh
@@ -49,23 +51,25 @@ make %{?_smp_mflags}
 
 %install
 make install DESTDIR=%{buildroot}
-mkdir -p %{buildroot}%{_initddir}
-mv %{buildroot}/etc/init.d/%{name} %{buildroot}%{_initddir}
-rm -rf %{buildroot}/etc/init.d
 rm -f %{buildroot}%{_mandir}/man8/dcbd.8
+mkdir -p %{buildroot}%{_unitdir}
+install -m644 %{SOURCE1} %{buildroot}%{_unitdir}
+rm -rf %{buildroot}/etc/init.d
 
 %post
-/sbin/chkconfig --add %{name}
+if [ $1 -eq 1 ]; then
+    systemctl enable %{name}.service
+fi
 
 %preun
-if [ $1 = 0 ]; then
-        /sbin/service %{name} stop > /dev/null 2>&1
-        /sbin/chkconfig --del %{name}
+if [ $1 -eq 0 ]; then
+        systemctl stop %{name}.service
+        systemctl disable %{name}.service
 fi
 
 %postun
-if [ "$1" -ge "1" ]; then
-        /sbin/service %{name} condrestart > /dev/null  2>&1 || :
+if [ $1 -eq 1 ]; then
+        systemctl try-restart %{name}.service
 fi
 
 %post devel
@@ -89,7 +93,7 @@ fi
 %doc COPYING README ChangeLog
 %{_sbindir}/*
 %dir %{_sharedstatedir}/%{name}
-%{_initddir}/%{name}
+%{_unitdir}/%{name}.service
 %{_mandir}/man8/*
 
 %files devel
@@ -97,6 +101,12 @@ fi
 %{_libdir}/pkgconfig/*.pc
 
 %changelog
+* Tue Jun 21 2011 Petr Sabata <contyk at redhat.com> - 0.9.42-2
+- Introduce systemd unit file, drop SysV support
+- Call systemctl instead of service and chkconfig
+- Enable the service only on new installation (%post)
+- Clean exit patch
+
 * Mon Jun 13 2011 Petr Sabata <contyk at redhat.com> - 0.9.42-1
 - 0.9.42 bump (massive patches cleanup)
 - Remove obsolete defattr


More information about the scm-commits mailing list