[net-snmp/f16] Integrate with systemd Resolves: #718183
Jan Šafránek
jsafrane at fedoraproject.org
Tue Aug 9 10:00:43 UTC 2011
commit b3f9805afea0e76acb63449bd2f2c727442ebca7
Author: Jan Safranek <jsafrane at redhat.com>
Date: Tue Aug 9 11:54:21 2011 +0200
Integrate with systemd
Resolves: #718183
net-snmp.spec | 60 +++++++++++++++++++++++++++++++++++-----------
net-snmpd.sysconfig | 4 +++
net-snmptrapd.sysconfig | 4 +++
snmpd.service | 11 ++++++++
snmptrapd.service | 11 ++++++++
5 files changed, 75 insertions(+), 15 deletions(-)
---
diff --git a/net-snmp.spec b/net-snmp.spec
index 2defe2e..ef0e2c3 100644
--- a/net-snmp.spec
+++ b/net-snmp.spec
@@ -11,7 +11,7 @@
Summary: A collection of SNMP protocol tools and libraries
Name: net-snmp
Version: 5.7
-Release: 4%{?dist}
+Release: 5%{?dist}
Epoch: 1
License: BSD
@@ -27,6 +27,8 @@ Source6: net-snmp-trapd.redhat.conf
Source7: net-snmpd.sysconfig
Source8: net-snmptrapd.sysconfig
Source9: net-snmp-tmpfs.conf
+Source10: snmpd.service
+Source11: snmptrapd.service
Patch1: net-snmp-5.6-pie.patch
Patch2: net-snmp-5.5-dir-fix.patch
Patch3: net-snmp-5.6-multilib.patch
@@ -35,6 +37,7 @@ Patch5: net-snmp-5.5-apsl-copying.patch
Patch6: net-snmp-5.5-perl-linking.patch
Patch7: net-snmp-5.6-test-debug.patch
Patch8: net-snmp-5.6.1-mysql.patch
+Patch9: net-snmp-5.7-systemd.patch
Requires(post): chkconfig
Requires(preun): chkconfig
@@ -44,6 +47,11 @@ Requires(preun): initscripts
Requires(preun): coreutils
Requires: %{name}-libs = %{epoch}:%{version}-%{release}
Requires: mysql-libs
+# This is actually needed for the %triggerun script but Requires(triggerun)
+# is not valid. We can use %post because this particular %triggerun script
+# should fire just after this package is installed.
+Requires(post): systemd-sysv
+
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: openssl-devel, bzip2-devel, elfutils-devel
BuildRequires: libselinux-devel, elfutils-libelf-devel, rpm-devel
@@ -55,6 +63,7 @@ BuildRequires: mysql-devel
BuildRequires: net-tools
# for make test
BuildRequires: perl(TAP::Harness)
+BuildRequires: systemd-units
%ifnarch s390 s390x
BuildRequires: lm_sensors-devel >= 3
%endif
@@ -174,6 +183,7 @@ Net-SNMP toolkit library.
#%patch6 -p1 -b .perl-linking
%patch7 -p1
%patch8 -p1 -b .mysql
+%patch9 -p1 -b .systemd
%ifarch sparc64
# disable failing test - see https://bugzilla.redhat.com/show_bug.cgi?id=680697
@@ -218,6 +228,7 @@ MIBS="$MIBS ucd-snmp/lmsensorsMib"
--with-transports="DTLSUDP TLSTCP" \
--with-security-modules=tsm \
--with-mysql \
+ --with-systemd \
--with-sys-contact="root at localhost" <<EOF
EOF
@@ -318,8 +329,11 @@ chmod 644 local/passtest local/ipf-mod.pl
install -m 755 -d $RPM_BUILD_ROOT/usr/include/net-snmp/agent/util_funcs
install -m 644 agent/mibgroup/util_funcs/*.h $RPM_BUILD_ROOT/usr/include/net-snmp/agent/util_funcs
-mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/tmpfiles.d/
+# systemd stuff
+install -m 755 -d $RPM_BUILD_ROOT/%{_sysconfdir}/tmpfiles.d/
install -m 644 %SOURCE9 $RPM_BUILD_ROOT/%{_sysconfdir}/tmpfiles.d/net-snmp.conf
+install -m 755 -d $RPM_BUILD_ROOT/%{_unitdir}
+install -m 644 %SOURCE10 %SOURCE11 $RPM_BUILD_ROOT/%{_unitdir}/
%check
%if %{netsnmp_check}
@@ -330,29 +344,41 @@ LD_LIBRARY_PATH=${RPM_BUILD_ROOT}/%{_libdir} make test
%post
-/sbin/chkconfig --add snmpd
-/sbin/chkconfig --add snmptrapd
-
-# move local state files from /var/net-snmp to new location when updating the package
-# (Fedora 11: /var/net-snmp, Fedora 12: /var/lib/net-snmp)
-/bin/mv %{_localstatedir}/net-snmp/* %{_localstatedir}/lib/net-snmp/ &>/dev/null || :
-
+if [ $1 -eq 1 ] ; then
+ # Initial installation
+ /bin/systemctl daemon-reload >/dev/null 2>&1 || :
+fi
%preun
if [ $1 = 0 ]; then
- service snmpd stop >/dev/null 2>&1
- /sbin/chkconfig --del snmpd
- service snmptrapd stop >/dev/null 2>&1
- /sbin/chkconfig --del snmptrapd
+ /bin/systemctl --no-reload disable snmpd.service > /dev/null 2>&1 || :
+ /bin/systemctl --no-reload disable snmptrapd.service > /dev/null 2>&1 || :
+ /bin/systemctl stop snmpd.service > /dev/null 2>&1 || :
+ /bin/systemctl stop snmptrapd.service > /dev/null 2>&1 || :
fi
%postun
if [ "$1" -ge "1" ]; then
- service snmpd condrestart >/dev/null 2>&1 || :
- service snmptrapd condrestart >/dev/null 2>&1 || :
+ /bin/systemctl try-restart snmpd.service >/dev/null 2>&1 || :
+ /bin/systemctl try-restart snmptrapd.service >/dev/null 2>&1 || :
fi
+
+%triggerun -- net-snmp < 1:5.7-5
+# Convert SysV -> systemd.
+# Save the current service runlevel info,
+# User must manually run systemd-sysv-convert --apply snmpd
+# to migrate them to systemd targets
+echo "hello world" >> /tmp/snmp
+echo date >>/tmp/snmp
+/usr/bin/systemd-sysv-convert --save snmpd >/dev/null 2>&1 ||:
+/usr/bin/systemd-sysv-convert --save snmptrapd >/dev/null 2>&1 ||:
+/sbin/chkconfig --del snmpd >/dev/null 2>&1 || :
+/sbin/chkconfig --del snmptrapd >/dev/null 2>&1 || :
+/bin/systemctl try-restart snmpd.service >/dev/null 2>&1 || :
+/bin/systemctl try-restart snmptrapd.service >/dev/null 2>&1 || :
+
%post libs -p /sbin/ldconfig
%postun libs -p /sbin/ldconfig
@@ -386,6 +412,7 @@ rm -rf ${RPM_BUILD_ROOT}
%dir %{_localstatedir}/lib/net-snmp
%dir %{_localstatedir}/run/net-snmp
%config(noreplace) %{_sysconfdir}/tmpfiles.d/net-snmp.conf
+%{_unitdir}/snmp*
%files utils
%defattr(-,root,root,-)
@@ -444,6 +471,9 @@ rm -rf ${RPM_BUILD_ROOT}
%{_datadir}/snmp/mibs/*
%changelog
+* Tue Aug 9 2011 Jan Safranek <jsafrane at redhat.com> - 1:5.7-5
+- integrated with systemd (#718183)
+
* Thu Jul 21 2011 Petr Sabata <contyk at redhat.com> - 1:5.7-4
- Perl mass rebuild
diff --git a/net-snmpd.sysconfig b/net-snmpd.sysconfig
index 8b1791f..fa38f79 100644
--- a/net-snmpd.sysconfig
+++ b/net-snmpd.sysconfig
@@ -1,2 +1,6 @@
+# WARNING:
+# This file is only for compatibility with SysV init scripts if someone uses
+# them! systemd does not use this file when starting snmpd!
+#
# snmpd command line options
# OPTIONS="-LS0-6d -Lf /dev/null -p /var/run/snmpd.pid"
diff --git a/net-snmptrapd.sysconfig b/net-snmptrapd.sysconfig
index 09a9012..562203f 100644
--- a/net-snmptrapd.sysconfig
+++ b/net-snmptrapd.sysconfig
@@ -1,2 +1,6 @@
+# WARNING:
+# This file is only for compatibility with SysV init scripts if someone uses
+# them! systemd does not use this file when starting snmpd!
+#
# snmptrapd command line options
# OPTIONS="-Lsd -p /var/run/snmptrapd.pid"
diff --git a/snmpd.service b/snmpd.service
new file mode 100644
index 0000000..3af5ea7
--- /dev/null
+++ b/snmpd.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Simple Network Management Protocol (SNMP) Daemon.
+After=syslog.target network.target
+
+[Service]
+Type=notify
+ExecStart=/usr/sbin/snmpd -LS0-6d -f
+ExecReload=/bin/kill -HUP $MAINPID
+
+[Install]
+WantedBy=multi-user.target
diff --git a/snmptrapd.service b/snmptrapd.service
new file mode 100644
index 0000000..e4689a6
--- /dev/null
+++ b/snmptrapd.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Simple Network Management Protocol (SNMP) Trap Daemon.
+After=syslog.target network.target
+
+[Service]
+Type=notify
+ExecStart=/usr/sbin/snmptrapd -Lsd -f
+ExecReload=/bin/kill -HUP $MAINPID
+
+[Install]
+WantedBy=multi-user.target
More information about the scm-commits
mailing list