All of lore.kernel.org
 help / color / mirror / Atom feed
* [meta-networking][PATCH] chrony: Versatile implementation of NTP
@ 2016-06-09 19:06 Henry Hallam
  2016-06-09 19:14 ` Henry Hallam
                   ` (2 more replies)
  0 siblings, 3 replies; 13+ messages in thread
From: Henry Hallam @ 2016-06-09 19:06 UTC (permalink / raw)
  To: openembedded-devel

chrony is an alternative to ntpd.  In particular it may be useful
for quasi-realtime embedded systems that have a pulse-per-second
time reference available and need to rapidly synchronize to it after
boot, which appears to be unachievable with ntpd.

Signed-off-by: Henry Hallam <henry@pericynthion.org>
---
 .../recipes-support/chrony/chrony/chrony.conf      | 40 +++++++++++
 .../recipes-support/chrony/chrony/chronyd          | 58 +++++++++++++++
 .../recipes-support/chrony/chrony_2.4.bb           | 83 ++++++++++++++++++++++
 3 files changed, 181 insertions(+)
 create mode 100644 meta-networking/recipes-support/chrony/chrony/chrony.conf
 create mode 100644 meta-networking/recipes-support/chrony/chrony/chronyd
 create mode 100644 meta-networking/recipes-support/chrony/chrony_2.4.bb

diff --git a/meta-networking/recipes-support/chrony/chrony/chrony.conf b/meta-networking/recipes-support/chrony/chrony/chrony.conf
new file mode 100644
index 0000000..435a4f9
--- /dev/null
+++ b/meta-networking/recipes-support/chrony/chrony/chrony.conf
@@ -0,0 +1,40 @@
+# Use public NTP servers from the pool.ntp.org project.
+pool pool.ntp.org iburst
+
+# Use a local timeserver in preference to the pool, if it's reachable.
+#server 192.168.22.22 iburst minpoll 2 prefer
+
+# Sync to pulse-per-second from an onboard GPS.
+# refclock PPS /dev/pps0 poll 0 prefer
+# You'll want to enable CONFIG_PPS and CONFIG_PPS_CLIENT_GPIO in your kernel,
+# and an entry something like this in your device tree:
+#	pps {
+#		compatible = "pps-gpio";
+#		gpios = <&ps7_gpio_0 56 0>;
+#	};
+
+# Record the rate at which the system clock gains/loses time,
+# improving accuracy after reboot
+driftfile /var/lib/chrony.drift
+
+# In first three updates step the system clock instead of slew
+# if the adjustment is larger than 1 second.
+makestep 1.0 3
+
+# Enable kernel synchronization of the real-time clock (RTC).
+#rtcsync
+
+# Allow NTP client access from local network.
+#allow 192.168/16
+
+# Serve time even if not synchronized to any NTP server.
+#local stratum 10
+
+# Specify file containing keys for NTP authentication.
+#keyfile /etc/chrony.keys
+
+# Specify directory for log files.
+logdir /var/log/chrony
+
+# Select which information is logged.
+#log measurements statistics tracking
diff --git a/meta-networking/recipes-support/chrony/chrony/chronyd b/meta-networking/recipes-support/chrony/chrony/chronyd
new file mode 100644
index 0000000..04f1b68
--- /dev/null
+++ b/meta-networking/recipes-support/chrony/chrony/chronyd
@@ -0,0 +1,58 @@
+#! /bin/sh
+
+# System V init script for chrony
+# Adapted from the script already in meta-networking for ntpd
+
+### BEGIN INIT INFO
+# Provides:        chrony
+# Required-Start:  $network $remote_fs $syslog
+# Required-Stop:   $network $remote_fs $syslog
+# Default-Start:   2 3 4 5
+# Default-Stop:
+# Short-Description: Start chrony time daemon
+### END INIT INFO
+
+PATH=/sbin:/bin:/usr/bin:/usr/sbin
+
+DAEMON=/usr/sbin/chronyd
+PIDFILE=/var/run/chronyd.pid
+
+test -x $DAEMON -a -r /etc/chrony.conf || exit 0
+
+# Source function library.
+. /etc/init.d/functions
+
+# Functions to do individual actions
+startdaemon(){
+	echo -n "Starting chronyd: "
+	start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --startas $DAEMON -- "$@"
+	echo "done"
+}
+stopdaemon(){
+	echo -n "Stopping chronyd: "
+	start-stop-daemon --stop --quiet --oknodo -p $PIDFILE
+	echo "done"
+}
+
+case "$1" in
+  start)
+	startdaemon
+	;;
+  stop)
+  	stopdaemon
+	;;
+  force-reload | restart | reload)
+  	stopdaemon
+	startdaemon
+	;;
+  status)
+	status /usr/sbin/chronyd;
+	exit $?
+	;;
+  *)
+	echo "Usage: chronyd { start | stop | status | restart | reload }" >&2
+	exit 1
+	;;
+esac
+
+exit 0
diff --git a/meta-networking/recipes-support/chrony/chrony_2.4.bb b/meta-networking/recipes-support/chrony/chrony_2.4.bb
new file mode 100644
index 0000000..2b6ae5b
--- /dev/null
+++ b/meta-networking/recipes-support/chrony/chrony_2.4.bb
@@ -0,0 +1,83 @@
+SUMMARY = "Versatile implementation of the Network Time Protocol"
+DESCRIPTION = "Chrony can synchronize the system clock with NTP \
+servers, reference clocks (e.g. GPS receiver), and manual input using \
+wristwatch and keyboard. It can also operate as an NTPv4 (RFC 5905) \
+server and peer to provide a time service to other computers in the \
+network. \
+\
+It is designed to perform well in a wide range of conditions, \
+including intermittent network connections, heavily congested \
+networks, changing temperatures (ordinary computer clocks are \
+sensitive to temperature), and systems that do not run continuosly, or \
+run on a virtual machine. \
+\
+Typical accuracy between two machines on a LAN is in tens, or a few \
+hundreds, of microseconds; over the Internet, accuracy is typically \
+within a few milliseconds. With a good hardware reference clock \
+sub-microsecond accuracy is possible. \
+\
+Two programs are included in chrony: chronyd is a daemon that can be \
+started at boot time and chronyc is a command-line interface program \
+which can be used to monitor chronyd's performance and to change \
+various operating parameters whilst it is running."
+
+HOMEPAGE = "http://chrony.tuxfamily.org/"
+SECTION = "net"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+DEPENDS = "libcap readline"
+# It's probably a bad idea to run chrony and ntpd on the same system.
+RCONFLICTS_${PN} = "ntp"
+
+SRC_URI = "https://download.tuxfamily.org/chrony/chrony-${PV}.tar.gz \
+	   file://chrony.conf \
+	   file://chronyd"
+
+SRC_URI[md5sum] = "d0598aa8a9be8faccef9386f6fc0d5f2"
+SRC_URI[sha256sum] = "8d04e7cda2333289c2104b731d39c3c1db94816e43bae35d7ee4e7ae8af6391f"
+
+# Note: chrony does not use autotools, although it is built via './configure; make; make install'.
+inherit update-rc.d systemd
+
+CONFFILES_${PN} = "${sysconfdir}/chrony.conf"
+
+INITSCRIPT_NAME = "chronyd"
+INITSCRIPT_PARAMS = "defaults"
+
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE_${PN} = "chronyd.service"
+
+do_configure() {
+	./configure --sysconfdir=${sysconfdir} --bindir=${bindir} --sbindir=${sbindir} --localstatedir=${localstatedir} --datarootdir=${datadir}
+}
+
+do_compile() {
+	make ${PARALLEL_MAKE}
+}
+
+do_install() {
+	# binaries
+        install -d ${D}${bindir}
+        install -m 0755 ${S}/chronyc ${D}${bindir}
+        install -d ${D}${sbindir}
+        install -m 0755 ${S}/chronyd ${D}${sbindir}
+
+        # config files
+        install -d ${D}${sysconfdir}
+	install -m 644 ${WORKDIR}/chrony.conf ${D}${sysconfdir}
+
+	# System V init scripts
+	install -d ${D}${sysconfdir}/init.d
+	install -m 755 ${WORKDIR}/chronyd ${D}${sysconfdir}/init.d
+	
+	# systemd unit
+	install -d ${D}${systemd_unitdir}/system
+	install -m 0644 ${S}/examples/chronyd.service ${D}${systemd_unitdir}/system/
+	
+        # variable data (for drift file)
+        install -d ${D}${localstatedir}/lib/chrony
+
+        # log files
+        install -d ${D}${localstatedir}/log/chrony
+}
-- 
2.8.1



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [meta-networking][PATCH] chrony: Versatile implementation of NTP
  2016-06-09 19:06 [meta-networking][PATCH] chrony: Versatile implementation of NTP Henry Hallam
@ 2016-06-09 19:14 ` Henry Hallam
  2016-06-13 11:03 ` Koen Kooi
  2016-06-14 17:33 ` Martin Jansa
  2 siblings, 0 replies; 13+ messages in thread
From: Henry Hallam @ 2016-06-09 19:14 UTC (permalink / raw)
  To: openembedded-devel

On Thu, Jun 9, 2016 at 12:06 PM, Henry Hallam <henry@kittyhawk.aero> wrote:
> chrony is an alternative to ntpd.  In particular it may be useful
> for quasi-realtime embedded systems that have a pulse-per-second
> time reference available and need to rapidly synchronize to it after
> boot, which appears to be unachievable with ntpd.

This is my first attempt to contribute to yocto/openembedded, so any
and all feedback (stylistic or otherwise) would be greatly
appreciated.

Thanks, Henry


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [meta-networking][PATCH] chrony: Versatile implementation of NTP
  2016-06-09 19:06 [meta-networking][PATCH] chrony: Versatile implementation of NTP Henry Hallam
  2016-06-09 19:14 ` Henry Hallam
