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

Carlos Santos unixmania at gmail.com
Thu Mar 12 20:39:59 UTC 2020


On Thu, Mar 12, 2020 at 4:05 PM Heiko Thiery <heiko.thiery at gmail.com> wrote:
>
> 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 ++++++++++++++++++++++++++++++++++++
>  package/linuxptp/linuxptp.mk |  6 ++--
>  4 files changed, 122 insertions(+), 48 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

There is no "-n" argument. Copy/past mistake. :-)

> +# 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..c680879aeb
> --- /dev/null
> +++ b/package/linuxptp/S66phc2sys
> @@ -0,0 +1,59 @@
> +#!/bin/sh
> +#
> +# Start linuxptp
> +#
> +
> +DAEMON="phc2sys"
> +
> +PIDFILE="/var/run/$DAEMON.pid"
> +
> +PHC2SYS_ARGS="-a -r -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

Same here.

> +# 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 $?
> diff --git a/package/linuxptp/linuxptp.mk b/package/linuxptp/linuxptp.mk
> index 97e4af7be7..ba57396f86 100644
> --- a/package/linuxptp/linuxptp.mk
> +++ b/package/linuxptp/linuxptp.mk
> @@ -33,8 +33,10 @@ define LINUXPTP_INSTALL_TARGET_CMDS
>  endef
>
>  define LINUXPTP_INSTALL_INIT_SYSV
> -       $(INSTALL) -m 755 -D $(LINUXPTP_PKGDIR)/S65linuxptp \
> -               $(TARGET_DIR)/etc/init.d/S65linuxptp
> +       $(INSTALL) -m 755 -D $(LINUXPTP_PKGDIR)/S65ptp4l \
> +               $(TARGET_DIR)/etc/init.d/S65ptp4l
> +       $(INSTALL) -m 755 -D $(LINUXPTP_PKGDIR)/S66phc2sys \
> +               $(TARGET_DIR)/etc/init.d/S66phc2sys
>  endef
>
>  define LINUXPTP_INSTALL_INIT_SYSTEMD
> --
> 2.20.1
>

But I'd not worry about those copy/paste errors. They can be fixed in
a subsequent patch or by the submitter when committing this one.

Tested-by: Carlos Santos <unixmania at gmail.com>



More information about the buildroot mailing list