[yocto] ntp recipe not able to install few packages in the rootfs

Khem Raj raj.khem at gmail.com
Mon May 20 13:28:30 PDT 2019



On 5/14/19 2:42 AM, Pandey, Kamal wrote:
> Hi
> I was trying to add ntp package to my image, I used the meta-networking layer for the recipe and added the ntp package to my custom image.bb recipe.
> After compiling I can see multiple packages in package-split directory of the working directory of ntp package, but these binaries are missing in the ROOTFS directory.

You can see below that ntpq is packaged into package of its own. So you 
need to add that to your IMAGE_INSTALL

something like

IMAGE_INSTALL_append = " ntpq"

in your image recipe might help

> Below is my ntp recipe:
> 
> 
> SUMMARY = "Network Time Protocol daemon and utilities"
> 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://support.ntp.org"
> SECTION = "net"
> LICENSE = "NTP"
> LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=e877a1d567a6a58996d2b66e3e387003"
> 
> DEPENDS = "libevent"
> 
> SRC_URI = "http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/ntp-${PV}.tar.gz \
>             file://ntp-4.2.4_p6-nano.patch \
>             file://reproducibility-fixed-path-to-posix-shell.patch \
>             file://reproducibility-respect-source-date-epoch.patch \
>             file://ntpd \
>             file://ntp.conf \
>             file://ntpdate \
>             file://ntpdate.default \
>             file://ntpdate.service \
>             file://ntpd.service \
>             file://sntp.service \
>             file://sntp \
>             file://ntpd.list \
> "
> 
> SRC_URI[md5sum] = "1522d66574bae14abb2622746dad2bdc"
> SRC_URI[sha256sum] = "709b222b5013d77d26bfff532b5ea470a8039497ef29d09363931c036cb30454"
> 
> inherit autotools update-rc.d useradd systemd pkgconfig
> 
> # The ac_cv_header_readline_history is to stop ntpdc depending on either
> # readline or curses
> EXTRA_OECONF += "--with-net-snmp-config=no \
>                   --without-ntpsnmpd \
>                   ac_cv_header_readline_history_h=no \
>                   --with-yielding_select=yes \
>                   --with-locfile=redhat \
>                   --without-rpath \
>                   "
> CFLAGS_append = " -DPTYS_ARE_GETPT -DPTYS_ARE_SEARCHED"
> 
> USERADD_PACKAGES = "${PN}"
> NTP_USER_HOME ?= "/var/lib/ntp"
> USERADD_PARAM_${PN} = "--system --home-dir ${NTP_USER_HOME} \
>                         --no-create-home \
>                         --shell /bin/false --user-group ntp"
> 
> # NB: debug is default-enabled by NTP; keep it default-enabled here.
> PACKAGECONFIG ??= "cap debug refclocks openssl \
>      ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)} \
> "
> PACKAGECONFIG[openssl] = "--with-openssl-libdir=${STAGING_LIBDIR} \
>                            --with-openssl-incdir=${STAGING_INCDIR} \
>                            --with-crypto, \
>                            --without-openssl --without-crypto, \
>                            openssl"
> PACKAGECONFIG[cap] = "--enable-linuxcaps,--disable-linuxcaps,libcap"
> PACKAGECONFIG[readline] = "--with-lineeditlibs,--without-lineeditlibs,readline"
> PACKAGECONFIG[refclocks] = "--enable-all-clocks,--disable-all-clocks,pps-tools"
> PACKAGECONFIG[debug] = "--enable-debugging,--disable-debugging"
> PACKAGECONFIG[mdns] = "ac_cv_header_dns_sd_h=yes,ac_cv_header_dns_sd_h=no,mdns"
> PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
> 
> 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}${bindir}
>      install -m 755 ${WORKDIR}/ntpdate ${D}${bindir}/ntpdate-sync
> 
>      install -m 755 -d ${D}${NTP_USER_HOME}
>      chown ntp:ntp ${D}${NTP_USER_HOME}
> 
>      # Fix hardcoded paths in scripts
>      sed -i 's!/usr/sbin/!${sbindir}/!g' ${D}${sysconfdir}/init.d/ntpd ${D}${bindir}/ntpdate-sync
>      sed -i 's!/usr/bin/!${bindir}/!g' ${D}${sysconfdir}/init.d/ntpd ${D}${bindir}/ntpdate-sync
>      sed -i 's!/etc/!${sysconfdir}/!g' ${D}${sysconfdir}/init.d/ntpd ${D}${bindir}/ntpdate-sync
>      sed -i 's!/var/!${localstatedir}/!g' ${D}${sysconfdir}/init.d/ntpd ${D}${bindir}/ntpdate-sync
>      sed -i 's!^PATH=.*!PATH=${base_sbindir}:${base_bindir}:${sbindir}:${bindir}!' ${D}${bindir}/ntpdate-sync
>      sed -i '1s,#!.*perl -w,#! ${bindir}/env perl,' ${D}${sbindir}/ntptrace
>      sed -i '/use/i use warnings;' ${D}${sbindir}/ntptrace
>      sed -i '1s,#!.*perl,#! ${bindir}/env perl,' ${D}${sbindir}/ntp-wait
>      sed -i '/use/i use warnings;' ${D}${sbindir}/ntp-wait
>      sed -i '1s,#!.*perl -w,#! ${bindir}/env perl,' ${D}${sbindir}/calc_tickadj
>      sed -i '/use/i use warnings;' ${D}${sbindir}/calc_tickadj
> 
>      install -d ${D}/${sysconfdir}/default
>      install -m 644 ${WORKDIR}/ntpdate.default ${D}${sysconfdir}/default/ntpdate
>      install -m 0644 ${WORKDIR}/sntp ${D}${sysconfdir}/default/
> 
>      install -d ${D}/${sysconfdir}/network/if-up.d
>      ln -s ${bindir}/ntpdate-sync ${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/
>      install -m 0644 ${WORKDIR}/sntp.service ${D}${systemd_unitdir}/system/
> 
>      install -d ${D}${systemd_unitdir}/ntp-units.d
>      install -m 0644 ${WORKDIR}/ntpd.list ${D}${systemd_unitdir}/ntp-units.d/60-ntpd.list
> 
>      # Remove an empty libexecdir.
>      rmdir --ignore-fail-on-non-empty ${D}${libexecdir}
> }
> 
> PACKAGES += "ntpdate sntp ntpq ${PN}-tickadj ${PN}-utils"
> # NOTE: you don't need ntpdate, use "ntpd -q -g -x"
> 
> # 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"
> # ntpd require libgcc for execution
> RDEPENDS_${PN} += "libgcc"
> # Handle move from bin to utils package
> RPROVIDES_${PN}-utils = "${PN}-bin"
> RREPLACES_${PN}-utils = "${PN}-bin"
> RCONFLICTS_${PN}-utils = "${PN}-bin"
> # ntpq was split out of ntp-utils
> RDEPENDS_${PN}-utils = "ntpq"
> 
> SYSTEMD_PACKAGES = "${PN} ntpdate sntp"
> SYSTEMD_SERVICE_${PN} = "ntpd.service"
> SYSTEMD_SERVICE_ntpdate = "ntpdate.service"
> SYSTEMD_SERVICE_sntp = "sntp.service"
> SYSTEMD_AUTO_ENABLE_sntp = "disable"
> 
> RPROVIDES_${PN} += "${PN}-systemd"
> RREPLACES_${PN} += "${PN}-systemd"
> RCONFLICTS_${PN} += "${PN}-systemd"
> 
> RPROVIDES_ntpdate += "ntpdate-systemd"
> RREPLACES_ntpdate += "ntpdate-systemd"
> RCONFLICTS_ntpdate += "ntpdate-systemd"
> 
> RSUGGESTS_${PN} = "iana-etc"
> 
> FILES_${PN} = "${sbindir}/ntpd.ntp ${sysconfdir}/ntp.conf ${sysconfdir}/init.d/ntpd ${libdir} \
>      ${NTP_USER_HOME} \
>      ${systemd_unitdir}/ntp-units.d/60-ntpd.list ${libexecdir}\
> "
> FILES_${PN}-tickadj = "${sbindir}/tickadj"
> FILES_${PN}-utils = "${sbindir} ${datadir}/ntp/lib"
> RDEPENDS_${PN}-utils += "perl"
> FILES_ntpdate = "${sbindir}/ntpdate \
>      ${sysconfdir}/network/if-up.d/ntpdate-sync \
>      ${bindir}/ntpdate-sync \
>      ${sysconfdir}/default/ntpdate \
>      ${systemd_unitdir}/system/ntpdate.service \
> "
> FILES_sntp = "${sbindir}/sntp \
>                ${sysconfdir}/default/sntp \
>                ${systemd_unitdir}/system/sntp.service \
>               "
> FILES_ntpq = "${sbindir}/ntpq"
> 
> CONFFILES_${PN} = "${sysconfdir}/ntp.conf"
> CONFFILES_ntpdate = "${sysconfdir}/default/ntpdate"
> 
> INITSCRIPT_NAME = "ntpd"
> # No dependencies, so just go in at the standard level (20)
> INITSCRIPT_PARAMS = "defaults"
> 
> pkg_postinst_ntpdate() {
>      if ! grep -q -s ntpdate $D/var/spool/cron/root; then
>          echo "adding crontab"
>          test -d $D/var/spool/cron || mkdir -p $D/var/spool/cron
>          echo "30 * * * *    ${bindir}/ntpdate-sync silent" >> $D/var/spool/cron/root
>      fi
> }
> 
> inherit update-alternatives
> 
> ALTERNATIVE_PRIORITY = "100"
> 
> ALTERNATIVE_${PN} = "ntpd"
> ALTERNATIVE_LINK_NAME[ntpd] = "${sbindir}/ntpd"
> 
> Now the ntpq package is missing from the rootfile system while its there in package-split and image directory of the ntp app.
> 
> Can anyone tell me what could be the problem.
> Thanks and regards
> Kamal Pandey
> 


More information about the yocto mailing list