@ 2016-06-13 11:03 ` Koen Kooi
  2016-06-14 18:29   ` Henry Hallam
  2016-06-14 17:33 ` Martin Jansa
  2 siblings, 1 reply; 13+ messages in thread
From: Koen Kooi @ 2016-06-13 11:03 UTC (permalink / raw)
  To: openembedded-devel

Op 09-06-16 om 21:06 schreef Henry Hallam:
> chrony is an alternative to ntpd.  In particular it may be useful
> for quasi-realtime embedded systems that have a pulse-per-second
> time reference available and need to rapidly synchronize to it after
> boot, which appears to be unachievable with ntpd.
> 
> Signed-off-by: Henry Hallam <henry@pericynthion.org>
> ---
>  .../recipes-support/chrony/chrony/chrony.conf      | 40 +++++++++++

That file hardcodes /etc, /var, etc


>  .../recipes-support/chrony/chrony/chronyd          | 58 +++++++++++++++
>  .../recipes-support/chrony/chrony_2.4.bb           | 83 ++++++++++++++++++++++

While the recipe is well behaved and uses ${sysconfdir} and friends. You'll
likely need to add a sed -i -e s:/var:${localstatedir}:g -e
s:/etc/:${sysconfdir}:g -e .... -e..... to do_install to fix that up.

>  3 files changed, 181 insertions(+)
>  create mode 100644 meta-networking/recipes-support/chrony/chrony/chrony.conf
>  create mode 100644 meta-networking/recipes-support/chrony/chrony/chronyd
>  create mode 100644 meta-networking/recipes-support/chrony/chrony_2.4.bb
> 
> diff --git a/meta-networking/recipes-support/chrony/chrony/chrony.conf b/meta-networking/recipes-support/chrony/chrony/chrony.conf
> new file mode 100644
> index 0000000..435a4f9
> --- /dev/null
> +++ b/meta-networking/recipes-support/chrony/chrony/chrony.conf
> @@ -0,0 +1,40 @@
> +# Use public NTP servers from the pool.ntp.org project.
> +pool pool.ntp.org iburst
> +
> +# Use a local timeserver in preference to the pool, if it's reachable.
> +#server 192.168.22.22 iburst minpoll 2 prefer
> +
> +# Sync to pulse-per-second from an onboard GPS.
> +# refclock PPS /dev/pps0 poll 0 prefer
> +# You'll want to enable CONFIG_PPS and CONFIG_PPS_CLIENT_GPIO in your kernel,
> +# and an entry something like this in your device tree:
> +#	pps {
> +#		compatible = "pps-gpio";
> +#		gpios = <&ps7_gpio_0 56 0>;
> +#	};
> +
> +# Record the rate at which the system clock gains/loses time,
> +# improving accuracy after reboot
> +driftfile /var/lib/chrony.drift
> +
> +# In first three updates step the system clock instead of slew
> +# if the adjustment is larger than 1 second.
> +makestep 1.0 3
> +
> +# Enable kernel synchronization of the real-time clock (RTC).
> +#rtcsync
> +
> +# Allow NTP client access from local network.
> +#allow 192.168/16
> +
> +# Serve time even if not synchronized to any NTP server.
> +#local stratum 10
> +
> +# Specify file containing keys for NTP authentication.
> +#keyfile /etc/chrony.keys
> +
> +# Specify directory for log files.
> +logdir /var/log/chrony
> +
> +# Select which information is logged.
> +#log measurements statistics tracking
> diff --git a/meta-networking/recipes-support/chrony/chrony/chronyd b/meta-networking/recipes-support/chrony/chrony/chronyd
> new file mode 100644
> index 0000000..04f1b68
> --- /dev/null
> +++ b/meta-networking/recipes-support/chrony/chrony/chronyd
> @@ -0,0 +1,58 @@
> +#! /bin/sh
> +
> +# System V init script for chrony
> +# Adapted from the script already in meta-networking for ntpd
> +
> +### BEGIN INIT INFO
> +# Provides:        chrony
> +# Required-Start:  $network $remote_fs $syslog
> +# Required-Stop:   $network $remote_fs $syslog
> +# Default-Start:   2 3 4 5
> +# Default-Stop:
> +# Short-Description: Start chrony time daemon
> +### END INIT INFO
> +
> +PATH=/sbin:/bin:/usr/bin:/usr/sbin
> +
> +DAEMON=/usr/sbin/chronyd
> +PIDFILE=/var/run/chronyd.pid
> +
> +test -x $DAEMON -a -r /etc/chrony.conf || exit 0
> +
> +# Source function library.
> +. /etc/init.d/functions
> +
> +# Functions to do individual actions
> +startdaemon(){
> +	echo -n "Starting chronyd: "
> +	start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --startas $DAEMON -- "$@"
> +	echo "done"
> +}
> +stopdaemon(){
> +	echo -n "Stopping chronyd: "
> +	start-stop-daemon --stop --quiet --oknodo -p $PIDFILE
> +	echo "done"
> +}
> +
> +case "$1" in
> +  start)
> +	startdaemon
> +	;;
> +  stop)
> +  	stopdaemon
> +	;;
> +  force-reload | restart | reload)
> +  	stopdaemon
> +	startdaemon
> +	;;
> +  status)
> +	status /usr/sbin/chronyd;
> +	exit $?
> +	;;
> +  *)
> +	echo "Usage: chronyd { start | stop | status | restart | reload }" >&2
> +	exit 1
> +	;;
> +esac
> +
> +exit 0
> diff --git a/meta-networking/recipes-support/chrony/chrony_2.4.bb b/meta-networking/recipes-support/chrony/chrony_2.4.bb
> new file mode 100644
> index 0000000..2b6ae5b
> --- /dev/null
> +++ b/meta-networking/recipes-support/chrony/chrony_2.4.bb
> @@ -0,0 +1,83 @@
> +SUMMARY = "Versatile implementation of the Network Time Protocol"
> +DESCRIPTION = "Chrony can synchronize the system clock with NTP \
> +servers, reference clocks (e.g. GPS receiver), and manual input using \
> +wristwatch and keyboard. It can also operate as an NTPv4 (RFC 5905) \
> +server and peer to provide a time service to other computers in the \
> +network. \
> +\
> +It is designed to perform well in a wide range of conditions, \
> +including intermittent network connections, heavily congested \
> +networks, changing temperatures (ordinary computer clocks are \
> +sensitive to temperature), and systems that do not run continuosly, or \
> +run on a virtual machine. \
> +\
> +Typical accuracy between two machines on a LAN is in tens, or a few \
> +hundreds, of microseconds; over the Internet, accuracy is typically \
> +within a few milliseconds. With a good hardware reference clock \
> +sub-microsecond accuracy is possible. \
> +\
> +Two programs are included in chrony: chronyd is a daemon that can be \
> +started at boot time and chronyc is a command-line interface program \
> +which can be used to monitor chronyd's performance and to change \
> +various operating parameters whilst it is running."
> +
> +HOMEPAGE = "http://chrony.tuxfamily.org/"
> +SECTION = "net"
> +LICENSE = "GPLv2"
> +LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
> +
> +DEPENDS = "libcap readline"
> +# It's probably a bad idea to run chrony and ntpd on the same system.
> +RCONFLICTS_${PN} = "ntp"
> +
> +SRC_URI = "https://download.tuxfamily.org/chrony/chrony-${PV}.tar.gz \
> +	   file://chrony.conf \
> +	   file://chronyd"
> +
> +SRC_URI[md5sum] = "d0598aa8a9be8faccef9386f6fc0d5f2"
> +SRC_URI[sha256sum] = "8d04e7cda2333289c2104b731d39c3c1db94816e43bae35d7ee4e7ae8af6391f"
> +
> +# Note: chrony does not use autotools, although it is built via './configure; make; make install'.
> +inherit update-rc.d systemd
> +
> +CONFFILES_${PN} = "${sysconfdir}/chrony.conf"
> +
> +INITSCRIPT_NAME = "chronyd"
> +INITSCRIPT_PARAMS = "defaults"
> +
> +SYSTEMD_PACKAGES = "${PN}"
> +SYSTEMD_SERVICE_${PN} = "chronyd.service"
> +
> +do_configure() {
> +	./configure --sysconfdir=${sysconfdir} --bindir=${bindir} --sbindir=${sbindir} --localstatedir=${localstatedir} --datarootdir=${datadir}
> +}
> +
> +do_compile() {
> +	make ${PARALLEL_MAKE}
> +}
> +
> +do_install() {
> +	# binaries
> +        install -d ${D}${bindir}
> +        install -m 0755 ${S}/chronyc ${D}${bindir}
> +        install -d ${D}${sbindir}
> +        install -m 0755 ${S}/chronyd ${D}${sbindir}
> +
> +        # config files
> +        install -d ${D}${sysconfdir}
> +	install -m 644 ${WORKDIR}/chrony.conf ${D}${sysconfdir}
> +
> +	# System V init scripts
> +	install -d ${D}${sysconfdir}/init.d
> +	install -m 755 ${WORKDIR}/chronyd ${D}${sysconfdir}/init.d
> +	
> +	# systemd unit
> +	install -d ${D}${systemd_unitdir}/system
> +	install -m 0644 ${S}/examples/chronyd.service ${D}${systemd_unitdir}/system/
> +	
> +        # variable data (for drift file)
> +        install -d ${D}${localstatedir}/lib/chrony
> +
> +        # log files
> +        install -d ${D}${localstatedir}/log/chrony
> +}
> 




^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [meta-networking][PATCH] chrony: Versatile implementation of NTP
  2016-06-09 19:06 [meta-networking][PATCH] chrony: Versatile implementation of NTP Henry Hallam
  2016-06-09 19:14 ` Henry Hallam
  2016-06-13 11:03 ` Koen Kooi
@ 2016-06-14 17:33 ` Martin Jansa
  2016-06-14 18:42   ` Henry Hallam
  2 siblings, 1 reply; 13+ messages in thread
From: Martin Jansa @ 2016-06-14 17:33 UTC (permalink / raw)
  To: openembedded-devel

[-- Attachment #1: Type: text/plain, Size: 8375 bytes --]

On Thu, Jun 09, 2016 at 12:06:38PM -0700, Henry Hallam wrote:
> chrony is an alternative to ntpd.  In particular it may be useful
> for quasi-realtime embedded systems that have a pulse-per-second
> time reference available and need to rapidly synchronize to it after
> boot, which appears to be unachievable with ntpd.
> 
> Signed-off-by: Henry Hallam <henry@pericynthion.org>
> ---
>  .../recipes-support/chrony/chrony/chrony.conf      | 40 +++++++++++
>  .../recipes-support/chrony/chrony/chronyd          | 58 +++++++++++++++
>  .../recipes-support/chrony/chrony_2.4.bb           | 83 ++++++++++++++++++++++

Autodetects some dependencies:

WARNING: chrony-2.4-r0 do_package_qa: QA Issue: chrony rdepends on nss,
but it isn't a build dependency, missing nss in DEPENDS or
PACKAGECONFIG? [build-deps]
WARNING: chrony-2.4-r0 do_package_qa: QA Issue: chrony rdepends on
libedit, but it isn't a build dependency, missing libedit in DEPENDS or
PACKAGECONFIG? [build-deps]

>  3 files changed, 181 insertions(+)
>  create mode 100644 meta-networking/recipes-support/chrony/chrony/chrony.conf
>  create mode 100644 meta-networking/recipes-support/chrony/chrony/chronyd
>  create mode 100644 meta-networking/recipes-support/chrony/chrony_2.4.bb
> 
> diff --git a/meta-networking/recipes-support/chrony/chrony/chrony.conf b/meta-networking/recipes-support/chrony/chrony/chrony.conf
> new file mode 100644
> index 0000000..435a4f9
> --- /dev/null
> +++ b/meta-networking/recipes-support/chrony/chrony/chrony.conf
> @@ -0,0 +1,40 @@
> +# Use public NTP servers from the pool.ntp.org project.
> +pool pool.ntp.org iburst
> +
> +# Use a local timeserver in preference to the pool, if it's reachable.
> +#server 192.168.22.22 iburst minpoll 2 prefer
> +
> +# Sync to pulse-per-second from an onboard GPS.
> +# refclock PPS /dev/pps0 poll 0 prefer
> +# You'll want to enable CONFIG_PPS and CONFIG_PPS_CLIENT_GPIO in your kernel,
> +# and an entry something like this in your device tree:
> +#	pps {
> +#		compatible = "pps-gpio";
> +#		gpios = <&ps7_gpio_0 56 0>;
> +#	};
> +
> +# Record the rate at which the system clock gains/loses time,
> +# improving accuracy after reboot
> +driftfile /var/lib/chrony.drift
> +
> +# In first three updates step the system clock instead of slew
> +# if the adjustment is larger than 1 second.
> +makestep 1.0 3
> +
> +# Enable kernel synchronization of the real-time clock (RTC).
> +#rtcsync
> +
> +# Allow NTP client access from local network.
> +#allow 192.168/16
> +
> +# Serve time even if not synchronized to any NTP server.
> +#local stratum 10
> +
> +# Specify file containing keys for NTP authentication.
> +#keyfile /etc/chrony.keys
> +
> +# Specify directory for log files.
> +logdir /var/log/chrony
> +
> +# Select which information is logged.
> +#log measurements statistics tracking
> diff --git a/meta-networking/recipes-support/chrony/chrony/chronyd b/meta-networking/recipes-support/chrony/chrony/chronyd
> new file mode 100644
> index 0000000..04f1b68
> --- /dev/null
> +++ b/meta-networking/recipes-support/chrony/chrony/chronyd
> @@ -0,0 +1,58 @@
> +#! /bin/sh
> +
> +# System V init script for chrony
> +# Adapted from the script already in meta-networking for ntpd
> +
> +### BEGIN INIT INFO
> +# Provides:        chrony
> +# Required-Start:  $network $remote_fs $syslog
> +# Required-Stop:   $network $remote_fs $syslog
> +# Default-Start:   2 3 4 5
> +# Default-Stop:
> +# Short-Description: Start chrony time daemon
> +### END INIT INFO
> +
> +PATH=/sbin:/bin:/usr/bin:/usr/sbin
> +
> +DAEMON=/usr/sbin/chronyd
> +PIDFILE=/var/run/chronyd.pid
> +
> +test -x $DAEMON -a -r /etc/chrony.conf || exit 0
> +
> +# Source function library.
> +. /etc/init.d/functions
> +
> +# Functions to do individual actions
> +startdaemon(){
> +	echo -n "Starting chronyd: "
> +	start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --startas $DAEMON -- "$@"
> +	echo "done"
> +}
> +stopdaemon(){
> +	echo -n "Stopping chronyd: "
> +	start-stop-daemon --stop --quiet --oknodo -p $PIDFILE
> +	echo "done"
> +}
> +
> +case "$1" in
> +  start)
> +	startdaemon
> +	;;
> +  stop)
> +  	stopdaemon
> +	;;
> +  force-reload | restart | reload)
> +  	stopdaemon
> +	startdaemon
> +	;;
> +  status)
> +	status /usr/sbin/chronyd;
> +	exit $?
> +	;;
> +  *)
> +	echo "Usage: chronyd { start | stop | status | restart | reload }" >&2
> +	exit 1
> +	;;
> +esac
> +
> +exit 0
> diff --git a/meta-networking/recipes-support/chrony/chrony_2.4.bb b/meta-networking/recipes-support/chrony/chrony_2.4.bb
> new file mode 100644
> index 0000000..2b6ae5b
> --- /dev/null
> +++ b/meta-networking/recipes-support/chrony/chrony_2.4.bb
> @@ -0,0 +1,83 @@
> +SUMMARY = "Versatile implementation of the Network Time Protocol"
> +DESCRIPTION = "Chrony can synchronize the system clock with NTP \
> +servers, reference clocks (e.g. GPS receiver), and manual input using \
> +wristwatch and keyboard. It can also operate as an NTPv4 (RFC 5905) \
> +server and peer to provide a time service to other computers in the \
> +network. \
> +\
> +It is designed to perform well in a wide range of conditions, \
> +including intermittent network connections, heavily congested \
> +networks, changing temperatures (ordinary computer clocks are \
> +sensitive to temperature), and systems that do not run continuosly, or \
> +run on a virtual machine. \
> +\
> +Typical accuracy between two machines on a LAN is in tens, or a few \
> +hundreds, of microseconds; over the Internet, accuracy is typically \
> +within a few milliseconds. With a good hardware reference clock \
> +sub-microsecond accuracy is possible. \
> +\
> +Two programs are included in chrony: chronyd is a daemon that can be \
> +started at boot time and chronyc is a command-line interface program \
> +which can be used to monitor chronyd's performance and to change \
> +various operating parameters whilst it is running."
> +
> +HOMEPAGE = "http://chrony.tuxfamily.org/"
> +SECTION = "net"
> +LICENSE = "GPLv2"
> +LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
> +
> +DEPENDS = "libcap readline"
> +# It's probably a bad idea to run chrony and ntpd on the same system.
> +RCONFLICTS_${PN} = "ntp"
> +
> +SRC_URI = "https://download.tuxfamily.org/chrony/chrony-${PV}.tar.gz \
> +	   file://chrony.conf \
> +	   file://chronyd"
> +
> +SRC_URI[md5sum] = "d0598aa8a9be8faccef9386f6fc0d5f2"
> +SRC_URI[sha256sum] = "8d04e7cda2333289c2104b731d39c3c1db94816e43bae35d7ee4e7ae8af6391f"
> +
> +# Note: chrony does not use autotools, although it is built via './configure; make; make install'.
> +inherit update-rc.d systemd
> +
> +CONFFILES_${PN} = "${sysconfdir}/chrony.conf"
> +
> +INITSCRIPT_NAME = "chronyd"
> +INITSCRIPT_PARAMS = "defaults"
> +
> +SYSTEMD_PACKAGES = "${PN}"
> +SYSTEMD_SERVICE_${PN} = "chronyd.service"
> +
> +do_configure() {
> +	./configure --sysconfdir=${sysconfdir} --bindir=${bindir} --sbindir=${sbindir} --localstatedir=${localstatedir} --datarootdir=${datadir}
> +}
> +
> +do_compile() {
> +	make ${PARALLEL_MAKE}
> +}
> +
> +do_install() {
> +	# binaries
> +        install -d ${D}${bindir}
> +        install -m 0755 ${S}/chronyc ${D}${bindir}
> +        install -d ${D}${sbindir}
> +        install -m 0755 ${S}/chronyd ${D}${sbindir}
> +
> +        # config files
> +        install -d ${D}${sysconfdir}
> +	install -m 644 ${WORKDIR}/chrony.conf ${D}${sysconfdir}
> +
> +	# System V init scripts
> +	install -d ${D}${sysconfdir}/init.d
> +	install -m 755 ${WORKDIR}/chronyd ${D}${sysconfdir}/init.d
> +	
> +	# systemd unit
> +	install -d ${D}${systemd_unitdir}/system
> +	install -m 0644 ${S}/examples/chronyd.service ${D}${systemd_unitdir}/system/
> +	
> +        # variable data (for drift file)
> +        install -d ${D}${localstatedir}/lib/chrony
> +
> +        # log files
> +        install -d ${D}${localstatedir}/log/chrony
> +}
> -- 
> 2.8.1
> 
> -- 
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-devel

-- 
Martin 'JaMa' Jansa     jabber: Martin.Jansa@gmail.com

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 188 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [meta-networking][PATCH] chrony: Versatile implementation of NTP
  2016-06-13 11:03 ` Koen Kooi
@ 2016-06-14 18:29   ` Henry Hallam
  0 siblings, 0 replies; 13+ messages in thread
From: Henry Hallam @ 2016-06-14 18:29 UTC (permalink / raw)
  To: openembedded-devel

On Mon, Jun 13, 2016 at 4:03 AM, Koen Kooi <koen@dominion.thruhere.net> wrote:
> That file hardcodes /etc, /var, etc
> ...
> While the recipe is well behaved and uses ${sysconfdir} and friends. You'll
> likely need to add a sed -i -e s:/var:${localstatedir}:g -e
> s:/etc/:${sysconfdir}:g -e .... -e..... to do_install to fix that up.

Thanks Koen, I will put out a V2 patch shortly that fixes those paths
as well as the ones in the SysVinit and systemd scripts.  I'm a little
surprised there isn't a more general way to do this since it must come
up a lot.

Henry


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [meta-networking][PATCH] chrony: Versatile implementation of NTP
  2016-06-14 17:33 ` Martin Jansa
@ 2016-06-14 18:42   ` Henry Hallam
  2016-06-14 19:40     ` Martin Jansa
  0 siblings, 1 reply; 13+ messages in thread
From: Henry Hallam @ 2016-06-14 18:42 UTC (permalink / raw)
  To: openembedded-devel

