From d759a1073d19e035fb5f31fb1e38938417b5356a Mon Sep 17 00:00:00 2001 From: Steve Date: Mon, 27 Aug 2012 13:03:56 -0400 Subject: [PATCH] bz #836476 - Provide native systemd service --- tcsd.service | 11 +++ trousers-init.patch | 174 --------------------------------------- trousers-no-werror.patch | 8 +- trousers.spec | 47 ++++++----- 4 files changed, 41 insertions(+), 199 deletions(-) create mode 100644 tcsd.service delete mode 100644 trousers-init.patch diff --git a/tcsd.service b/tcsd.service new file mode 100644 index 0000000..25647fd --- /dev/null +++ b/tcsd.service @@ -0,0 +1,11 @@ +[Unit] +Description=TCG Core Services Daemon +After=syslog.target + +[Service] +Type=forking +ExecStart=/sbin/tcsd + +[Install] +WantedBy=multi-user.target + diff --git a/trousers-init.patch b/trousers-init.patch deleted file mode 100644 index 8597067..0000000 --- a/trousers-init.patch +++ /dev/null @@ -1,174 +0,0 @@ ---- dist/fedora/fedora.initrd.tcsd.orig 2010-05-01 13:16:32.000000000 +0200 -+++ dist/fedora/fedora.initrd.tcsd 2010-05-01 13:16:53.000000000 +0200 -@@ -1,51 +1,46 @@ - #!/bin/bash - # --# Init file for the TrouSerS TCG Core Services daemon -+# tcsd Init script for the TrouSerS TCG Core Services daemon - # - # chkconfig: - 90 10 - # description: TrouSerS server daemon --# --# processname: tcsd --# config: /etc/tcsd.conf --# pidfile: /var/run/tcsd.pid --# --# Return values according to LSB for all commands but status: --# 0 - success --# 1 - generic or unspecified error --# 2 - invalid or excess argument(s) --# 3 - unimplemented feature (e.g. "reload") --# 4 - insufficient privilege --# 5 - program is not installed --# 6 - program is not configured --# 7 - program is not running --# - -+### BEGIN INIT INFO -+# Provides: -+# Required-Start: -+# Required-Stop: -+# Should-Start: -+# Should-Stop: -+# Default-Start: 2 3 4 5 -+# Default-Stop: 0 1 6 -+# Short-Description: Init script for TCSD -+# Description: TrouSerS TCG Core Services daemon -+### END INIT INFO -+ -+exec="/usr/sbin/tcsd" - prog="tcsd" -+config="/etc/tcsd.conf" -+PID_FILE="/var/run/tcsd.pid" -+INSMOD="/sbin/insmod" -+LSMOD="/sbin/lsmod" -+GREP="/bin/grep" - - # source function library - . /etc/rc.d/init.d/functions - -+[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog -+ -+lockfile=/var/lock/subsys/$prog -+ - # Allow anyone to run status --if [ "$1" = "status" ] ; then -- status $prog -+if [ "$1" = "status" -o "$1" = "rh_status" -o "$1" = "rh_status_q" ] ; then -+ $1 $prog - RETVAL=$? - exit $RETVAL - fi - - # Check that we are root ... so non-root users stop here --test $EUID = 0 || exit 4 -- --# pull in sysconfig settings --test -f /etc/sysconfig/tcsd && . /etc/sysconfig/tcsd -- --RETVAL=0 -- --# Some variables to make the below more readable --TCSD=/usr/sbin/tcsd --PID_FILE=/var/run/tcsd.pid --INSMOD=/sbin/insmod --LSMOD=/sbin/lsmod --GREP=/bin/grep -+test $EUID = 0 || exit 4 - - load_drivers() - { -@@ -64,14 +59,15 @@ - - start() - { -- test -x $TCSD || exit 5 -- test -f /etc/tcsd.conf || exit 6 -+ test -x $exec || exit 5 -+ test -f $config || exit 6 - check_drivers || load_drivers || failure - echo -n $"Starting $prog: " -- $TCSD $OPTIONS && success || failure -+ $exec $OPTIONS && success || failure - RETVAL=$? -- [ "$RETVAL" = 0 ] && touch /var/lock/subsys/tcsd - echo -+ [ "$RETVAL" = 0 ] && touch $lockfile -+ return $RETVAL - } - - stop() -@@ -79,32 +75,59 @@ - echo -n $"Stopping $prog: " - killproc $prog - RETVAL=$? -- [ "$RETVAL" = 0 ] && rm -f /var/lock/subsys/tcsd - echo -+ [ "$RETVAL" = 0 ] && rm -f $lockfile -+ return $RETVAL -+} -+ -+restart() { -+ stop -+ start - } - -+reload() { -+ restart -+} -+ -+force_reload() { -+ restart -+} -+ -+rh_status() { -+ # run checks to determine if the service is running or use generic status -+ status $prog -+} -+ -+rh_status_q() { -+ rh_status >/dev/null 2>&1 -+} -+ -+ - case "$1" in - start) -- start -+ rh_status_q && exit 0 -+ $1 - ;; - stop) -- stop -+ rh_status_q || exit 0 -+ $1 - ;; - restart) -- test -f /etc/tcsd.conf || exit 6 -- stop -- start -+ $1 - ;; -- reload|force-reload) -- restart -+ reload) -+ rh_status_q || exit 7 -+ $1 - ;; -+ force-reload) -+ force_reload -+ ;; - condrestart|try-restart) -- if [ -f /var/lock/subsys/tcsd ] ; then -- restart -- fi -+ rh_status_q || exit 0 -+ restart - ;; - *) -- echo $"Usage: $0 {start|stop|restart|reload|force-reload|condrestart|try-restart|status}" -- RETVAL=3 -+ echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" -+ exit 2 - esac --exit $RETVAL -+exit $? diff --git a/trousers-no-werror.patch b/trousers-no-werror.patch index 58d60fb..f8697ab 100644 --- a/trousers-no-werror.patch +++ b/trousers-no-werror.patch @@ -1,7 +1,7 @@ -diff -ur trousers-0.3.6.orig/configure trousers-0.3.6/configure ---- trousers-0.3.6.orig/configure 2011-04-08 09:09:38.000000000 -0400 -+++ trousers-0.3.6/configure 2011-04-08 09:41:49.000000000 -0400 -@@ -14379,7 +14379,7 @@ +diff -ur trousers-0.3.9.orig/configure trousers-0.3.9/configure +--- trousers-0.3.9.orig/configure 2012-05-30 11:16:40.000000000 -0400 ++++ trousers-0.3.9/configure 2012-08-27 12:39:14.432278839 -0400 +@@ -13503,7 +13503,7 @@ if test "x${GCC}" = "xyes"; then diff --git a/trousers.spec b/trousers.spec index 2c743d5..fa5fa9c 100644 --- a/trousers.spec +++ b/trousers.spec @@ -1,22 +1,21 @@ Name: trousers Summary: TCG's Software Stack v1.2 Version: 0.3.9 -Release: 2%{?dist} +Release: 3%{?dist} License: CPL Group: System Environment/Libraries Url: http://trousers.sourceforge.net Source0: http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.gz -# Patch init script to conform to our guidelines -Patch1: trousers-init.patch +Source1: tcsd.service # We have newer compiler which has new warnings -Patch2: trousers-no-werror.patch +Patch1: trousers-no-werror.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: libtool, openssl-devel +BuildRequires: systemd-units Requires(pre): shadow-utils -Requires(post): chkconfig -Requires(preun): chkconfig -Requires(preun): initscripts -Requires(postun): initscripts +Requires(post): systemd-units +Requires(preun): systemd-units +Requires(postun): systemd-units %description TrouSerS is an implementation of the Trusted Computing Group's Software Stack @@ -47,8 +46,7 @@ applications. %prep %setup -q -%patch1 -p0 -%patch2 -p1 +%patch1 -p1 sed -i -e 's|/var/tpm|/var/lib/tpm|g' -e 's|/usr/local/var|/var|g' man/man5/tcsd.conf.5.in man/man8/tcsd.8.in @@ -60,10 +58,10 @@ make -k %{?_smp_mflags} %install rm -rf ${RPM_BUILD_ROOT} mkdir -p ${RPM_BUILD_ROOT}/%{_localstatedir}/lib/tpm -mkdir -p ${RPM_BUILD_ROOT}/%{_initrddir} -cp -p dist/fedora/fedora.initrd.tcsd ${RPM_BUILD_ROOT}/%{_initrddir}/tcsd make install DESTDIR=${RPM_BUILD_ROOT} INSTALL="install -p" rm -f ${RPM_BUILD_ROOT}/%{_libdir}/libtspi.la +mkdir -p $RPM_BUILD_ROOT%{_unitdir} +install -m 0755 %{SOURCE1} $RPM_BUILD_ROOT%{_unitdir}/ %clean rm -rf ${RPM_BUILD_ROOT} @@ -76,19 +74,23 @@ useradd -r -u 59 -g tss -d /dev/null -s /sbin/nologin \ exit 0 %post -/sbin/ldconfig -/sbin/chkconfig --add tcsd +if [ $1 -eq 1 ] ; then + # Initial installation + /bin/systemctl daemon-reload >/dev/null 2>&1 || : +fi %preun -if [ $1 = 0 ]; then - /sbin/service tcsd stop > /dev/null 2>&1 - /sbin/chkconfig --del tcsd +if [ $1 -eq 0 ] ; then + # Package removal, not upgrade + /bin/systemctl --no-reload disable tcsd.service > /dev/null 2>&1 || : + /bin/systemctl stop tcsd.service > /dev/null 2>&1 || : fi %postun -/sbin/ldconfig -if [ $1 -gt 1 ]; then - /sbin/service tcsd condrestart > /dev/null 2>&1 || : +/bin/systemctl daemon-reload >/dev/null 2>&1 || : +if [ $1 -ge 1 ] ; then + # Package upgrade, not uninstall + /bin/systemctl try-restart tcsd.service >/dev/null 2>&1 || : fi %files @@ -100,7 +102,7 @@ fi %config(noreplace) %attr(0600, tss, tss) %{_sysconfdir}/tcsd.conf %doc %{_mandir}/man5/* %doc %{_mandir}/man8/* -%{_initrddir}/tcsd +%attr(755,root,root) %{_unitdir}/tcsd.service %attr(0700, tss, tss) %{_localstatedir}/lib/tpm/ %files devel @@ -118,6 +120,9 @@ fi %{_libdir}/libtddl.a %changelog +* Mon Aug 27 2012 Steve Grubb 0.3.9-3 +- bz #836476 - Provide native systemd service + * Sun Jul 22 2012 Fedora Release Engineering - 0.3.9-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild