[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