* Move the hwclock.sh initscript from the busybox recipe to util-linux. This script is generally useful for distros that get their hwclock implementation from sources other than busybox and we follow debian's example by providing it in util-linux.
:busybox/* * Remove the busybox-hwclock package, as it no longer has a purpose. * If busybox is configured to include hwclock, the busybox package will RDEPEND on util-linux-hwclock-init. :util-linux/* * Add util-linux-hwclock-init as its own recipe so that distros which exclusively use busybox do not have to build the entire util-linux recipe to get the hwclock.sh initscript. * Provide the hwclock.sh script in util-linux-hwclock-init, which can be pulled by any packages that depend on its functionality. * util-linux-hwclock RDEPENDS on util-linux-hwclock-init for its initscript. Signed-off-by: Alex Stewart <alex.stew...@ni.com> --- meta/recipes-core/busybox/busybox.inc | 16 +++-- meta/recipes-core/busybox/busybox_1.27.2.bb | 1 - meta/recipes-core/busybox/files/hwclock.sh | 83 ---------------------- .../util-linux/util-linux-hwclock-init_1.0.bb | 33 +++++++++ meta/recipes-core/util-linux/util-linux.inc | 1 + meta/recipes-core/util-linux/util-linux/hwclock.sh | 83 ++++++++++++++++++++++ 6 files changed, 126 insertions(+), 91 deletions(-) delete mode 100644 meta/recipes-core/busybox/files/hwclock.sh create mode 100644 meta/recipes-core/util-linux/util-linux-hwclock-init_1.0.bb create mode 100644 meta/recipes-core/util-linux/util-linux/hwclock.sh diff --git a/meta/recipes-core/busybox/busybox.inc b/meta/recipes-core/busybox/busybox.inc index 4012f921c6..d9c3c2793b 100644 --- a/meta/recipes-core/busybox/busybox.inc +++ b/meta/recipes-core/busybox/busybox.inc @@ -20,19 +20,17 @@ export EXTRA_LDFLAGS = "${LDFLAGS}" EXTRA_OEMAKE = "CC='${CC}' LD='${CCLD}' V=1 ARCH=${TARGET_ARCH} CROSS_COMPILE=${TARGET_PREFIX} SKIP_STRIP=y HOSTCC='${BUILD_CC}' HOSTCPP='${BUILD_CPP}'" -PACKAGES =+ "${PN}-httpd ${PN}-udhcpd ${PN}-udhcpc ${PN}-syslog ${PN}-mdev ${PN}-hwclock" +PACKAGES =+ "${PN}-httpd ${PN}-udhcpd ${PN}-udhcpc ${PN}-syslog ${PN}-mdev" FILES_${PN}-httpd = "${sysconfdir}/init.d/busybox-httpd /srv/www" FILES_${PN}-syslog = "${sysconfdir}/init.d/syslog* ${sysconfdir}/syslog-startup.conf* ${sysconfdir}/syslog.conf* ${systemd_unitdir}/system/syslog.service ${sysconfdir}/default/busybox-syslog" FILES_${PN}-mdev = "${sysconfdir}/init.d/mdev ${sysconfdir}/mdev.conf ${sysconfdir}/mdev/*" FILES_${PN}-udhcpd = "${sysconfdir}/init.d/busybox-udhcpd" FILES_${PN}-udhcpc = "${sysconfdir}/udhcpc.d ${datadir}/udhcpc" -FILES_${PN}-hwclock = "${sysconfdir}/init.d/hwclock.sh" -INITSCRIPT_PACKAGES = "${PN}-httpd ${PN}-syslog ${PN}-udhcpd ${PN}-mdev ${PN}-hwclock" +INITSCRIPT_PACKAGES = "${PN}-httpd ${PN}-syslog ${PN}-udhcpd ${PN}-mdev" INITSCRIPT_NAME_${PN}-httpd = "busybox-httpd" -INITSCRIPT_NAME_${PN}-hwclock = "hwclock.sh" INITSCRIPT_NAME_${PN}-mdev = "mdev" INITSCRIPT_PARAMS_${PN}-mdev = "start 04 S ." INITSCRIPT_NAME_${PN}-syslog = "syslog" @@ -276,9 +274,6 @@ do_install () { if grep "CONFIG_UDHCPD=y" ${B}/.config; then install -m 0755 ${WORKDIR}/busybox-udhcpd ${D}${sysconfdir}/init.d/ fi - if grep "CONFIG_HWCLOCK=y" ${B}/.config; then - install -m 0755 ${WORKDIR}/hwclock.sh ${D}${sysconfdir}/init.d/ - fi if grep "CONFIG_UDHCPC=y" ${B}/.config; then install -d ${D}${sysconfdir}/udhcpc.d install -d ${D}${datadir}/udhcpc @@ -377,6 +372,13 @@ python do_package_prepend () { else: set_alternative_vars("${sysconfdir}/busybox.links.nosuid", "${base_bindir}/busybox.nosuid") set_alternative_vars("${sysconfdir}/busybox.links.suid", "${base_bindir}/busybox.suid") + + # If busybox is configured to provide a hwclock implementation, add a + # package dependency on util-linux-hwclock-init for the + # /etc/init.d/hwclock.sh initscript. + with open(d.getVar('B', expand=True) + '/.config', 'r') as fp_conf: + if 'CONFIG_HWCLOCK=y' in fp_conf.read(): + d.appendVar('RDEPENDS_busybox', ' util-linux-hwclock-init ') } pkg_postinst_${PN} () { diff --git a/meta/recipes-core/busybox/busybox_1.27.2.bb b/meta/recipes-core/busybox/busybox_1.27.2.bb index 6c1f4888cf..af2abadc5e 100644 --- a/meta/recipes-core/busybox/busybox_1.27.2.bb +++ b/meta/recipes-core/busybox/busybox_1.27.2.bb @@ -8,7 +8,6 @@ SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.bz2;name=tarball \ file://busybox-udhcpd \ file://default.script \ file://simple.script \ - file://hwclock.sh \ file://mount.busybox \ file://syslog \ file://syslog-startup.conf \ diff --git a/meta/recipes-core/busybox/files/hwclock.sh b/meta/recipes-core/busybox/files/hwclock.sh deleted file mode 100644 index be5f94d86c..0000000000 --- a/meta/recipes-core/busybox/files/hwclock.sh +++ /dev/null @@ -1,83 +0,0 @@ -#!/bin/sh -### BEGIN INIT INFO -# Provides: hwclock -# Required-Start: -# Required-Stop: $local_fs -# Default-Start: S -# Default-Stop: 0 6 -# Short-Description: Set system clock -# Description: Set system clock to hardware clock, according to the UTC -# setting in /etc/default/rcS (see also rcS(5)). -### END INIT INFO -# -# WARNING: If your hardware clock is not in UTC/GMT, this script -# must know the local time zone. This information is -# stored in /etc/localtime. This might be a problem if -# your /etc/localtime is a symlink to something in -# /usr/share/zoneinfo AND /usr isn't in the root -# partition! The workaround is to define TZ either -# in /etc/default/rcS, or in the proper place below. - -[ ! -x /sbin/hwclock ] && exit 0 - -[ -f /etc/default/rcS ] && . /etc/default/rcS - -[ "$UTC" = "yes" ] && tz="--utc" || tz="--localtime" -case "$1" in - start) - if [ "$VERBOSE" != no ] - then - echo "System time was `date`." - echo "Setting the System Clock using the Hardware Clock as reference..." - fi - - if [ "$HWCLOCKACCESS" != no ] - then - if [ -z "$TZ" ] - then - hwclock $tz --hctosys - else - TZ="$TZ" hwclock $tz --hctosys - fi - fi - - if [ "$VERBOSE" != no ] - then - echo "System Clock set. System local time is now `date`." - fi - ;; - stop|restart|reload|force-reload) - # - # Updates the Hardware Clock with the System Clock time. - # This will *override* any changes made to the Hardware Clock. - # - # WARNING: If you disable this, any changes to the system - # clock will not be carried across reboots. - # - if [ "$VERBOSE" != no ] - then - echo "Saving the System Clock time to the Hardware Clock..." - fi - if [ "$HWCLOCKACCESS" != no ] - then - hwclock $tz --systohc - fi - if [ "$VERBOSE" != no ] - then - echo "Hardware Clock updated to `date`." - fi - exit 0 - ;; - show) - if [ "$HWCLOCKACCESS" != no ] - then - hwclock $tz --show - fi - ;; - *) - echo "Usage: hwclock.sh {start|stop|show|reload|restart}" >&2 - echo " start sets kernel (system) clock from hardware (RTC) clock" >&2 - echo " stop and reload set hardware (RTC) clock from kernel (system) clock" >&2 - exit 1 - ;; -esac diff --git a/meta/recipes-core/util-linux/util-linux-hwclock-init_1.0.bb b/meta/recipes-core/util-linux/util-linux-hwclock-init_1.0.bb new file mode 100644 index 0000000000..f53d95db26 --- /dev/null +++ b/meta/recipes-core/util-linux/util-linux-hwclock-init_1.0.bb @@ -0,0 +1,33 @@ +SUMMARY = "Initscript for hwclock utility" +DESCRIPTION = "\ +Installs an initscript that updates the system clock based on the available \ +hwclock implementation." + +SECTION = "base" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" + +FILESEXTRAPATHS_prepend = "${THISDIR}/util-linux:" + +SRC_URI = "file://hwclock.sh" + +S = "${WORKDIR}" + +inherit update-rc.d + +INITSCRIPT_PACKAGES = "${PN}" + +INITSCRIPT_NAME_${PN} = "hwclock.sh" +INITSCRIPT_PARAMS_${PN} = "defaults" + +do_install () { + install -d ${D}${sysconfdir}/init.d + install -m 0755 ${WORKDIR}/hwclock.sh ${D}${sysconfdir}/init.d/ +} + +PACKAGES = "${PN}" + +PACKAGE_ARCH = "all" + +FILES_${PN} = "${sysconfdir}/init.d/hwclock.sh" diff --git a/meta/recipes-core/util-linux/util-linux.inc b/meta/recipes-core/util-linux/util-linux.inc index 248e8bee95..9fc83e701c 100644 --- a/meta/recipes-core/util-linux/util-linux.inc +++ b/meta/recipes-core/util-linux/util-linux.inc @@ -300,6 +300,7 @@ python populate_packages_prepend() { } RDEPENDS_${PN}-bash-completion += "util-linux-lsblk" +RDEPENDS_${PN}-hwclock += "util-linux-hwclock-init" RDEPENDS_${PN}-ptest = "bash grep coreutils which util-linux-blkid util-linux-fsck btrfs-tools" do_compile_ptest() { diff --git a/meta/recipes-core/util-linux/util-linux/hwclock.sh b/meta/recipes-core/util-linux/util-linux/hwclock.sh new file mode 100644 index 0000000000..be5f94d86c --- /dev/null +++ b/meta/recipes-core/util-linux/util-linux/hwclock.sh @@ -0,0 +1,83 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: hwclock +# Required-Start: +# Required-Stop: $local_fs +# Default-Start: S +# Default-Stop: 0 6 +# Short-Description: Set system clock +# Description: Set system clock to hardware clock, according to the UTC +# setting in /etc/default/rcS (see also rcS(5)). +### END INIT INFO +# +# WARNING: If your hardware clock is not in UTC/GMT, this script +# must know the local time zone. This information is +# stored in /etc/localtime. This might be a problem if +# your /etc/localtime is a symlink to something in +# /usr/share/zoneinfo AND /usr isn't in the root +# partition! The workaround is to define TZ either +# in /etc/default/rcS, or in the proper place below. + +[ ! -x /sbin/hwclock ] && exit 0 + +[ -f /etc/default/rcS ] && . /etc/default/rcS + +[ "$UTC" = "yes" ] && tz="--utc" || tz="--localtime" +case "$1" in + start) + if [ "$VERBOSE" != no ] + then + echo "System time was `date`." + echo "Setting the System Clock using the Hardware Clock as reference..." + fi + + if [ "$HWCLOCKACCESS" != no ] + then + if [ -z "$TZ" ] + then + hwclock $tz --hctosys + else + TZ="$TZ" hwclock $tz --hctosys + fi + fi + + if [ "$VERBOSE" != no ] + then + echo "System Clock set. System local time is now `date`." + fi + ;; + stop|restart|reload|force-reload) + # + # Updates the Hardware Clock with the System Clock time. + # This will *override* any changes made to the Hardware Clock. + # + # WARNING: If you disable this, any changes to the system + # clock will not be carried across reboots. + # + if [ "$VERBOSE" != no ] + then + echo "Saving the System Clock time to the Hardware Clock..." + fi + if [ "$HWCLOCKACCESS" != no ] + then + hwclock $tz --systohc + fi + if [ "$VERBOSE" != no ] + then + echo "Hardware Clock updated to `date`." + fi + exit 0 + ;; + show) + if [ "$HWCLOCKACCESS" != no ] + then + hwclock $tz --show + fi + ;; + *) + echo "Usage: hwclock.sh {start|stop|show|reload|restart}" >&2 + echo " start sets kernel (system) clock from hardware (RTC) clock" >&2 + echo " stop and reload set hardware (RTC) clock from kernel (system) clock" >&2 + exit 1 + ;; +esac -- 2.11.0 -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core