[Buildroot] [PATCH v2 1/1] package/linuxptp: make initscript options configurable

Heiko Thiery heiko.thiery at gmail.com
Fri Mar 6 16:09:52 UTC 2020


Hi all,

Am Fr., 6. März 2020 um 13:43 Uhr schrieb Heiko Thiery <heiko.thiery at gmail.com>:
>
> The "package/busybox/S01sysklogd" is taken as template to change the
> init script of the linuxptp daemon. The init script is split two parts
> because there are 2 daemons (ptp4l and phc2sys).
>
> Let the user supply its own options in /etc/default/ptp4l and
> /etc/default/phc2sys.
>
> This patch also fixes an issue with the creation of the pid file that is
> needed to properly stop the daemon again.
>
> Signed-off-by: Michael Walle <michael at walle.cc>
> Signed-off-by: Heiko Thiery <heiko.thiery at gmail.com>
> ---
>  package/linuxptp/S65linuxptp | 46 ----------------------------
>  package/linuxptp/S65ptp4l    | 59 ++++++++++++++++++++++++++++++++++++
>  package/linuxptp/S66phc2sys  | 59 ++++++++++++++++++++++++++++++++++++
>  3 files changed, 118 insertions(+), 46 deletions(-)
>  delete mode 100644 package/linuxptp/S65linuxptp
>  create mode 100644 package/linuxptp/S65ptp4l
>  create mode 100644 package/linuxptp/S66phc2sys
>
> diff --git a/package/linuxptp/S65linuxptp b/package/linuxptp/S65linuxptp
> deleted file mode 100644
> index 46b8921fdd..0000000000
> --- a/package/linuxptp/S65linuxptp
> +++ /dev/null
> @@ -1,46 +0,0 @@
> -#!/bin/sh
> -#
> -# Start linuxptp
> -#
> -
> -start() {
> -       printf "Starting linuxptp daemon: "
> -       start-stop-daemon -S -b -q -p /var/run/linuxptp-ptp4l.pid \
> -               -x /usr/sbin/ptp4l -- -f /etc/linuxptp.cfg
> -       [ $? = 0 ] && echo "OK" || echo "FAIL"
> -
> -       printf "Starting linuxptp system clock synchronization: "
> -       start-stop-daemon -S -b -q -p /var/run/linuxptp-phc2sys.pid \
> -               -x /usr/sbin/phc2sys -- -s eth0 -c CLOCK_REALTIME -w -S 1.0
> -       [ $? = 0 ] && echo "OK" || echo "FAIL"
> -}
> -
> -stop() {
> -       printf "Stopping linuxptp system clock synchronization: "
> -       start-stop-daemon -K -q -p /var/run/linuxptp-phc2sys.pid \
> -               -x /usr/sbin/phc2sys
> -       echo "OK"
> -
> -       printf "Stopping linuxptp daemon: "
> -       start-stop-daemon -K -q -p /var/run/linuxptp-ptp4l.pid \
> -               -x /usr/sbin/ptp4l
> -       echo "OK"
> -}
> -
> -case "$1" in
> -  start)
> -       start
> -       ;;
> -  stop)
> -       stop
> -       ;;
> -  restart|reload)
> -       stop
> -       start
> -       ;;
> -  *)
> -       echo "Usage: $0 {start|stop|restart}"
> -       exit 1
> -esac
> -
> -exit $?
> diff --git a/package/linuxptp/S65ptp4l b/package/linuxptp/S65ptp4l
> new file mode 100644
> index 0000000000..630c5e803b
> --- /dev/null
> +++ b/package/linuxptp/S65ptp4l
> @@ -0,0 +1,59 @@
> +#!/bin/sh
> +#
> +# Start linuxptp
> +#
> +
> +DAEMON="ptp4l"
> +
> +PIDFILE="/var/run/$DAEMON.pid"
> +
> +PTP4L_ARGS="-f /etc/linuxptp.cfg"
> +
> +# shellcheck source=/dev/null
> +[ -r "/etc/default/ptp4l" ] && . "/etc/default/ptp4l"
> +
> +# ptp4l does not create a pidfile, so pass "-n" in the command line
> +# and use "-m" to instruct start-stop-daemon to create one.
> +start() {
> +       printf "Starting linuxptp daemon: "
> +       start-stop-daemon -S -b -q -m -p $PIDFILE \
> +               -x /usr/sbin/$DAEMON -- $PTP4L_ARGS
> +       status=$?
> +       if [ "$status" -eq 0 ]; then
> +               echo "OK"
> +       else
> +               echo "FAIL"
> +       fi
> +       return $status
> +}
> +
> +stop() {
> +       printf "Stopping linuxptp daemon: "
> +       start-stop-daemon -K -q -p $PIDFILE
> +       status=$?
> +       if [ "$status" -eq 0 ]; then
> +               rm -f "$PIDFILE"
> +               echo "OK"
> +       else
> +               echo "FAIL"
> +       fi
> +       return $status
> +}
> +
> +case "$1" in
> +  start)
> +       start
> +       ;;
> +  stop)
> +       stop
> +       ;;
> +  restart|reload)
> +       stop
> +       start
> +       ;;
> +  *)
> +       echo "Usage: $0 {start|stop|restart}"
> +       exit 1
> +esac
> +
> +exit $?
> diff --git a/package/linuxptp/S66phc2sys b/package/linuxptp/S66phc2sys
> new file mode 100644
> index 0000000000..5d9e962b07
> --- /dev/null
> +++ b/package/linuxptp/S66phc2sys
> @@ -0,0 +1,59 @@
> +#!/bin/sh
> +#
> +# Start linuxptp
> +#
> +
> +DAEMON="phc2sys"
> +
> +PIDFILE="/var/run/$DAEMON.pid"
> +
> +PHC2SYS_ARGS="-s eth0 -c CLOCK_REALTIME -w -S 1.0"
> +
> +# shellcheck source=/dev/null
> +[ -r "/etc/default/phc2sys" ] && . "/etc/default/phc2sys"
> +
> +# phc2sys does not create a pidfile, so pass "-n" in the command line
> +# and use "-m" to instruct start-stop-daemon to create one.
> +start() {
> +       printf "Starting linuxptp system clock synchronization: "
> +       start-stop-daemon -S -b -q -m -p $PIDFILE \
> +               -x /usr/sbin/$DAEMON -- $PHC2SYS_ARGS
> +       status=$?
> +       if [ "$status" -eq 0 ]; then
> +               echo "OK"
> +       else
> +               echo "FAIL"
> +       fi
> +       return $status
> +}
> +
> +stop() {
> +       printf "Stopping linuxptp system clock synchronization: "
> +       start-stop-daemon -K -q -p $PIDFILE
> +       status=$?
> +       if [ "$status" -eq 0 ]; then
> +               rm -f "$PIDFILE"
> +               echo "OK"
> +       else
> +               echo "FAIL"
> +       fi
> +       return $status
> +}
> +
> +case "$1" in
> +  start)
> +       start
> +       ;;
> +  stop)
> +       stop
> +       ;;
> +  restart|reload)
> +       stop
> +       start
> +       ;;
> +  *)
> +       echo "Usage: $0 {start|stop|restart}"
> +       exit 1
> +esac
> +
> +exit $?
> --
> 2.20.1
>

just realized that I forgot to update the makefile for the changed
filename (S65linuxptp -> S65ptp4l) and the new one (S66phc2sys) ;-/ I
will prepare a new version of this patch but I will wait for some
review comments.

By the way I think we should than also rename the systemd service
script to have the same names like the sysv one.

--
Heiko



More information about the buildroot mailing list