On Tue, Jun 14, 2016 at 10:33 AM, Martin Jansa <martin.jansa@gmail.com> wrote:
> Autodetects some dependencies:
>
> WARNING: chrony-2.4-r0 do_package_qa: QA Issue: chrony rdepends on nss,
> but it isn't a build dependency, missing nss in DEPENDS or
> PACKAGECONFIG? [build-deps]
> WARNING: chrony-2.4-r0 do_package_qa: QA Issue: chrony rdepends on
> libedit, but it isn't a build dependency, missing libedit in DEPENDS or
> PACKAGECONFIG? [build-deps]
>

Thanks Martin. It looks like those didn't show up for me because nss
and libedit are both optional dependencies which weren't present on my
system.  They are detected and used by chrony's `configure` script if
available and unused if not (e.g. chronyc can use either editline or
readline or neither, and if NSS is unavailable then chronyd gets built
without secure hash support).  What's the best practice here - should
I simply specify `configure` options to disable all these features for
minimal dependencies, or make them all optionally available via
PACKAGECONFIG?

Henry


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [meta-networking][PATCH] chrony: Versatile implementation of NTP
  2016-06-14 18:42   ` Henry Hallam
@ 2016-06-14 19:40     ` Martin Jansa
  2016-06-15  2:12       ` [meta-networking][PATCH v2] " Henry Hallam
  0 siblings, 1 reply; 13+ messages in thread
From: Martin Jansa @ 2016-06-14 19:40 UTC (permalink / raw)
  To: openembedded-devel

PACKAGECONFIG is preferred solution

On Tue, Jun 14, 2016 at 8:42 PM, Henry Hallam <henry@kittyhawk.aero> wrote:

> On Tue, Jun 14, 2016 at 10:33 AM, Martin Jansa <martin.jansa@gmail.com>
> wrote:
> > Autodetects some dependencies:
> >
> > WARNING: chrony-2.4-r0 do_package_qa: QA Issue: chrony rdepends on nss,
> > but it isn't a build dependency, missing nss in DEPENDS or
> > PACKAGECONFIG? [build-deps]
> > WARNING: chrony-2.4-r0 do_package_qa: QA Issue: chrony rdepends on
> > libedit, but it isn't a build dependency, missing libedit in DEPENDS or
> > PACKAGECONFIG? [build-deps]
> >
>
> Thanks Martin. It looks like those didn't show up for me because nss
> and libedit are both optional dependencies which weren't present on my
> system.  They are detected and used by chrony's `configure` script if
> available and unused if not (e.g. chronyc can use either editline or
> readline or neither, and if NSS is unavailable then chronyd gets built
> without secure hash support).  What's the best practice here - should
> I simply specify `configure` options to disable all these features for
> minimal dependencies, or make them all optionally available via
> PACKAGECONFIG?
>
> Henry
> --
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-devel
>


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [meta-networking][PATCH v2] chrony: Versatile implementation of NTP
  2016-06-14 19:40     ` Martin Jansa
@ 2016-06-15  2:12       ` Henry Hallam
  2016-06-15  2:12         ` Henry Hallam
  0 siblings, 1 reply; 13+ messages in thread
From: Henry Hallam @ 2016-06-15  2:12 UTC (permalink / raw)
  To: openembedded-devel; +Cc: Koen Kooi


Patch version 2:
- No longer hard-coding paths  
- Fix missing build dependencies, depending on PACKAGECONFIG features 
- Split off chronyc into separate output package
- Default config points to openembedded.pool.ntp.org rather than
  pool.ntp.org (which should never be shipped as a default)

I have applied for the above NTP pool vendor zone per
http://www.pool.ntp.org/en/vendors.html#vendor-zone

Thanks, Henry


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [meta-networking][PATCH v2] chrony: Versatile implementation of NTP
  2016-06-15  2:12       ` [meta-networking][PATCH v2] " Henry Hallam
@ 2016-06-15  2:12         ` Henry Hallam
  2016-06-15  7:11           ` Koen Kooi
  0 siblings, 1 reply; 13+ messages in thread
From: Henry Hallam @ 2016-06-15  2:12 UTC (permalink / raw)
  To: openembedded-devel; +Cc: Koen Kooi

From: Henry Hallam <henry@pericynthion.org>

chrony is an alternative to ntpd.  In particular it may be useful
for quasi-realtime embedded systems that have a pulse-per-second
time reference available and need to rapidly synchronize to it after
boot, which appears to be unachievable with ntpd.

Signed-off-by: Henry Hallam <henry@pericynthion.org>
---
 .../recipes-support/chrony/chrony/chrony.conf      |  44 ++++++++
 .../recipes-support/chrony/chrony/chronyd          |  58 ++++++++++
 .../recipes-support/chrony/chrony_2.4.bb           | 120 +++++++++++++++++++++
 3 files changed, 222 insertions(+)
 create mode 100644 meta-networking/recipes-support/chrony/chrony/chrony.conf
 create mode 100644 meta-networking/recipes-support/chrony/chrony/chronyd
 create mode 100644 meta-networking/recipes-support/chrony/chrony_2.4.bb

diff --git a/meta-networking/recipes-support/chrony/chrony/chrony.conf b/meta-networking/recipes-support/chrony/chrony/chrony.conf
new file mode 100644
index 0000000..95f5f81
--- /dev/null
+++ b/meta-networking/recipes-support/chrony/chrony/chrony.conf
@@ -0,0 +1,44 @@
+# Use public NTP servers from the pool.ntp.org project.
+# Please consider joining the pool project if possible by running your own
+# server(s).
+# If you are a vendor distributing a product using chrony, you *MUST*
+# read and comply with http://www.pool.ntp.org/vendors.html
+pool 0.openembedded.pool.ntp.org iburst
+
+# Use a local timeserver in preference to the pool, if it's reachable.
+#server 192.168.22.22 iburst minpoll 2 prefer
+
+# Sync to pulse-per-second from an onboard GPS.
+#refclock PPS /dev/pps0 poll 0 prefer
+# You'll want to enable CONFIG_PPS and CONFIG_PPS_CLIENT_GPIO in your kernel,
+# and an entry something like this in your device tree:
+#	pps {
+#		compatible = "pps-gpio";
+#		gpios = <&ps7_gpio_0 56 0>;
+#	};
+
+# Record the rate at which the system clock gains/loses time,
+# improving accuracy after reboot
+driftfile /var/lib/chrony.drift
+
+# In first three updates step the system clock instead of slew
+# if the adjustment is larger than 1 second.
+makestep 1.0 3
+
+# Enable kernel synchronization of the real-time clock (RTC).
+rtcsync
+
+# Allow NTP client access from local network.
+#allow 192.168/16
+
+# Serve time even if not synchronized to any NTP server.
+#local stratum 10
+
+# Specify file containing keys for NTP authentication.
+#keyfile /etc/chrony.keys
+
+# Specify directory for log files.
+logdir /var/log/chrony
+
+# Select which information is logged.
+#log measurements statistics tracking
diff --git a/meta-networking/recipes-support/chrony/chrony/chronyd b/meta-networking/recipes-support/chrony/chrony/chronyd
new file mode 100644
index 0000000..04f1b68
--- /dev/null
+++ b/meta-networking/recipes-support/chrony/chrony/chronyd
@@ -0,0 +1,58 @@
+#! /bin/sh
+
+# System V init script for chrony
+# Adapted from the script already in meta-networking for ntpd
+
+### BEGIN INIT INFO
+# Provides:        chrony
+# Required-Start:  $network $remote_fs $syslog
+# Required-Stop:   $network $remote_fs $syslog
+# Default-Start:   2 3 4 5
+# Default-Stop:
+# Short-Description: Start chrony time daemon
+### END INIT INFO
+
+PATH=/sbin:/bin:/usr/bin:/usr/sbin
+
+DAEMON=/usr/sbin/chronyd
+PIDFILE=/var/run/chronyd.pid
+
+test -x $DAEMON -a -r /etc/chrony.conf || exit 0
+
+# Source function library.
+. /etc/init.d/functions
+
+# Functions to do individual actions
+startdaemon(){
+	echo -n "Starting chronyd: "
+	start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --startas $DAEMON -- "$@"
+	echo "done"
+}
+stopdaemon(){
+	echo -n "Stopping chronyd: "
+	start-stop-daemon --stop --quiet --oknodo -p $PIDFILE
+	echo "done"
+}
+
+case "$1" in
+  start)
+	startdaemon
+	;;
+  stop)
+  	stopdaemon
+	;;
+  force-reload | restart | reload)
+  	stopdaemon
+	startdaemon
+	;;
+  status)
+	status /usr/sbin/chronyd;
+	exit $?
+	;;
+  *)
+	echo "Usage: chronyd { start | stop | status | restart | reload }" >&2
+	exit 1
+	;;
+esac
+
+exit 0
diff --git a/meta-networking/recipes-support/chrony/chrony_2.4.bb b/meta-networking/recipes-support/chrony/chrony_2.4.bb
new file mode 100644
index 0000000..07d312e
--- /dev/null
+++ b/meta-networking/recipes-support/chrony/chrony_2.4.bb
@@ -0,0 +1,120 @@
+SUMMARY = "Versatile implementation of the Network Time Protocol"
+DESCRIPTION = "Chrony can synchronize the system clock with NTP \
+servers, reference clocks (e.g. GPS receiver), and manual input using \
+wristwatch and keyboard. It can also operate as an NTPv4 (RFC 5905) \
+server and peer to provide a time service to other computers in the \
+network. \
+\
+It is designed to perform well in a wide range of conditions, \
+including intermittent network connections, heavily congested \
+networks, changing temperatures (ordinary computer clocks are \
+sensitive to temperature), and systems that do not run continuosly, or \
+run on a virtual machine. \
+\
+Typical accuracy between two machines on a LAN is in tens, or a few \
+hundreds, of microseconds; over the Internet, accuracy is typically \
+within a few milliseconds. With a good hardware reference clock \
+sub-microsecond accuracy is possible. \
+\
+Two programs are included in chrony: chronyd is a daemon that can be \
+started at boot time and chronyc is a command-line interface program \
+which can be used to monitor chronyd's performance and to change \
+various operating parameters whilst it is running."
+
+HOMEPAGE = "http://chrony.tuxfamily.org/"
+SECTION = "net"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+DEPENDS = "pps-tools"
+# It's probably a bad idea to run chrony and ntpd on the same system.
+RCONFLICTS_${PN} = "ntp"
+
+SRC_URI = "https://download.tuxfamily.org/chrony/chrony-${PV}.tar.gz \
+	   file://chrony.conf \
+	   file://chronyd"
+
+SRC_URI[md5sum] = "d0598aa8a9be8faccef9386f6fc0d5f2"
+SRC_URI[sha256sum] = "8d04e7cda2333289c2104b731d39c3c1db94816e43bae35d7ee4e7ae8af6391f"
+
+# Note: Despite being built via './configure; make; make install',
+#       chrony does not use GNU Autotools.
+inherit update-rc.d systemd
+
+CONFFILES_${PN} = "${sysconfdir}/chrony.conf"
+
+INITSCRIPT_NAME = "chronyd"
+INITSCRIPT_PARAMS = "defaults"
+
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE_${PN} = "chronyd.service"
+
+# Configuration options:
+# - For command line editing support in chronyc, you may specify either
+#   'editline' or 'readline' but not both.  editline is smaller, but
+#   many systems already have readline for other purposes so you might want
+#   to choose that instead.  However, beware license incompatibility
+#   since chrony is GPLv2 and readline versions after 6.0 are GPLv3+.
+#   You can of course choose neither, but if you're that tight on space
+#   consider dropping chronyc entirely (you can use it remotely with
+#   appropriate chrony.conf options).
+# - Security-related:
+#   - 'sechash' is omitted by default because it pulls in nss which is huge.
+#   - 'privdrop' allows chronyd to run as non-root; would need changes to
+#     chrony.conf and init script.
+#   - 'scfilter' enables support for system call filtering, but requires the
+#     kernel to have CONFIG_SECCOMP enabled.
+PACKAGECONFIG ??= "editline scfilter"
+PACKAGECONFIG[readline] = "--without-editline,--without-readline,readline"
+PACKAGECONFIG[editline] = ",--without-editline,libedit"
+PACKAGECONFIG[sechash] = "--without-tomcrypt,--disable-sechash,nss"
+PACKAGECONFIG[privdrop] = ",--disable-privdrop,libcap"
+PACKAGECONFIG[scfilter] = "--enable-scfilter,--without-seccomp"
+
+# --disable-static isn't supported by chrony's configure script.
+DISABLE_STATIC = ""
+
+PACKAGES += "chronyc"
+FILES_${PN} = "${sbindir}/chronyd ${sysconfdir} ${localstatedir}"
+FILES_chronyc = "${bindir}/chronyc"
+
+do_configure() {
+    ./configure --sysconfdir=${sysconfdir} --bindir=${bindir} --sbindir=${sbindir} \
+                --localstatedir=${localstatedir} --datarootdir=${datadir} \
+                ${EXTRA_OECONF}
+}
+
+do_install() {
+    # Binaries
+    install -d ${D}${bindir}
+    install -m 0755 ${S}/chronyc ${D}${bindir}
+    install -d ${D}${sbindir}
+    install -m 0755 ${S}/chronyd ${D}${sbindir}
+
+    # Config file
+    install -d ${D}${sysconfdir}
+    install -m 644 ${WORKDIR}/chrony.conf ${D}${sysconfdir}
+
+    # System V init script
+    install -d ${D}${sysconfdir}/init.d
+    install -m 755 ${WORKDIR}/chronyd ${D}${sysconfdir}/init.d
+    
+    # Systemd unit
+    install -d ${D}${systemd_unitdir}/system
+    install -m 0644 ${S}/examples/chronyd.service ${D}${systemd_unitdir}/system/
+    
+    # Variable data (for drift file)
+    install -d ${D}${localstatedir}/lib/chrony
+
+    # Log files
+    install -d ${D}${localstatedir}/log/chrony
+
+    # Fix hard-coded paths in config files and init scripts
+    sed -i -e 's!/var/!${localstatedir}/!g' -e 's!/etc/!${sysconfdir}/!g' \
+           -e 's!/usr/sbin/!${sbindir}/!g' -e 's!/usr/bin/!${bindir}/!g' \
+           ${D}${sysconfdir}/chrony.conf \
+           ${D}${sysconfdir}/init.d/chronyd \
+           ${D}${systemd_unitdir}/system/chronyd.service
+    sed -i 's!^PATH=.*!PATH=${base_sbindir}:${base_bindir}:${sbindir}:${bindir}!' ${D}${sysconfdir}/init.d/chronyd
+    sed -i 's!^EnvironmentFile=.*!EnvironmentFile=-${sysconfdir}/default/chronyd!' ${D}${systemd_unitdir}/system/chronyd.service
+}
-- 
2.8.1



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [meta-networking][PATCH v2] chrony: Versatile implementation of NTP
  2016-06-15  2:12         ` Henry Hallam
@ 2016-06-15  7:11           ` Koen Kooi
  2016-06-15 18:17             ` [meta-networking][PATCHv3] " Henry Hallam
  0 siblings, 1 reply; 13+ messages in thread
From: Koen Kooi @ 2016-06-15  7:11 UTC (permalink / raw)
  To: Henry Hallam; +Cc: openembedded-devel


> Op 15 jun. 2016, om 04:12 heeft Henry Hallam <henry@kittyhawk.aero> het volgende geschreven:
> 
> From: Henry Hallam <henry@pericynthion.org>

[..]

> +DEPENDS = "pps-tools"
> +# It's probably a bad idea to run chrony and ntpd on the same system.
> +RCONFLICTS_${PN} = “ntp"

The rule of thumb is to put variables where there are used, so R* go below do_install since they affect packaging.

> +
> +SRC_URI = "https://download.tuxfamily.org/chrony/chrony-${PV}.tar.gz \
> +	   file://chrony.conf \
> +	   file://chronyd"
> +
> +SRC_URI[md5sum] = "d0598aa8a9be8faccef9386f6fc0d5f2"
> +SRC_URI[sha256sum] = "8d04e7cda2333289c2104b731d39c3c1db94816e43bae35d7ee4e7ae8af6391f"
> +
> +# Note: Despite being built via './configure; make; make install',
> +#       chrony does not use GNU Autotools.
> +inherit update-rc.d systemd
> +
> +CONFFILES_${PN} = "${sysconfdir}/chrony.conf"
> +
> +INITSCRIPT_NAME = "chronyd"
> +INITSCRIPT_PARAMS = "defaults"
> +
> +SYSTEMD_PACKAGES = "${PN}"
> +SYSTEMD_SERVICE_${PN} = “chronyd.service"

The same CONFFILES/INITSCRIPT*/SYSTEMD_*, below do_install

> +
> +# Configuration options:
> +# - For command line editing support in chronyc, you may specify either
> +#   'editline' or 'readline' but not both.  editline is smaller, but
> +#   many systems already have readline for other purposes so you might want
> +#   to choose that instead.  However, beware license incompatibility
> +#   since chrony is GPLv2 and readline versions after 6.0 are GPLv3+.
> +#   You can of course choose neither, but if you're that tight on space
> +#   consider dropping chronyc entirely (you can use it remotely with
> +#   appropriate chrony.conf options).
> +# - Security-related:
> +#   - 'sechash' is omitted by default because it pulls in nss which is huge.
> +#   - 'privdrop' allows chronyd to run as non-root; would need changes to
> +#     chrony.conf and init script.
> +#   - 'scfilter' enables support for system call filtering, but requires the
> +#     kernel to have CONFIG_SECCOMP enabled.
> +PACKAGECONFIG ??= "editline scfilter"
> +PACKAGECONFIG[readline] = "--without-editline,--without-readline,readline"
> +PACKAGECONFIG[editline] = ",--without-editline,libedit"
> +PACKAGECONFIG[sechash] = "--without-tomcrypt,--disable-sechash,nss"
> +PACKAGECONFIG[privdrop] = ",--disable-privdrop,libcap"
> +PACKAGECONFIG[scfilter] = "--enable-scfilter,--without-seccomp"
> +
> +# --disable-static isn't supported by chrony's configure script.
> +DISABLE_STATIC = ""
> +
> +PACKAGES += "chronyc"
> +FILES_${PN} = "${sbindir}/chronyd ${sysconfdir} ${localstatedir}"
> +FILES_chronyc = "${bindir}/chronyc”

Change that to:

PACKAGES =+ “chronyc"
FILES_chronyc = "${bindir}/chronyc”

And move those below do_install

The recipe looks good to me beside the points mentioned.

regards,

Koen

> +
> +do_configure() {
> +    ./configure --sysconfdir=${sysconfdir} --bindir=${bindir} --sbindir=${sbindir} \
> +                --localstatedir=${localstatedir} --datarootdir=${datadir} \
> +                ${EXTRA_OECONF}
> +}
> +
> +do_install() {
> +    # Binaries
> +    install -d ${D}${bindir}
> +    install -m 0755 ${S}/chronyc ${D}${bindir}
> +    install -d ${D}${sbindir}
> +    install -m 0755 ${S}/chronyd ${D}${sbindir}
> +
> +    # Config file
> +    install -d ${D}${sysconfdir}
> +    install -m 644 ${WORKDIR}/chrony.conf ${D}${sysconfdir}
> +
> +    # System V init script
> +    install -d ${D}${sysconfdir}/init.d
> +    install -m 755 ${WORKDIR}/chronyd ${D}${sysconfdir}/init.d
> +    
> +    # Systemd unit
> +    install -d ${D}${systemd_unitdir}/system
> +    install -m 0644 ${S}/examples/chronyd.service ${D}${systemd_unitdir}/system/
> +    
> +    # Variable data (for drift file)
> +    install -d ${D}${localstatedir}/lib/chrony
> +
> +    # Log files
> +    install -d ${D}${localstatedir}/log/chrony
> +
> +    # Fix hard-coded paths in config files and init scripts
> +    sed -i -e 's!/var/!${localstatedir}/!g' -e 's!/etc/!${sysconfdir}/!g' \
> +           -e 's!/usr/sbin/!${sbindir}/!g' -e 's!/usr/bin/!${bindir}/!g' \
> +           ${D}${sysconfdir}/chrony.conf \
> +           ${D}${sysconfdir}/init.d/chronyd \
> +           ${D}${systemd_unitdir}/system/chronyd.service
> +    sed -i 's!^PATH=.*!PATH=${base_sbindir}:${base_bindir}:${sbindir}:${bindir}!' ${D}${sysconfdir}/init.d/chronyd
> +    sed -i 's!^EnvironmentFile=.*!EnvironmentFile=-${sysconfdir}/default/chronyd!' ${D}${systemd_unitdir}/system/chronyd.service
> +}
> -- 
> 2.8.1
> 



^ permalink raw reply	[flat|nested] 13+ messages in thread

* [meta-networking][PATCHv3] chrony: Versatile implementation of NTP
  2016-06-15  7:11           ` Koen Kooi
@ 2016-06-15 18:17             ` Henry Hallam
  2016-06-15 18:17               ` Henry Hallam
  0 siblings, 1 reply; 13+ messages in thread
From: Henry Hallam @ 2016-06-15 18:17 UTC (permalink / raw)
  To: openembedded-devel; +Cc: Koen Kooi


Patch version 3:
- Move variable defs to appropriate places in the recipe, per Koen's feedback
- Correct location of drift file
- Add conflict with ntimed, and note about systemd-timesyncd

Thanks, Henry


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [meta-networking][PATCHv3] chrony: Versatile implementation of NTP
  2016-06-15 18:17             ` [meta-networking][PATCHv3] " Henry Hallam
@ 2016-06-15 18:17               ` Henry Hallam
  2016-06-15 18:19                 ` Koen Kooi
  0 siblings, 1 reply; 13+ messages in thread
From: Henry Hallam @ 2016-06-15 18:17 UTC (permalink / raw)
  To: openembedded-devel; +Cc: Koen Kooi

From: Henry Hallam <henry@pericynthion.org>

chrony is an alternative to ntpd.  In particular it may be useful
for quasi-realtime embedded systems that have a pulse-per-second
time reference available and need to rapidly synchronize to it after
boot, which appears to be unachievable with ntpd.

Signed-off-by: Henry Hallam <henry@pericynthion.org>
---
 .../recipes-support/chrony/chrony/chrony.conf      |  44 +++++++
 .../recipes-support/chrony/chrony/chronyd          |  58 ++++++++++
 .../recipes-support/chrony/chrony_2.4.bb           | 127 +++++++++++++++++++++
 3 files changed, 229 insertions(+)
 create mode 100644 meta-networking/recipes-support/chrony/chrony/chrony.conf
 create mode 100644 meta-networking/recipes-support/chrony/chrony/chronyd
 create mode 100644 meta-networking/recipes-support/chrony/chrony_2.4.bb

