[oe] [meta-networking][PATCH v2] chrony: Versatile implementation of NTP
Koen Kooi
koen at dominion.thruhere.net
Wed Jun 15 07:11:47 UTC 2016
> Op 15 jun. 2016, om 04:12 heeft Henry Hallam <henry at kittyhawk.aero> het volgende geschreven:
>
> From: Henry Hallam <henry at 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
>
More information about the Openembedded-devel
mailing list