From a3c1f025573180c9de3f849d029bef2cf8c310cd Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Fri, 1 Jun 2012 16:44:35 +0200 Subject: [PATCH] import ntp recipe from OE (we need ntpdate) --- recipes-bsp/ntp/files/ntp | 31 +++++++++ recipes-bsp/ntp/files/ntp-4.2.4_p6-nano.patch | 17 +++++ recipes-bsp/ntp/files/ntp.conf | 14 +++++ recipes-bsp/ntp/files/ntpd | 62 ++++++++++++++++++ recipes-bsp/ntp/files/ntpd.service | 11 ++++ recipes-bsp/ntp/files/ntpdate | 49 +++++++++++++++ recipes-bsp/ntp/files/ntpdate.service | 11 ++++ recipes-bsp/ntp/files/tickadj.c.patch | 32 ++++++++++ recipes-bsp/ntp/ntp.inc | 35 +++++++++++ recipes-bsp/ntp/ntp_4.2.6p3.bb | 63 +++++++++++++++++++ 10 files changed, 325 insertions(+) create mode 100644 recipes-bsp/ntp/files/ntp create mode 100644 recipes-bsp/ntp/files/ntp-4.2.4_p6-nano.patch create mode 100644 recipes-bsp/ntp/files/ntp.conf create mode 100644 recipes-bsp/ntp/files/ntpd create mode 100644 recipes-bsp/ntp/files/ntpd.service create mode 100644 recipes-bsp/ntp/files/ntpdate create mode 100644 recipes-bsp/ntp/files/ntpdate.service create mode 100644 recipes-bsp/ntp/files/tickadj.c.patch create mode 100644 recipes-bsp/ntp/ntp.inc create mode 100644 recipes-bsp/ntp/ntp_4.2.6p3.bb diff --git a/recipes-bsp/ntp/files/ntp b/recipes-bsp/ntp/files/ntp new file mode 100644 index 0000000..e91a528 --- /dev/null +++ b/recipes-bsp/ntp/files/ntp @@ -0,0 +1,31 @@ +#! /bin/sh + +FLAGS="defaults 23" + +test -f /usr/bin/ntpd || exit 0 + +case "$1" in + start) + echo -n "Starting NTP server: ntpd" + start-stop-daemon --start --quiet --exec /usr/bin/ntpd + echo "." + ;; + stop) + echo -n "Stopping NTP server: ntpd" + start-stop-daemon --stop --quiet --exec /usr/bin/ntpd + echo "." + ;; + restart|force-reload) + echo -n "Restarting NTP server: ntpd... " + start-stop-daemon --stop --quiet --exec /usr/bin/ntpd + sleep 2 + start-stop-daemon --start --quiet --exec /usr/bin/ntpd + echo "done." + ;; + *) + echo "Usage: /etc/init.d/ntp {start|stop|restart|force-reload}" + exit 1 + ;; +esac + +exit 0 diff --git a/recipes-bsp/ntp/files/ntp-4.2.4_p6-nano.patch b/recipes-bsp/ntp/files/ntp-4.2.4_p6-nano.patch new file mode 100644 index 0000000..cb1e2f7 --- /dev/null +++ b/recipes-bsp/ntp/files/ntp-4.2.4_p6-nano.patch @@ -0,0 +1,17 @@ +--- a/include/ntp_syscall.h.orig 2009-05-19 16:44:55.048156467 -0400 ++++ b/include/ntp_syscall.h 2009-05-19 16:46:19.293323686 -0400 +@@ -14,6 +14,14 @@ + # include + #endif + ++#if defined(ADJ_NANO) && !defined(MOD_NANO) ++#define MOD_NANO ADJ_NANO ++#endif ++ ++#if defined(ADJ_TAI) && !defined(MOD_TAI) ++#define MOD_TAI ADJ_TAI ++#endif ++ + #ifndef NTP_SYSCALLS_LIBC + #ifdef NTP_SYSCALLS_STD + # define ntp_adjtime(t) syscall(SYS_ntp_adjtime, (t)) diff --git a/recipes-bsp/ntp/files/ntp.conf b/recipes-bsp/ntp/files/ntp.conf new file mode 100644 index 0000000..bf52440 --- /dev/null +++ b/recipes-bsp/ntp/files/ntp.conf @@ -0,0 +1,14 @@ +# This is the most basic ntp configuration file +# The driftfile must remain in a place specific to this +# machine - it records the machine specific clock error +driftfile /etc/ntp.drift +# This obtains a random server which will be close +# (in IP terms) to the machine. Add other servers +# as required, or change this. +server pool.ntp.org +# Using local hardware clock as fallback +# Disable this when using ntpd -q -g -x as ntpdate or it will sync to itself +server 127.127.1.0 +fudge 127.127.1.0 stratum 14 +# Defining a default security setting +restrict default diff --git a/recipes-bsp/ntp/files/ntpd b/recipes-bsp/ntp/files/ntpd new file mode 100644 index 0000000..ae50f13 --- /dev/null +++ b/recipes-bsp/ntp/files/ntpd @@ -0,0 +1,62 @@ +#! /bin/sh +# +# ntpd init.d script for ntpdc from ntp.isc.org +test -x /usr/bin/ntpd -a -r /etc/ntp.conf || exit 0 +# rcS contains TICKADJ +test -r /etc/default/rcS && . /etc/default/rcS + +# Functions to do individual actions +settick(){ + # If TICKADJ is set we *must* adjust it before we start, because the + # driftfile relies on the correct setting + test -n "$TICKADJ" -a -x /usr/bin/tickadj && { + echo -n "Setting tick to $TICKADJ: " + /usr/bin/tickadj "$TICKADJ" + echo "done" + } +} +startdaemon(){ + # The -g option allows ntpd to step the time to correct it just + # once. The daemon will exit if the clock drifts too much after + # this. If ntpd seems to disappear after a while assume TICKADJ + # above is set to a totally incorrect value. + echo -n "Starting ntpd: " + start-stop-daemon --start -x /usr/bin/ntpd -- -p /var/run/ntp.pid "$@" + echo "done" +} +stopdaemon(){ + echo -n "Stopping ntpd: " + start-stop-daemon --stop -p /var/run/ntp.pid + echo "done" +} + +case "$1" in + start) + settick + startdaemon -g + ;; + stop) + stopdaemon + ;; + force-reload) + stopdaemon + settick + startdaemon -g + ;; + restart) + # Don't reset the tick here + stopdaemon + startdaemon -g + ;; + reload) + # Must do this by hand, but don't do -g + stopdaemon + startdaemon + ;; + *) + echo "Usage: ntpd { start | stop | restart | reload }" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/recipes-bsp/ntp/files/ntpd.service b/recipes-bsp/ntp/files/ntpd.service new file mode 100644 index 0000000..bd87b1e --- /dev/null +++ b/recipes-bsp/ntp/files/ntpd.service @@ -0,0 +1,11 @@ +[Unit] +Description=Network Time Service +After=network.target + +[Service] +Type=forking +PIDFile=/run/ntpd.pid +ExecStart=/usr/bin/ntpd -p /run/ntpd.pid + +[Install] +WantedBy=multi-user.target diff --git a/recipes-bsp/ntp/files/ntpdate b/recipes-bsp/ntp/files/ntpdate new file mode 100644 index 0000000..784b029 --- /dev/null +++ b/recipes-bsp/ntp/files/ntpdate @@ -0,0 +1,49 @@ +#!/bin/sh + +PATH=/sbin:/bin:/usr/bin + +test -x /usr/bin/ntpdate || exit 0 + +if test -f /etc/default/ntpdate ; then +. /etc/default/ntpdate +else +NTPSERVERS="pool.ntp.org" +fi + +test -n "$NTPSERVERS" || exit 0 + +# This is a heuristic: The idea is that if a static interface is brought +# up, that is a major event, and we can put in some extra effort to fix +# the system time. Feel free to change this, especially if you regularly +# bring up new network interfaces. +if [ "$METHOD" = static ]; then + OPTS="-b" +fi + +if [ "$METHOD" = loopback ]; then + exit 0 +fi + +( + +LOCKFILE=/var/lock/ntpdate + +# Avoid running more than one at a time +if [ -x /usr/bin/lockfile-create ]; then + lockfile-create $LOCKFILE + lockfile-touch $LOCKFILE & + LOCKTOUCHPID="$!" +fi + +if /usr/bin/ntpdate -s $OPTS $NTPSERVERS 2>/dev/null; then + if [ "$UPDATE_HWCLOCK" = "yes" ]; then + hwclock --systohc || : + fi +fi + +if [ -x /usr/bin/lockfile-create ] ; then + kill $LOCKTOUCHPID + lockfile-remove $LOCKFILE +fi + +) & diff --git a/recipes-bsp/ntp/files/ntpdate.service b/recipes-bsp/ntp/files/ntpdate.service new file mode 100644 index 0000000..b2bc632 --- /dev/null +++ b/recipes-bsp/ntp/files/ntpdate.service @@ -0,0 +1,11 @@ +[Unit] +Description=Network Time Service (one-shot ntpdate mode) +Before=ntpd.service + +[Service] +Type=oneshot +ExecStart=/usr/bin/ntpd -q -g -x +RemainAfterExit=yes + +[Install] +WantedBy=multi-user.target diff --git a/recipes-bsp/ntp/files/tickadj.c.patch b/recipes-bsp/ntp/files/tickadj.c.patch new file mode 100644 index 0000000..9ef9de9 --- /dev/null +++ b/recipes-bsp/ntp/files/tickadj.c.patch @@ -0,0 +1,32 @@ +Index: ntp-4.2.2p3-r0/ntp-4.2.2p3/util/tickadj.c +=================================================================== +--- ntp-4.2.2p3/util/tickadj.c 2004-02-25 06:58:33.000000000 +0100 ++++ ntp-4.2.2p3/util/tickadj.c 2007-07-07 01:00:54.000000000 +0200 +@@ -21,7 +21,8 @@ + # include + #endif /* HAVE_UNISTD_H */ + +-#ifdef HAVE___ADJTIMEX /* Linux */ ++/* proper handling here has been moved to upstream ntp bugzilla */ ++#ifdef linux + + #include + struct timex txc; +@@ -91,7 +92,7 @@ + } + + if (!errflg) { +- if (__adjtimex(&txc) < 0) ++ if (adjtimex(&txc) < 0) + perror("adjtimex"); + else if (!quiet) + printf("tick = %ld\ntick_adj = %d\n", +@@ -146,7 +147,7 @@ + #endif + } + +- if (__adjtimex(&txc) < 0) ++ if (adjtimex(&txc) < 0) + { + perror("adjtimex"); + } diff --git a/recipes-bsp/ntp/ntp.inc b/recipes-bsp/ntp/ntp.inc new file mode 100644 index 0000000..1d740f0 --- /dev/null +++ b/recipes-bsp/ntp/ntp.inc @@ -0,0 +1,35 @@ +DESCRIPTION = "The Network Time Protocol (NTP) is used to \ +synchronize the time of a computer client or server to \ +another server or reference time source, such as a radio \ +or satellite receiver or modem." +HOMEPAGE = "http://ntp.isc.org/bin/view/Main/WebHome" +SECTION = "console/network" +LICENSE = "ntp" +LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=fea4b50c33b18c2194b4b1c9ca512670" +RSUGGESTS_${PN} = "iana-etc" + +SRC_URI = "http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/${P}.tar.gz \ + file://ipv6only-workaround.patch \ + file://ntpd \ + file://ntp.conf \ + file://ntpdate \ + file://ntpd.service \ +" + +inherit autotools update-rc.d + +INITSCRIPT_NAME = "ntpd" +# No dependencies, so just go in at the standard level (20) +INITSCRIPT_PARAMS = "defaults" + +# The ac_cv_header_readline_history is to stop ntpdc depending on either +# readline or curses +EXTRA_OECONF = "--without-openssl --without-crypto ac_cv_header_readline_history_h=no" +CFLAGS_append = " -DPTYS_ARE_GETPT -DPTYS_ARE_SEARCHED" + +PACKAGES += "ntpdate ${PN}-bin ${PN}-tickadj ${PN}-utils" +# NOTE: you don't need ntpdate, use "ntpd -q -g -x" +# or the ntpdate systemd service + +# This should use rc.update +FILES_ntpdate = "${bindir}/ntpdate ${sysconfdir}/init.d/ntpdate" diff --git a/recipes-bsp/ntp/ntp_4.2.6p3.bb b/recipes-bsp/ntp/ntp_4.2.6p3.bb new file mode 100644 index 0000000..487a28c --- /dev/null +++ b/recipes-bsp/ntp/ntp_4.2.6p3.bb @@ -0,0 +1,63 @@ +require ntp.inc + +PR = "r5" + +#inherit systemd + +#SYSTEMD_PACKAGES = "${PN}-systemd" +#SYSTEMD_SERVICE_${PN}-systemd = "ntpd.service" + +SRC_URI = "http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/${P}.tar.gz \ + file://tickadj.c.patch \ + file://ntp-4.2.4_p6-nano.patch \ + file://ntpd \ + file://ntp.conf \ + file://ntpdate \ + file://ntpdate.service \ + file://ntpd.service \ +" + +SRC_URI[md5sum] = "59876a9009b098ff59767ee45a88ebd2" +SRC_URI[sha256sum] = "6e84d4ddfa14b911c3ed88463af10867e1fa9b287e7b34d8a02e78be85a7c40e" + +EXTRA_OECONF += " --with-net-snmp-config=no --without-ntpsnmpd" + +do_install_append() { + install -d ${D}/${sysconfdir}/init.d + install -m 644 ${WORKDIR}/ntp.conf ${D}/${sysconfdir} + install -m 755 ${WORKDIR}/ntpd ${D}/${sysconfdir}/init.d + install -d ${D}/${sysconfdir}/network/if-up.d + install -m 755 ${WORKDIR}/ntpdate ${D}/${sysconfdir}/network/if-up.d + + #install -d ${D}${systemd_unitdir}/system + #install -m 0644 ${WORKDIR}/ntpdate.service ${D}${systemd_unitdir}/system/ + #install -m 0644 ${WORKDIR}/ntpd.service ${D}${systemd_unitdir}/system/ +} + +#PACKAGES =+ "${PN}-systemd" + +#FILES_${PN}-systemd = "${systemd_unitdir}/system/" +#RDEPENDS_${PN}-systemd = "${PN}" + +FILES_${PN}-bin = "${bindir}/ntp-wait ${bindir}/ntpdc ${bindir}/ntpq ${bindir}/ntptime ${bindir}/ntptrace" +FILES_${PN} = "${bindir}/ntpd ${sysconfdir}/ntp.conf ${sysconfdir}/init.d/ntpd" +FILES_${PN}-tickadj = "${bindir}/tickadj" +FILES_ntp-utils = "${bindir}/*" +FILES_ntpdate = "${bindir}/ntpdate ${sysconfdir}/network/if-up.d/ntpdate" + +# ntp originally includes tickadj. It's split off for inclusion in small firmware images on platforms +# with wonky clocks (e.g. OpenSlug) +RDEPENDS_${PN} = "${PN}-tickadj" + +pkg_postinst_ntpdate() { +if test "x$D" != "x"; then + exit 1 +else + if ! grep -q -s ntpdate /var/spool/cron/root; then + echo "adding crontab" + test -d /var/spool/cron || mkdir -p /var/spool/cron + echo "30 * * * * /usr/bin/ntpdate -b -s -u pool.ntp.org" >> /var/spool/cron/root + fi +fi +} +