diff --git a/meta-networking/recipes-support/chrony/chrony/chrony.conf b/meta-networking/recipes-support/chrony/chrony/chrony.conf
new file mode 100644
index 0000000..8d226d3
--- /dev/null
+++ b/meta-networking/recipes-support/chrony/chrony/chrony.conf
@@ -0,0 +1,44 @@
+# Use public NTP servers from the pool.ntp.org project.
+# Please consider joining the pool project if possible by running your own
+# server(s).
+# If you are a vendor distributing a product using chrony, you *MUST*
+# read and comply with http://www.pool.ntp.org/vendors.html
+pool 0.openembedded.pool.ntp.org iburst
+
+# Use a local timeserver in preference to the pool, if it's reachable.
+#server 192.168.22.22 iburst minpoll 2 prefer
+
+# Sync to pulse-per-second from an onboard GPS.
+#refclock PPS /dev/pps0 poll 0 prefer
+# You'll want to enable CONFIG_PPS and CONFIG_PPS_CLIENT_GPIO in your kernel,
+# and an entry something like this in your device tree:
+#	pps {
+#		compatible = "pps-gpio";
+#		gpios = <&ps7_gpio_0 56 0>;
+#	};
+
+# In first three updates step the system clock instead of slew
+# if the adjustment is larger than 1 second.
+makestep 1.0 3
+
+# Record the rate at which the system clock gains/loses time,
+# improving accuracy after reboot
+driftfile /var/lib/chrony/drift
+
+# Enable kernel synchronization of the hardware real-time clock (RTC).
+rtcsync
+
+# Allow NTP client access from local network.
+#allow 192.168/16
+
+# Serve time even if not synchronized to any NTP server.
+#local stratum 10
+
+# Specify file containing keys for NTP authentication.
+#keyfile /etc/chrony.keys
+
+# Specify directory for log files.
+logdir /var/log/chrony
+
+# Select which information is logged.
+#log measurements statistics tracking
diff --git a/meta-networking/recipes-support/chrony/chrony/chronyd b/meta-networking/recipes-support/chrony/chrony/chronyd
new file mode 100644
index 0000000..04f1b68
--- /dev/null
+++ b/meta-networking/recipes-support/chrony/chrony/chronyd
@@ -0,0 +1,58 @@
+#! /bin/sh
+
+# System V init script for chrony
+# Adapted from the script already in meta-networking for ntpd
+
+### BEGIN INIT INFO
+# Provides:        chrony
+# Required-Start:  $network $remote_fs $syslog
+# Required-Stop:   $network $remote_fs $syslog
+# Default-Start:   2 3 4 5
+# Default-Stop:
+# Short-Description: Start chrony time daemon
+### END INIT INFO
+
+PATH=/sbin:/bin:/usr/bin:/usr/sbin
+
+DAEMON=/usr/sbin/chronyd
+PIDFILE=/var/run/chronyd.pid
+
+test -x $DAEMON -a -r /etc/chrony.conf || exit 0
+
+# Source function library.
+. /etc/init.d/functions
+
+# Functions to do individual actions
+startdaemon(){
+	echo -n "Starting chronyd: "
+	start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --startas $DAEMON -- "$@"
+	echo "done"
+}
+stopdaemon(){
+	echo -n "Stopping chronyd: "
+	start-stop-daemon --stop --quiet --oknodo -p $PIDFILE
+	echo "done"
+}
+
+case "$1" in
+  start)
+	startdaemon
+	;;
+  stop)
+  	stopdaemon
+	;;
+  force-reload | restart | reload)
+  	stopdaemon
+	startdaemon
+	;;
+  status)
+	status /usr/sbin/chronyd;
+	exit $?
+	;;
+  *)
+	echo "Usage: chronyd { start | stop | status | restart | reload }" >&2
+	exit 1
+	;;
+esac
+
+exit 0
diff --git a/meta-networking/recipes-support/chrony/chrony_2.4.bb b/meta-networking/recipes-support/chrony/chrony_2.4.bb
new file mode 100644
index 0000000..aa37caa
--- /dev/null
+++ b/meta-networking/recipes-support/chrony/chrony_2.4.bb
@@ -0,0 +1,127 @@
+SUMMARY = "Versatile implementation of the Network Time Protocol"
+DESCRIPTION = "Chrony can synchronize the system clock with NTP \
+servers, reference clocks (e.g. GPS receiver), and manual input using \
+wristwatch and keyboard. It can also operate as an NTPv4 (RFC 5905) \
+server and peer to provide a time service to other computers in the \
+network. \
+\
+It is designed to perform well in a wide range of conditions, \
+including intermittent network connections, heavily congested \
+networks, changing temperatures (ordinary computer clocks are \
+sensitive to temperature), and systems that do not run continuously, or \
+run on a virtual machine. \
+\
+Typical accuracy between two machines on a LAN is in tens, or a few \
+hundreds, of microseconds; over the Internet, accuracy is typically \
+within a few milliseconds. With a good hardware reference clock \
+sub-microsecond accuracy is possible. \
+\
+Two programs are included in chrony: chronyd is a daemon that can be \
+started at boot time and chronyc is a command-line interface program \
+which can be used to monitor chronyd's performance and to change \
+various operating parameters whilst it is running. \
+\
+This recipe produces two binary packages: 'chrony' which contains chronyd, \
+the configuration file and the init script, and 'chronyc' which contains \
+the client program only."
+
+HOMEPAGE = "http://chrony.tuxfamily.org/"
+SECTION = "net"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+SRC_URI = "https://download.tuxfamily.org/chrony/chrony-${PV}.tar.gz \
+	   file://chrony.conf \
+	   file://chronyd"
+SRC_URI[md5sum] = "d0598aa8a9be8faccef9386f6fc0d5f2"
+SRC_URI[sha256sum] = "8d04e7cda2333289c2104b731d39c3c1db94816e43bae35d7ee4e7ae8af6391f"
+
+DEPENDS = "pps-tools"
+
+# Note: Despite being built via './configure; make; make install',
+#       chrony does not use GNU Autotools.
+inherit update-rc.d systemd
+
+# Configuration options:
+# - For command line editing support in chronyc, you may specify either
+#   'editline' or 'readline' but not both.  editline is smaller, but
+#   many systems already have readline for other purposes so you might want
+#   to choose that instead.  However, beware license incompatibility
+#   since chrony is GPLv2 and readline versions after 6.0 are GPLv3+.
+#   You can of course choose neither, but if you're that tight on space
+#   consider dropping chronyc entirely (you can use it remotely with
+#   appropriate chrony.conf options).
+# - Security-related:
+#   - 'sechash' is omitted by default because it pulls in nss which is huge.
+#   - 'privdrop' allows chronyd to run as non-root; would need changes to
+#     chrony.conf and init script.
+#   - 'scfilter' enables support for system call filtering, but requires the
+#     kernel to have CONFIG_SECCOMP enabled.
+PACKAGECONFIG ??= "editline scfilter"
+PACKAGECONFIG[readline] = "--without-editline,--without-readline,readline"
+PACKAGECONFIG[editline] = ",--without-editline,libedit"
+PACKAGECONFIG[sechash] = "--without-tomcrypt,--disable-sechash,nss"
+PACKAGECONFIG[privdrop] = ",--disable-privdrop,libcap"
+PACKAGECONFIG[scfilter] = "--enable-scfilter,--without-seccomp"
+
+# --disable-static isn't supported by chrony's configure script.
+DISABLE_STATIC = ""
+
+do_configure() {
+    ./configure --sysconfdir=${sysconfdir} --bindir=${bindir} --sbindir=${sbindir} \
+                --localstatedir=${localstatedir} --datarootdir=${datadir} \
+                ${EXTRA_OECONF}
+}
+
+do_install() {
+    # Binaries
+    install -d ${D}${bindir}
+    install -m 0755 ${S}/chronyc ${D}${bindir}
+    install -d ${D}${sbindir}
+    install -m 0755 ${S}/chronyd ${D}${sbindir}
+
+    # Config file
+    install -d ${D}${sysconfdir}
+    install -m 644 ${WORKDIR}/chrony.conf ${D}${sysconfdir}
+
+    # System V init script
+    install -d ${D}${sysconfdir}/init.d
+    install -m 755 ${WORKDIR}/chronyd ${D}${sysconfdir}/init.d
+    
+    # systemd unit configuration file
+    install -d ${D}${systemd_unitdir}/system
+    install -m 0644 ${S}/examples/chronyd.service ${D}${systemd_unitdir}/system/
+    
+    # Variable data (for drift and/or rtc file)
+    install -d ${D}${localstatedir}/lib/chrony
+
+    # Log files
+    install -d ${D}${localstatedir}/log/chrony
+
+    # Fix hard-coded paths in config files and init scripts
+    sed -i -e 's!/var/!${localstatedir}/!g' -e 's!/etc/!${sysconfdir}/!g' \
+           -e 's!/usr/sbin/!${sbindir}/!g' -e 's!/usr/bin/!${bindir}/!g' \
+           ${D}${sysconfdir}/chrony.conf \
+           ${D}${sysconfdir}/init.d/chronyd \
+           ${D}${systemd_unitdir}/system/chronyd.service
+    sed -i 's!^PATH=.*!PATH=${base_sbindir}:${base_bindir}:${sbindir}:${bindir}!' ${D}${sysconfdir}/init.d/chronyd
+    sed -i 's!^EnvironmentFile=.*!EnvironmentFile=-${sysconfdir}/default/chronyd!' ${D}${systemd_unitdir}/system/chronyd.service
+}
+
+FILES_${PN} = "${sbindir}/chronyd ${sysconfdir} ${localstatedir}"
+CONFFILES_${PN} = "${sysconfdir}/chrony.conf"
+INITSCRIPT_NAME = "chronyd"
+INITSCRIPT_PARAMS = "defaults"
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE_${PN} = "chronyd.service"
+
+# It's probably a bad idea to run chrony and another time daemon on
+# the same system.  systemd includes the SNTP client 'timesyncd', which
+# will be disabled by chronyd.service, however it will remain on the rootfs
+# wasting 150 kB unless you put 'PACKAGECONFIG_remove_pn-systemd = "timesyncd"'
+# in a conf file or bbappend somewhere.
+RCONFLICTS_${PN} = "ntp ntimed"
+
+# Separate the client program into its own package
+PACKAGES =+ "chronyc"
+FILES_chronyc = "${bindir}/chronyc"
-- 
2.8.1



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [meta-networking][PATCHv3] chrony: Versatile implementation of NTP
  2016-06-15 18:17               ` Henry Hallam
@ 2016-06-15 18:19                 ` Koen Kooi
  0 siblings, 0 replies; 13+ messages in thread
From: Koen Kooi @ 2016-06-15 18:19 UTC (permalink / raw)
  To: Henry Hallam; +Cc: openembedded-devel


> Op 15 jun. 2016, om 20:17 heeft Henry Hallam <henry@kittyhawk.aero> het volgende geschreven:
> 
> From: Henry Hallam <henry@pericynthion.org>
> 
> chrony is an alternative to ntpd.  In particular it may be useful
> for quasi-realtime embedded systems that have a pulse-per-second
> time reference available and need to rapidly synchronize to it after
> boot, which appears to be unachievable with ntpd.
> 
> Signed-off-by: Henry Hallam <henry@pericynthion.org>

Reviewed-by: Koen Kooi <koen@dominion.thruhere.net>

> ---
> .../recipes-support/chrony/chrony/chrony.conf      |  44 +++++++
> .../recipes-support/chrony/chrony/chronyd          |  58 ++++++++++
> .../recipes-support/chrony/chrony_2.4.bb           | 127 +++++++++++++++++++++
> 3 files changed, 229 insertions(+)
> create mode 100644 meta-networking/recipes-support/chrony/chrony/chrony.conf
> create mode 100644 meta-networking/recipes-support/chrony/chrony/chronyd
> create mode 100644 meta-networking/recipes-support/chrony/chrony_2.4.bb
> 
> diff --git a/meta-networking/recipes-support/chrony/chrony/chrony.conf b/meta-networking/recipes-support/chrony/chrony/chrony.conf
> new file mode 100644
> index 0000000..8d226d3
> --- /dev/null
> +++ b/meta-networking/recipes-support/chrony/chrony/chrony.conf
> @@ -0,0 +1,44 @@
> +# Use public NTP servers from the pool.ntp.org project.
> +# Please consider joining the pool project if possible by running your own
> +# server(s).
> +# If you are a vendor distributing a product using chrony, you *MUST*
> +# read and comply with http://www.pool.ntp.org/vendors.html
> +pool 0.openembedded.pool.ntp.org iburst
> +
> +# Use a local timeserver in preference to the pool, if it's reachable.
> +#server 192.168.22.22 iburst minpoll 2 prefer
> +
> +# Sync to pulse-per-second from an onboard GPS.
> +#refclock PPS /dev/pps0 poll 0 prefer
> +# You'll want to enable CONFIG_PPS and CONFIG_PPS_CLIENT_GPIO in your kernel,
> +# and an entry something like this in your device tree:
> +#	pps {
> +#		compatible = "pps-gpio";
> +#		gpios = <&ps7_gpio_0 56 0>;
> +#	};
> +
> +# In first three updates step the system clock instead of slew
> +# if the adjustment is larger than 1 second.
> +makestep 1.0 3
> +
> +# Record the rate at which the system clock gains/loses time,
> +# improving accuracy after reboot
> +driftfile /var/lib/chrony/drift
> +
> +# Enable kernel synchronization of the hardware real-time clock (RTC).
> +rtcsync
> +
> +# Allow NTP client access from local network.
> +#allow 192.168/16
> +
> +# Serve time even if not synchronized to any NTP server.
> +#local stratum 10
> +
> +# Specify file containing keys for NTP authentication.
> +#keyfile /etc/chrony.keys
> +
> +# Specify directory for log files.
> +logdir /var/log/chrony
> +
> +# Select which information is logged.
> +#log measurements statistics tracking
> diff --git a/meta-networking/recipes-support/chrony/chrony/chronyd b/meta-networking/recipes-support/chrony/chrony/chronyd
> new file mode 100644
> index 0000000..04f1b68
> --- /dev/null
> +++ b/meta-networking/recipes-support/chrony/chrony/chronyd
> @@ -0,0 +1,58 @@
> +#! /bin/sh
> +
> +# System V init script for chrony
> +# Adapted from the script already in meta-networking for ntpd
> +
> +### BEGIN INIT INFO
> +# Provides:        chrony
> +# Required-Start:  $network $remote_fs $syslog
> +# Required-Stop:   $network $remote_fs $syslog
> +# Default-Start:   2 3 4 5
> +# Default-Stop:
> +# Short-Description: Start chrony time daemon
> +### END INIT INFO
> +
> +PATH=/sbin:/bin:/usr/bin:/usr/sbin
> +
> +DAEMON=/usr/sbin/chronyd
> +PIDFILE=/var/run/chronyd.pid
> +
> +test -x $DAEMON -a -r /etc/chrony.conf || exit 0
> +
> +# Source function library.
> +. /etc/init.d/functions
> +
> +# Functions to do individual actions
> +startdaemon(){
> +	echo -n "Starting chronyd: "
> +	start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --startas $DAEMON -- "$@"
> +	echo "done"
> +}
> +stopdaemon(){
> +	echo -n "Stopping chronyd: "
> +	start-stop-daemon --stop --quiet --oknodo -p $PIDFILE
> +	echo "done"
> +}
> +
> +case "$1" in
> +  start)
> +	startdaemon
> +	;;
> +  stop)
> +  	stopdaemon
> +	;;
> +  force-reload | restart | reload)
> +  	stopdaemon
> +	startdaemon
> +	;;
> +  status)
> +	status /usr/sbin/chronyd;
> +	exit $?
> +	;;
> +  *)
> +	echo "Usage: chronyd { start | stop | status | restart | reload }" >&2
> +	exit 1
> +	;;
> +esac
> +
> +exit 0
> diff --git a/meta-networking/recipes-support/chrony/chrony_2.4.bb b/meta-networking/recipes-support/chrony/chrony_2.4.bb
> new file mode 100644
> index 0000000..aa37caa
> --- /dev/null
> +++ b/meta-networking/recipes-support/chrony/chrony_2.4.bb
> @@ -0,0 +1,127 @@
> +SUMMARY = "Versatile implementation of the Network Time Protocol"
> +DESCRIPTION = "Chrony can synchronize the system clock with NTP \
> +servers, reference clocks (e.g. GPS receiver), and manual input using \
> +wristwatch and keyboard. It can also operate as an NTPv4 (RFC 5905) \
> +server and peer to provide a time service to other computers in the \
> +network. \
> +\
> +It is designed to perform well in a wide range of conditions, \
> +including intermittent network connections, heavily congested \
> +networks, changing temperatures (ordinary computer clocks are \
> +sensitive to temperature), and systems that do not run continuously, or \
> +run on a virtual machine. \
> +\
> +Typical accuracy between two machines on a LAN is in tens, or a few \
> +hundreds, of microseconds; over the Internet, accuracy is typically \
> +within a few milliseconds. With a good hardware reference clock \
> +sub-microsecond accuracy is possible. \
> +\
> +Two programs are included in chrony: chronyd is a daemon that can be \
> +started at boot time and chronyc is a command-line interface program \
> +which can be used to monitor chronyd's performance and to change \
> +various operating parameters whilst it is running. \
> +\
> +This recipe produces two binary packages: 'chrony' which contains chronyd, \
> +the configuration file and the init script, and 'chronyc' which contains \
> +the client program only."
> +
> +HOMEPAGE = "http://chrony.tuxfamily.org/"
> +SECTION = "net"
> +LICENSE = "GPLv2"
> +LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
> +
> +SRC_URI = "https://download.tuxfamily.org/chrony/chrony-${PV}.tar.gz \
> +	   file://chrony.conf \
> +	   file://chronyd"
> +SRC_URI[md5sum] = "d0598aa8a9be8faccef9386f6fc0d5f2"
> +SRC_URI[sha256sum] = "8d04e7cda2333289c2104b731d39c3c1db94816e43bae35d7ee4e7ae8af6391f"
> +
> +DEPENDS = "pps-tools"
> +
> +# Note: Despite being built via './configure; make; make install',
> +#       chrony does not use GNU Autotools.
> +inherit update-rc.d systemd
> +
> +# Configuration options:
> +# - For command line editing support in chronyc, you may specify either
> +#   'editline' or 'readline' but not both.  editline is smaller, but
> +#   many systems already have readline for other purposes so you might want
> +#   to choose that instead.  However, beware license incompatibility
> +#   since chrony is GPLv2 and readline versions after 6.0 are GPLv3+.
> +#   You can of course choose neither, but if you're that tight on space
> +#   consider dropping chronyc entirely (you can use it remotely with
> +#   appropriate chrony.conf options).
> +# - Security-related:
> +#   - 'sechash' is omitted by default because it pulls in nss which is huge.
> +#   - 'privdrop' allows chronyd to run as non-root; would need changes to
> +#     chrony.conf and init script.
> +#   - 'scfilter' enables support for system call filtering, but requires the
> +#     kernel to have CONFIG_SECCOMP enabled.
> +PACKAGECONFIG ??= "editline scfilter"
> +PACKAGECONFIG[readline] = "--without-editline,--without-readline,readline"
> +PACKAGECONFIG[editline] = ",--without-editline,libedit"
> +PACKAGECONFIG[sechash] = "--without-tomcrypt,--disable-sechash,nss"
> +PACKAGECONFIG[privdrop] = ",--disable-privdrop,libcap"
> +PACKAGECONFIG[scfilter] = "--enable-scfilter,--without-seccomp"
> +
> +# --disable-static isn't supported by chrony's configure script.
> +DISABLE_STATIC = ""
> +
> +do_configure() {
> +    ./configure --sysconfdir=${sysconfdir} --bindir=${bindir} --sbindir=${sbindir} \
> +                --localstatedir=${localstatedir} --datarootdir=${datadir} \
> +                ${EXTRA_OECONF}
> +}
> +
> +do_install() {
> +    # Binaries
> +    install -d ${D}${bindir}
> +    install -m 0755 ${S}/chronyc ${D}${bindir}
> +    install -d ${D}${sbindir}
> +    install -m 0755 ${S}/chronyd ${D}${sbindir}
> +
> +    # Config file
> +    install -d ${D}${sysconfdir}
> +    install -m 644 ${WORKDIR}/chrony.conf ${D}${sysconfdir}
> +
> +    # System V init script
> +    install -d ${D}${sysconfdir}/init.d
> +    install -m 755 ${WORKDIR}/chronyd ${D}${sysconfdir}/init.d
> +    
> +    # systemd unit configuration file
> +    install -d ${D}${systemd_unitdir}/system
> +    install -m 0644 ${S}/examples/chronyd.service ${D}${systemd_unitdir}/system/
> +    
> +    # Variable data (for drift and/or rtc file)
> +    install -d ${D}${localstatedir}/lib/chrony
> +
> +    # Log files
> +    install -d ${D}${localstatedir}/log/chrony
> +
> +    # Fix hard-coded paths in config files and init scripts
> +    sed -i -e 's!/var/!${localstatedir}/!g' -e 's!/etc/!${sysconfdir}/!g' \
> +           -e 's!/usr/sbin/!${sbindir}/!g' -e 's!/usr/bin/!${bindir}/!g' \
> +           ${D}${sysconfdir}/chrony.conf \
> +           ${D}${sysconfdir}/init.d/chronyd \
> +           ${D}${systemd_unitdir}/system/chronyd.service
> +    sed -i 's!^PATH=.*!PATH=${base_sbindir}:${base_bindir}:${sbindir}:${bindir}!' ${D}${sysconfdir}/init.d/chronyd
> +    sed -i 's!^EnvironmentFile=.*!EnvironmentFile=-${sysconfdir}/default/chronyd!' ${D}${systemd_unitdir}/system/chronyd.service
> +}
> +
> +FILES_${PN} = "${sbindir}/chronyd ${sysconfdir} ${localstatedir}"
> +CONFFILES_${PN} = "${sysconfdir}/chrony.conf"
> +INITSCRIPT_NAME = "chronyd"
> +INITSCRIPT_PARAMS = "defaults"
> +SYSTEMD_PACKAGES = "${PN}"
> +SYSTEMD_SERVICE_${PN} = "chronyd.service"
> +
> +# It's probably a bad idea to run chrony and another time daemon on
> +# the same system.  systemd includes the SNTP client 'timesyncd', which
> +# will be disabled by chronyd.service, however it will remain on the rootfs
> +# wasting 150 kB unless you put 'PACKAGECONFIG_remove_pn-systemd = "timesyncd"'
> +# in a conf file or bbappend somewhere.
> +RCONFLICTS_${PN} = "ntp ntimed"
> +
> +# Separate the client program into its own package
> +PACKAGES =+ "chronyc"
> +FILES_chronyc = "${bindir}/chronyc"
> -- 
> 2.8.1
> 



^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2016-06-15 18:19 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-09 19:06 [meta-networking][PATCH] chrony: Versatile implementation of NTP Henry Hallam
2016-06-09 19:14 ` Henry Hallam
2016-06-13 11:03 ` Koen Kooi
2016-06-14 18:29   ` Henry Hallam
2016-06-14 17:33 ` Martin Jansa
2016-06-14 18:42   ` Henry Hallam
2016-06-14 19:40     ` Martin Jansa
2016-06-15  2:12       ` [meta-networking][PATCH v2] " Henry Hallam
2016-06-15  2:12         ` Henry Hallam
2016-06-15  7:11           ` Koen Kooi
2016-06-15 18:17             ` [meta-networking][PATCHv3] " Henry Hallam
2016-06-15 18:17               ` Henry Hallam
2016-06-15 18:19                 ` Koen Kooi

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.