diff --git a/conf.ptpd.init b/conf.ptpd.init new file mode 100644 index 0000000..8fa694e --- /dev/null +++ b/conf.ptpd.init @@ -0,0 +1,188 @@ +#!/bin/sh +# +# SuSE system startup script for service/daemon ptpd +# Copyright (C) 1995--2007 SUSE / Novell Inc. +# +# This library is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or (at +# your option) any later version. +# +# This library is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, +# USA. +# +# /etc/init.d/ptpd +# and its symbolic link +# /usr/sbin/rcptpd +# +# LSB compatible service control script; see http://www.linuxbase.org/spec/ +# Please send feedback to http://www.suse.de/feedback/ +# +# chkconfig: 345 71 29 +# description: Precision Time Protocol as defined by IEEE 1588 +# +### BEGIN INIT INFO +# Provides: ptpd +# Required-Start: $remote_fs $syslog $network +# Should-Start: $time +# Required-Stop: $remote_fs $syslog $network +# Should-Stop: $time +# Default-Start: 3 4 5 +# Default-Stop: 0 1 2 6 +# Short-Description: Precision Time Protocol as defined by IEEE 1588 +# Description: PTP is designed to provide very precise +# time coordination of LAN connected computers. +### END INIT INFO +# + +# Check for missing binaries (stale symlinks should not happen) +# Note: Special treatment of stop for LSB conformance +PTPD_BIN=/usr/sbin/ptpd +test -x $PTPD_BIN || { echo "$PTPD_BIN not installed"; + if [ "$1" = "stop" ]; then exit 0; + else exit 5; fi; } + +# Check for existence of needed config file and read it +PTPD_CONFIG=/etc/sysconfig/ptpd +test -r $PTPD_CONFIG || { echo "$PTPD_CONFIG not existing"; + if [ "$1" = "stop" ]; then exit 0; + else exit 6; fi; } + +# Read config +. $PTPD_CONFIG + +# Shell functions sourced from /etc/rc.status: +# rc_check check and set local and overall rc status +# rc_status check and set local and overall rc status +# rc_status -v be verbose in local rc status and clear it afterwards +# rc_status -v -r ditto and clear both the local and overall rc status +# rc_status -s display "skipped" and exit with status 3 +# rc_status -u display "unused" and exit with status 3 +# rc_failed set local and overall rc status to failed +# rc_failed set local and overall rc status to +# rc_reset clear both the local and overall rc status +# rc_exit exit appropriate to overall rc status +# rc_active checks whether a service is activated by symlinks +. /etc/rc.status + +# Reset status of this service +rc_reset + +# Return values acc. 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 - user had insufficient privileges +# 5 - program is not installed +# 6 - program is not configured +# 7 - program is not running +# 8--199 - reserved (8--99 LSB, 100--149 distrib, 150--199 appl) +# +# Note that starting an already running service, stopping +# or restarting a not-running service as well as the restart +# with force-reload (in case signaling is not supported) are +# considered a success. + +case "$1" in + start) + echo -n "Starting ptpd " + ## Start daemon with startproc(8). If this fails + ## the return value is set appropriately by startproc. + /sbin/startproc $PTPD_BIN $PTPD_OPTIONS + + # Remember status and be verbose + rc_status -v + ;; + stop) + echo -n "Shutting down ptpd " + ## Stop daemon with killproc(8) and if this fails + ## killproc sets the return value according to LSB. + + /sbin/killproc -TERM $PTPD_BIN + + # Remember status and be verbose + rc_status -v + ;; + try-restart|condrestart) + ## Do a restart only if the service was active before. + ## Note: try-restart is now part of LSB (as of 1.9). + ## RH has a similar command named condrestart. + if test "$1" = "condrestart"; then + echo "${attn} Use try-restart ${done}(LSB)${attn} rather than condrestart ${warn}(RH)${norm}" + fi + $0 status + if test $? = 0; then + $0 restart + else + rc_reset # Not running is not a failure. + fi + # Remember status and be quiet + rc_status + ;; + restart) + ## Stop the service and regardless of whether it was + ## running or not, start it again. + $0 stop + $0 start + + # Remember status and be quiet + rc_status + ;; + force-reload) + ## Signal the daemon to reload its config. Most daemons + ## do this on signal 1 (SIGHUP). + ## If it does not support it, restart the service if it + ## is running. + + echo -n "Reload service ptpd " + $0 try-restart + rc_status + ;; + reload) + ## Like force-reload, but if daemon does not support + ## signaling, do nothing (!) + + ## Otherwise if it does not support reload: + rc_failed 3 + rc_status -v + ;; + status) + echo -n "Checking for service ptpd " + ## Check status with checkproc(8), if process is running + ## checkproc will return with exit status 0. + + # Return value is slightly different for the status command: + # 0 - service up and running + # 1 - service dead, but /var/run/ pid file exists + # 2 - service dead, but /var/lock/ lock file exists + # 3 - service not running (unused) + # 4 - service status unknown :-( + # 5--199 reserved (5--99 LSB, 100--149 distro, 150--199 appl.) + + # NOTE: checkproc returns LSB compliant status values. + /sbin/checkproc $PTPD_BIN + # NOTE: rc_status knows that we called this init script with + # "status" option and adapts its messages accordingly. + rc_status -v + ;; + probe) + ## Optional: Probe for the necessity of a reload, print out the + ## argument to this init script which is required for a reload. + ## Note: probe is not (yet) part of LSB (as of 1.9) + + $0 reload + ;; + *) + echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload|probe}" + exit 1 + ;; +esac +rc_exit diff --git a/conf.sysconfig.ptpd b/conf.sysconfig.ptpd new file mode 100644 index 0000000..01e35c1 --- /dev/null +++ b/conf.sysconfig.ptpd @@ -0,0 +1,22 @@ +## Path: Network/PTPD +## Description: Precision Time Protocol (PTP) daemon options +## Type: string +## Default: AUTO-2 +## ServiceRestart: ptpd +# +## Type: string +## Default: "" +# +# Additional arguments when starting ptpd. The most important ones would be +# -x do not reset the clock if off by more than one second +# -t do not adjust the system clock +# +# -g run as slave only +# -p make this a preferred clock +# +# -b NAME bind PTP to network interface NAME +# +# -n NAME specify PTP subdomain name (not related to IP or DNS) +# -a NUMBER,NUMBER specify clock servo P and I attenuations +# -w NUMBER specify one way delay filter stiffness +PTPD_OPTIONS="" diff --git a/ptpd.changes b/ptpd.changes index 4710a75..9f1022b 100644 --- a/ptpd.changes +++ b/ptpd.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Wed Nov 7 05:28:44 CET 2007 - dbahi@suse.de + +- cleaned up init script and install process + ------------------------------------------------------------------- Fri Nov 2 14:53:04 CET 2007 - dbahi@suse.de diff --git a/ptpd.spec b/ptpd.spec index ad031e3..9e98280 100644 --- a/ptpd.spec +++ b/ptpd.spec @@ -13,11 +13,12 @@ Name: ptpd Summary: Implements the Precision Time protocol as defined by IEEE 1588 standard Version: 1 -Release: 2 +Release: 4 License: BSD 3-Clause Group: System/Daemons Source0: %{name}_%{version}rc1.tar.bz2 -Patch0: system_v_init.patch +Source1: conf.ptpd.init +Source2: conf.sysconfig.ptpd Patch1: append_to_cflags.patch Url: http://ptpd.sourceforge.net/ BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -49,7 +50,6 @@ Authors: %prep %setup -q -n ptpd -%patch0 -p1 %patch1 %build @@ -57,13 +57,24 @@ cd src CFLAGS="$RPM_OPT_FLAGS" make %install -install -m 755 -D src/ptpd ${RPM_BUILD_ROOT}/%{_sbindir}/ptpd -install -d ${RPM_BUILD_ROOT}/%{_initrddir} -install -m 755 etc/init.d/ptpd ${RPM_BUILD_ROOT}/%{_initrddir}/ptpd -install -d ${RPM_BUILD_ROOT}/var/adm/fillup-templates -install -m 644 etc/sysconfig/ptpd ${RPM_BUILD_ROOT}/var/adm/fillup-templates/sysconfig.ptpd -install -D README ${RPM_BUILD_ROOT}/%{_defaultdocdir}/%{name}/README -cp -r COPYRIGHT doc RELEASE_NOTES tools ${RPM_BUILD_ROOT}/%{_defaultdocdir}/%{name}/. +mkdir -p $RPM_BUILD_ROOT%{_sbindir} +mkdir -p $RPM_BUILD_ROOT%{_initrddir} +mkdir -p ${RPM_BUILD_ROOT}/var/adm/fillup-templates +mkdir -p ${RPM_BUILD_ROOT}%{_defaultdocdir}/%{name} +install -m 755 src/ptpd $RPM_BUILD_ROOT%{_sbindir}/ptpd +# +# boot scripts +# +install -m 755 %{S:1} $RPM_BUILD_ROOT%{_initrddir}/ptpd +ln -s ../..%{_initrddir}/ptpd $RPM_BUILD_ROOT%{_sbindir}/rcptpd +# +# configuration +# +install -m 644 %{S:2} ${RPM_BUILD_ROOT}/var/adm/fillup-templates/sysconfig.ptpd +# +# documentation +# +cp -r README COPYRIGHT doc RELEASE_NOTES tools ${RPM_BUILD_ROOT}/%{_defaultdocdir}/%{name}/. %clean rm -rf ${RPM_BUILD_ROOT} @@ -75,9 +86,18 @@ rm -rf ${RPM_BUILD_ROOT} /var/adm/fillup-templates/* %{_defaultdocdir}/%{name} +%preun +%{stop_on_removal} ptpd + %post %{fillup_only -n ptpd} + +%postun +%restart_on_update ptpd +%{insserv_cleanup} %changelog +* Wed Nov 07 2007 - dbahi@suse.de +- cleaned up init script and install process * Fri Nov 02 2007 - dbahi@suse.de - patch makefile to allow env CFLAGS - adjusted sysconfig to use %%fill_only diff --git a/system_v_init.patch b/system_v_init.patch deleted file mode 100644 index bbd420f..0000000 --- a/system_v_init.patch +++ /dev/null @@ -1,218 +0,0 @@ -diff -Naurp ptpd.orig/etc/init.d/ptpd ptpd/etc/init.d/ptpd ---- ptpd.orig/etc/init.d/ptpd 1970-01-01 01:00:00.000000000 +0100 -+++ ptpd/etc/init.d/ptpd 2007-11-02 06:34:14.000000000 +0100 -@@ -0,0 +1,188 @@ -+#!/bin/sh -+# -+# SuSE system startup script for service/daemon ptpd -+# Copyright (C) 1995--2007 SUSE / Novell Inc. -+# -+# This library is free software; you can redistribute it and/or modify it -+# under the terms of the GNU Lesser General Public License as published by -+# the Free Software Foundation; either version 2.1 of the License, or (at -+# your option) any later version. -+# -+# This library is distributed in the hope that it will be useful, but -+# WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+# Lesser General Public License for more details. -+# -+# You should have received a copy of the GNU Lesser General Public -+# License along with this library; if not, write to the Free Software -+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, -+# USA. -+# -+# /etc/init.d/ptpd -+# and its symbolic link -+# /(usr/)sbin/ptpd -+# -+# LSB compatible service control script; see http://www.linuxbase.org/spec/ -+# Please send feedback to http://www.suse.de/feedback/ -+# -+# chkconfig: 345 71 29 -+# description: Precision Time Protocol as defined by IEEE 1588 -+# -+### BEGIN INIT INFO -+# Provides: ptpd -+# Required-Start: $syslog $network -+# Should-Start: $time -+# Required-Stop: $syslog $network -+# Should-Stop: $time -+# Default-Start: 3 4 5 -+# Default-Stop: 0 1 2 6 -+# Short-Description: Precision Time Protocol as defined by IEEE 1588 -+# Description: PTP is designed to provide very precise -+# time coordination of LAN connected computers. -+### END INIT INFO -+# -+ -+# Check for missing binaries (stale symlinks should not happen) -+# Note: Special treatment of stop for LSB conformance -+PTPD_BIN=/usr/sbin/ptpd -+test -x $PTPD_BIN || { echo "$PTPD_BIN not installed"; -+ if [ "$1" = "stop" ]; then exit 0; -+ else exit 5; fi; } -+ -+# Check for existence of needed config file and read it -+PTPD_CONFIG=/etc/sysconfig/ptpd -+test -r $PTPD_CONFIG || { echo "$PTPD_CONFIG not existing"; -+ if [ "$1" = "stop" ]; then exit 0; -+ else exit 6; fi; } -+ -+# Read config -+. $PTPD_CONFIG -+ -+# Shell functions sourced from /etc/rc.status: -+# rc_check check and set local and overall rc status -+# rc_status check and set local and overall rc status -+# rc_status -v be verbose in local rc status and clear it afterwards -+# rc_status -v -r ditto and clear both the local and overall rc status -+# rc_status -s display "skipped" and exit with status 3 -+# rc_status -u display "unused" and exit with status 3 -+# rc_failed set local and overall rc status to failed -+# rc_failed set local and overall rc status to -+# rc_reset clear both the local and overall rc status -+# rc_exit exit appropriate to overall rc status -+# rc_active checks whether a service is activated by symlinks -+. /etc/rc.status -+ -+# Reset status of this service -+rc_reset -+ -+# Return values acc. 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 - user had insufficient privileges -+# 5 - program is not installed -+# 6 - program is not configured -+# 7 - program is not running -+# 8--199 - reserved (8--99 LSB, 100--149 distrib, 150--199 appl) -+# -+# Note that starting an already running service, stopping -+# or restarting a not-running service as well as the restart -+# with force-reload (in case signaling is not supported) are -+# considered a success. -+ -+case "$1" in -+ start) -+ echo -n "Starting ptpd " -+ ## Start daemon with startproc(8). If this fails -+ ## the return value is set appropriately by startproc. -+ /sbin/startproc $PTPD_BIN $PTPD_OPTIONS -+ -+ # Remember status and be verbose -+ rc_status -v -+ ;; -+ stop) -+ echo -n "Shutting down ptpd " -+ ## Stop daemon with killproc(8) and if this fails -+ ## killproc sets the return value according to LSB. -+ -+ /sbin/killproc -TERM $PTPD_BIN -+ -+ # Remember status and be verbose -+ rc_status -v -+ ;; -+ try-restart|condrestart) -+ ## Do a restart only if the service was active before. -+ ## Note: try-restart is now part of LSB (as of 1.9). -+ ## RH has a similar command named condrestart. -+ if test "$1" = "condrestart"; then -+ echo "${attn} Use try-restart ${done}(LSB)${attn} rather than condrestart ${warn}(RH)${norm}" -+ fi -+ $0 status -+ if test $? = 0; then -+ $0 restart -+ else -+ rc_reset # Not running is not a failure. -+ fi -+ # Remember status and be quiet -+ rc_status -+ ;; -+ restart) -+ ## Stop the service and regardless of whether it was -+ ## running or not, start it again. -+ $0 stop -+ $0 start -+ -+ # Remember status and be quiet -+ rc_status -+ ;; -+ force-reload) -+ ## Signal the daemon to reload its config. Most daemons -+ ## do this on signal 1 (SIGHUP). -+ ## If it does not support it, restart the service if it -+ ## is running. -+ -+ echo -n "Reload service ptpd " -+ $0 try-restart -+ rc_status -+ ;; -+ reload) -+ ## Like force-reload, but if daemon does not support -+ ## signaling, do nothing (!) -+ -+ ## Otherwise if it does not support reload: -+ rc_failed 3 -+ rc_status -v -+ ;; -+ status) -+ echo -n "Checking for service ptpd " -+ ## Check status with checkproc(8), if process is running -+ ## checkproc will return with exit status 0. -+ -+ # Return value is slightly different for the status command: -+ # 0 - service up and running -+ # 1 - service dead, but /var/run/ pid file exists -+ # 2 - service dead, but /var/lock/ lock file exists -+ # 3 - service not running (unused) -+ # 4 - service status unknown :-( -+ # 5--199 reserved (5--99 LSB, 100--149 distro, 150--199 appl.) -+ -+ # NOTE: checkproc returns LSB compliant status values. -+ /sbin/checkproc $PTPD_BIN -+ # NOTE: rc_status knows that we called this init script with -+ # "status" option and adapts its messages accordingly. -+ rc_status -v -+ ;; -+ probe) -+ ## Optional: Probe for the necessity of a reload, print out the -+ ## argument to this init script which is required for a reload. -+ ## Note: probe is not (yet) part of LSB (as of 1.9) -+ -+ $0 reload -+ ;; -+ *) -+ echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload|probe}" -+ exit 1 -+ ;; -+esac -+rc_exit -diff -Naurp ptpd.orig/etc/sysconfig/ptpd ptpd/etc/sysconfig/ptpd ---- ptpd.orig/etc/sysconfig/ptpd 1970-01-01 01:00:00.000000000 +0100 -+++ ptpd/etc/sysconfig/ptpd 2007-11-02 06:33:57.000000000 +0100 -@@ -0,0 +1,22 @@ -+## Path: Network/PTPD -+## Description: Precision Time Protocol (PTP) daemon options -+## Type: string -+## Default: AUTO-2 -+## ServiceRestart: ptpd -+# -+## Type: string -+## Default: "" -+# -+# Additional arguments when starting ptpd. The most important ones would be -+# -x do not reset the clock if off by more than one second -+# -t do not adjust the system clock -+# -+# -g run as slave only -+# -p make this a preferred clock -+# -+# -b NAME bind PTP to network interface NAME -+# -+# -n NAME specify PTP subdomain name (not related to IP or DNS) -+# -a NUMBER,NUMBER specify clock servo P and I attenuations -+# -w NUMBER specify one way delay filter stiffness -+PTPD_OPTIONS=""