[gmediaserver] Systemd service

Karol Trzcionka karlik at fedoraproject.org
Tue Mar 13 19:48:50 UTC 2012


commit 07caa332a45fa8b9cf1ae9092a39a9eea08fa3fd
Author: Karol Trzcionka <karlik at fedoraproject.org>
Date:   Tue Mar 13 20:48:33 2012 +0100

    Systemd service

 gmediaserver.spec |   49 ++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 36 insertions(+), 13 deletions(-)
---
diff --git a/gmediaserver.spec b/gmediaserver.spec
index bd73af3..f2f88dc 100644
--- a/gmediaserver.spec
+++ b/gmediaserver.spec
@@ -1,7 +1,7 @@
 %define mediadir /var/lib/gmediaserver
 Name:           gmediaserver
 Version:        0.13.0
-Release:        9%{?dist}
+Release:        10%{?dist}
 Summary:        UPnP compatible media server for the GNU system
 
 Group:          Applications/Multimedia
@@ -11,15 +11,22 @@ Source0:        http://download.savannah.gnu.org/releases/gmediaserver/%{name}-%
 Source1:        %{name}.init
 Source2:        %{name}.conf
 Source3:        %{name}.logrotate
+Source4:        %{name}.service
 Patch0:         %{name}-infofix.patch
-Patch1:		gmediaserver-0.13.0-compilefix.patch
+Patch1:         %{name}-%{version}-compilefix.patch
 
 BuildRequires:  libupnp-devel gettext taglib-devel flex byacc id3lib-devel e2fsprogs-devel pkgconfig
 BuildRequires:  file-devel
+BuildRequires:  systemd-units
 Requires(post): /sbin/install-info /sbin/chkconfig
 Requires(preun): /sbin/install-info /sbin/chkconfig
-Requires: logrotate initscripts
-Requires(pre,postun): shadow-utils
+Requires: logrotate
+Requires(pre): shadow-utils
+Requires(postun): shadow-utils
+Requires(post): systemd-units
+Requires(preun): systemd-units
+Requires(postun): systemd-units
+Requires(post): systemd-sysv
 
 %description
 GMediaServer is a UPnP compatible media server for the GNU system. It is part
@@ -35,7 +42,6 @@ the network.
 %patch0 -p0 -b .infofix
 %patch1 -p1 -b .fix
 
-
 %build
 %configure  --disable-rpath --disable-static
 make %{?_smp_mflags}
@@ -55,6 +61,8 @@ install -D -m644 -p %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/%{name}
 
 install -D -m644 -p %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/%{name}
 
+install -D -m644 -p %{SOURCE4} $RPM_BUILD_ROOT%{_unitdir}/%{name}.service
+
 make install DESTDIR=$RPM_BUILD_ROOT
 
 mkdir -p $RPM_BUILD_ROOT%{_sbindir}
@@ -63,15 +71,25 @@ mv $RPM_BUILD_ROOT%{_bindir}/%{name} $RPM_BUILD_ROOT%{_sbindir}/%{name}
 %find_lang %{name}
 rm -f $RPM_BUILD_ROOT%{_infodir}/dir
 
+%triggerun -- %{name} < 0.13.0-10
+# Save the current service runlevel info
+# User must manually run systemd-sysv-convert --apply gmediaserver
+# to migrate them to systemd targets
+/usr/bin/systemd-sysv-convert --save %{name} >/dev/null 2>&1 ||:
+
+# Run these because the SysV package being removed won't do them
+/sbin/chkconfig --del %{name} >/dev/null 2>&1 || :
+/bin/systemctl try-restart %{name}.service >/dev/null 2>&1 || :
+
+
 %post
 /sbin/install-info %{_infodir}/%{name}.info.gz %{_infodir}/dir || :
-/sbin/chkconfig --add %{name} || :
+if [ $1 -eq 1 ] ; then 
+    # Initial installation 
+    /bin/systemctl daemon-reload >/dev/null 2>&1 || :
+fi
 
 %pre
-#groupadd -f -r gmediaserver
-#id gmediaserver >/dev/null 2>&1 || \
-#useradd -r -g gmediaserver -d %{mediadir} -s /sbin/nologin \
-#    -c "gmediaserver" gmediaserver
 getent group %{name} >/dev/null || groupadd -r %{name}
 getent passwd %{name} >/dev/null || \
 useradd -r -g %{name} -d %{mediadir} -s /sbin/nologin \
@@ -81,14 +99,15 @@ exit 0
 %preun
 if [ $1 = 0 ]; then
     /sbin/install-info --delete %{_infodir}/%{name}.info.gz %{_infodir}/dir || :
-    /sbin/service %{name} stop > /dev/null 2>&1 || :
-    /sbin/chkconfig --del %{name} || :
+    /bin/systemctl --no-reload disable %{name}.service > /dev/null 2>&1 || :
+    /bin/systemctl stop %{name}.service > /dev/null 2>&1 || :
 fi
 
 %postun
+/bin/systemctl daemon-reload >/dev/null 2>&1 || :
 if [ "$1" -ge "1" ] ; then
 [ `getent passwd %{name} | cut -d: -f6` !=  %{mediadir} ] && usermod -d %{mediadir} %{name}
-/sbin/service %{name} condrestart >/dev/null 2>&1 || :
+/bin/systemctl try-restart %{name}.service >/dev/null 2>&1 || :
 fi
 
 %files -f %{name}.lang
@@ -98,12 +117,16 @@ fi
 %{_mandir}/man1/%{name}.*
 %config(noreplace) %{_sysconfdir}/sysconfig/%{name}
 %config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
+%config %{_unitdir}/%{name}.service
 %{_initrddir}/%{name}
 %attr(-,%{name},%{name}) %{_localstatedir}/log/%{name}
 %ghost %{_localstatedir}/log/%{name}/%{name}.log
 %attr(-,%{name},%{name}) %{mediadir}
 
 %changelog
+* Tue Mar 13 2012 Karol Trzcionka <karlik at fedoraproject.org> - 0.13.0-10
+- Add native systemd service
+
 * Fri Jan 13 2012 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 0.13.0-9
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
 


More information about the scm-commits mailing list