diff options
Diffstat (limited to 'meta/recipes-core/busybox/busybox.inc')
-rw-r--r-- | meta/recipes-core/busybox/busybox.inc | 183 |
1 files changed, 92 insertions, 91 deletions
diff --git a/meta/recipes-core/busybox/busybox.inc b/meta/recipes-core/busybox/busybox.inc index 6cfdcd7344..67a9111e5b 100644 --- a/meta/recipes-core/busybox/busybox.inc +++ b/meta/recipes-core/busybox/busybox.inc @@ -5,10 +5,11 @@ BUGTRACKER = "https://bugs.busybox.net/" DEPENDS += "kern-tools-native virtual/crypt" -# bzip2 applet in busybox is based on lightly-modified bzip2 source +# bzip2 applet in busybox is based on lightly-modified bzip2-1.0.4 source # the GPL is version 2 only -LICENSE = "GPLv2 & bzip2-1.0.6" -LIC_FILES_CHKSUM = "file://LICENSE;md5=de10de48642ab74318e893a61105afbb" +LICENSE = "GPL-2.0-only & bzip2-1.0.4" +LIC_FILES_CHKSUM = "file://LICENSE;md5=de10de48642ab74318e893a61105afbb \ + file://archival/libarchive/bz/LICENSE;md5=28e3301eae987e8cfe19988e98383dae" SECTION = "base" @@ -22,39 +23,40 @@ EXTRA_OEMAKE = "CC='${CC}' LD='${CCLD}' V=1 ARCH=${TARGET_ARCH} CROSS_COMPILE=${ PACKAGES =+ "${PN}-httpd ${PN}-udhcpd ${PN}-udhcpc ${PN}-syslog ${PN}-mdev ${PN}-hwclock" -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" +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_system_unitdir}/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_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" -INITSCRIPT_NAME_${PN}-udhcpd = "busybox-udhcpd" +INITSCRIPT_NAME:${PN}-httpd = "busybox-httpd" +INITSCRIPT_NAME:${PN}-hwclock = "hwclock.sh" +INITSCRIPT_PARAMS:${PN}-hwclock = "start 40 S . stop 20 0 1 6 ." +INITSCRIPT_NAME:${PN}-mdev = "mdev" +INITSCRIPT_PARAMS:${PN}-mdev = "start 04 S ." +INITSCRIPT_NAME:${PN}-syslog = "syslog" +INITSCRIPT_NAME:${PN}-udhcpd = "busybox-udhcpd" SYSTEMD_PACKAGES = "${PN}-syslog" -SYSTEMD_SERVICE_${PN}-syslog = "${@bb.utils.contains('SRC_URI', 'file://syslog.cfg', 'busybox-syslog.service', '', d)}" +SYSTEMD_SERVICE:${PN}-syslog = "${@bb.utils.contains('SRC_URI', 'file://syslog.cfg', 'busybox-syslog.service', '', d)}" -RDEPENDS_${PN}-syslog = "busybox" -CONFFILES_${PN}-syslog = "${sysconfdir}/syslog-startup.conf" -RCONFLICTS_${PN}-syslog = "rsyslog sysklogd syslog-ng" +RDEPENDS:${PN}-syslog = "busybox" +CONFFILES:${PN}-syslog = "${sysconfdir}/syslog-startup.conf" +RCONFLICTS:${PN}-syslog = "rsyslog sysklogd syslog-ng" -CONFFILES_${PN}-mdev = "${sysconfdir}/mdev.conf" +CONFFILES:${PN}-mdev = "${sysconfdir}/mdev.conf" -RRECOMMENDS_${PN} = "${PN}-udhcpc" +RRECOMMENDS:${PN} = "${PN}-udhcpc" -RDEPENDS_${PN} = "${@["", "busybox-inittab"][(d.getVar('VIRTUAL-RUNTIME_init_manager') == 'busybox')]}" +RDEPENDS:${PN} = "${@["", "busybox-inittab"][(d.getVar('VIRTUAL-RUNTIME_init_manager') == 'busybox')]}" inherit cml1 systemd update-rc.d ptest # busybox's unzip test case needs zip command, which busybox itself does not provide -RDEPENDS_${PN}-ptest = "zip" +RDEPENDS:${PN}-ptest = "zip" # internal helper def busybox_cfg(feature, tokens, cnf, rem): @@ -96,12 +98,12 @@ DO_IPv6 := "${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 1, 0, d)}" python () { if "${OE_DEL}": - d.setVar('configmangle_append', "${OE_DEL}" + "\n") + d.setVar('configmangle:append', "${OE_DEL}" + "\n") if "${OE_FEATURES}": - d.setVar('configmangle_append', + d.setVar('configmangle:append', "/^### DISTRO FEATURES$/a\\\n%s\n\n" % ("\\n".join((d.expand("${OE_FEATURES}").split("\n"))))) - d.setVar('configmangle_append', + d.setVar('configmangle:append', "/^### CROSS$/a\\\n%s\n" % ("\\n".join(["CONFIG_EXTRA_CFLAGS=\"${CFLAGS} ${HOST_CC_ARCH}\"" ]) @@ -109,11 +111,10 @@ python () { } do_prepare_config () { - if [ "${BUILD_REPRODUCIBLE_BINARIES}" = "1" ]; then - export KCONFIG_NOTIMESTAMP=1 - fi + export KCONFIG_NOTIMESTAMP=1 + sed -e '/CONFIG_STATIC/d' \ - < ${WORKDIR}/defconfig > ${S}/.config + < ${UNPACKDIR}/defconfig > ${S}/.config echo "# CONFIG_STATIC is not set" >> .config for i in 'CROSS' 'DISTRO FEATURES'; do echo "### $i"; done >> \ ${S}/.config @@ -133,35 +134,31 @@ do_prepare_config () { fi } -# returns all the elements from the src uri that are .cfg files -def find_cfgs(d): - sources=src_patches(d, True) - sources_list=[] - for s in sources: - if s.endswith('.cfg'): - sources_list.append(s) - - return sources_list - do_configure () { set -x do_prepare_config merge_config.sh -m .config ${@" ".join(find_cfgs(d))} cml1_do_configure + + # Save a copy of .config and autoconf.h. + cp .config .config.orig + cp include/autoconf.h include/autoconf.h.orig } do_compile() { unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS - if [ "${BUILD_REPRODUCIBLE_BINARIES}" = "1" ]; then - export KCONFIG_NOTIMESTAMP=1 - fi + export KCONFIG_NOTIMESTAMP=1 + + # Ensure we start do_compile with the original .config and autoconf.h. + # These files should always have matching timestamps. + cp .config.orig .config + cp include/autoconf.h.orig include/autoconf.h + if [ "${BUSYBOX_SPLIT_SUID}" = "1" -a x`grep "CONFIG_FEATURE_INDIVIDUAL=y" .config` = x ]; then + # Guard againt interrupted do_compile: clean temporary files. + rm -f .config.app.suid .config.app.nosuid .config.disable.apps .config.nonapps + # split the .config into two parts, and make two busybox binaries - if [ -e .config.orig ]; then - # Need to guard again an interrupted do_compile - restore any backup - cp .config.orig .config - fi - cp .config .config.orig oe_runmake busybox.cfg.suid oe_runmake busybox.cfg.nosuid @@ -198,15 +195,18 @@ do_compile() { bbfatal "busybox suid binary incorrectly provides /bin/sh" fi - # copy .config.orig back to .config, because the install process may check this file - cp .config.orig .config # cleanup - rm .config.orig .config.app.suid .config.app.nosuid .config.disable.apps .config.nonapps + rm .config.app.suid .config.app.nosuid .config.disable.apps .config.nonapps else oe_runmake busybox_unstripped cp busybox_unstripped busybox oe_runmake busybox.links fi + + # restore original .config and autoconf.h, because the install process + # may check these files + cp .config.orig .config + cp include/autoconf.h.orig include/autoconf.h } do_install () { @@ -280,66 +280,67 @@ do_install () { fi if grep -q "CONFIG_SYSLOGD=y" ${B}/.config; then - install -m 0755 ${WORKDIR}/syslog ${D}${sysconfdir}/init.d/syslog - install -m 644 ${WORKDIR}/syslog-startup.conf ${D}${sysconfdir}/syslog-startup.conf - install -m 644 ${WORKDIR}/syslog.conf ${D}${sysconfdir}/syslog.conf + install -m 0755 ${UNPACKDIR}/syslog ${D}${sysconfdir}/init.d/syslog + install -m 644 ${UNPACKDIR}/syslog-startup.conf ${D}${sysconfdir}/syslog-startup.conf + install -m 644 ${UNPACKDIR}/syslog.conf ${D}${sysconfdir}/syslog.conf fi if grep -q "CONFIG_CROND=y" ${B}/.config; then - install -m 0755 ${WORKDIR}/busybox-cron ${D}${sysconfdir}/init.d/ + install -m 0755 ${UNPACKDIR}/busybox-cron ${D}${sysconfdir}/init.d/ fi if grep -q "CONFIG_HTTPD=y" ${B}/.config; then - install -m 0755 ${WORKDIR}/busybox-httpd ${D}${sysconfdir}/init.d/ + install -m 0755 ${UNPACKDIR}/busybox-httpd ${D}${sysconfdir}/init.d/ install -d ${D}/srv/www fi if grep -q "CONFIG_UDHCPD=y" ${B}/.config; then - install -m 0755 ${WORKDIR}/busybox-udhcpd ${D}${sysconfdir}/init.d/ + install -m 0755 ${UNPACKDIR}/busybox-udhcpd ${D}${sysconfdir}/init.d/ fi if grep -q "CONFIG_HWCLOCK=y" ${B}/.config; then - install -m 0755 ${WORKDIR}/hwclock.sh ${D}${sysconfdir}/init.d/ + install -m 0755 ${UNPACKDIR}/hwclock.sh ${D}${sysconfdir}/init.d/ fi if grep -q "CONFIG_UDHCPC=y" ${B}/.config; then install -d ${D}${sysconfdir}/udhcpc.d install -d ${D}${datadir}/udhcpc - install -m 0755 ${WORKDIR}/simple.script ${D}${sysconfdir}/udhcpc.d/50default + install -m 0755 ${UNPACKDIR}/simple.script ${D}${sysconfdir}/udhcpc.d/50default sed -i "s:/SBIN_DIR/:${base_sbindir}/:" ${D}${sysconfdir}/udhcpc.d/50default - install -m 0755 ${WORKDIR}/default.script ${D}${datadir}/udhcpc/default.script + install -m 0755 ${UNPACKDIR}/default.script ${D}${datadir}/udhcpc/default.script fi if grep -q "CONFIG_INETD=y" ${B}/.config; then - install -m 0755 ${WORKDIR}/inetd ${D}${sysconfdir}/init.d/inetd.${BPN} + install -m 0755 ${UNPACKDIR}/inetd ${D}${sysconfdir}/init.d/inetd.${BPN} sed -i "s:/usr/sbin/:${sbindir}/:" ${D}${sysconfdir}/init.d/inetd.${BPN} - install -m 0644 ${WORKDIR}/inetd.conf ${D}${sysconfdir}/ + install -m 0644 ${UNPACKDIR}/inetd.conf ${D}${sysconfdir}/ fi if grep -q "CONFIG_MDEV=y" ${B}/.config; then - install -m 0755 ${WORKDIR}/mdev ${D}${sysconfdir}/init.d/mdev + install -m 0755 ${UNPACKDIR}/mdev ${D}${sysconfdir}/init.d/mdev if grep "CONFIG_FEATURE_MDEV_CONF=y" ${B}/.config; then - install -m 644 ${WORKDIR}/mdev.conf ${D}${sysconfdir}/mdev.conf + install -m 644 ${UNPACKDIR}/mdev.conf ${D}${sysconfdir}/mdev.conf install -d ${D}${sysconfdir}/mdev - install -m 0755 ${WORKDIR}/find-touchscreen.sh ${D}${sysconfdir}/mdev - install -m 0755 ${WORKDIR}/mdev-mount.sh ${D}${sysconfdir}/mdev + install -m 0755 ${UNPACKDIR}/find-touchscreen.sh ${D}${sysconfdir}/mdev + install -m 0755 ${UNPACKDIR}/mdev-mount.sh ${D}${sysconfdir}/mdev fi fi - if grep -q "CONFIG_INIT=y" ${B}/.config; then - install -D -m 0755 ${WORKDIR}/rcS ${D}${sysconfdir}/init.d/rcS - install -D -m 0755 ${WORKDIR}/rcK ${D}${sysconfdir}/init.d/rcK + if grep -q "CONFIG_INIT=y" ${B}/.config && ${@bb.utils.contains('VIRTUAL-RUNTIME_init_manager','busybox','true','false',d)}; then + install -D -m 0755 ${UNPACKDIR}/rcS ${D}${sysconfdir}/init.d/rcS + install -D -m 0755 ${UNPACKDIR}/rcK ${D}${sysconfdir}/init.d/rcK + install -D -m 0755 ${UNPACKDIR}/rcS.default ${D}${sysconfdir}/default/rcS fi if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then if grep -q "CONFIG_KLOGD=y" ${B}/.config; then - install -d ${D}${systemd_unitdir}/system - sed 's,@base_sbindir@,${base_sbindir},g' < ${WORKDIR}/busybox-klogd.service.in \ - > ${D}${systemd_unitdir}/system/busybox-klogd.service + install -d ${D}${systemd_system_unitdir} + sed 's,@base_sbindir@,${base_sbindir},g' < ${UNPACKDIR}/busybox-klogd.service.in \ + > ${D}${systemd_system_unitdir}/busybox-klogd.service fi if grep -q "CONFIG_SYSLOGD=y" ${B}/.config; then - install -d ${D}${systemd_unitdir}/system - sed 's,@base_sbindir@,${base_sbindir},g' < ${WORKDIR}/busybox-syslog.service.in \ - > ${D}${systemd_unitdir}/system/busybox-syslog.service - if [ ! -e ${D}${systemd_unitdir}/system/busybox-klogd.service ] ; then - sed -i '/klog/d' ${D}${systemd_unitdir}/system/busybox-syslog.service + install -d ${D}${systemd_system_unitdir} + sed 's,@base_sbindir@,${base_sbindir},g' < ${UNPACKDIR}/busybox-syslog.service.in \ + > ${D}${systemd_system_unitdir}/busybox-syslog.service + if [ ! -e ${D}${systemd_system_unitdir}/busybox-klogd.service ] ; then + sed -i '/klog/d' ${D}${systemd_system_unitdir}/busybox-syslog.service fi - if [ -f ${WORKDIR}/busybox-syslog.default ] ; then + if [ -f ${UNPACKDIR}/busybox-syslog.default ] ; then install -d ${D}${sysconfdir}/default - install -m 0644 ${WORKDIR}/busybox-syslog.default ${D}${sysconfdir}/default/busybox-syslog + install -m 0644 ${UNPACKDIR}/busybox-syslog.default ${D}${sysconfdir}/default/busybox-syslog fi fi fi @@ -357,14 +358,14 @@ do_install_ptest () { # These access the internet which is not guaranteed to work on machines running the tests rm -rf ${D}${PTEST_PATH}/testsuite/wget sort ${B}/.config > ${D}${PTEST_PATH}/.config - ln -s /bin/busybox ${D}${PTEST_PATH}/busybox + ln -s ${base_bindir}/busybox ${D}${PTEST_PATH}/busybox } inherit update-alternatives ALTERNATIVE_PRIORITY = "50" -python do_package_prepend () { +python do_package:prepend () { # We need to load the full set of busybox provides from the /etc/busybox.links # Use this to see the update-alternatives with the right information @@ -381,9 +382,9 @@ python do_package_prepend () { if alt_name == '[': alt_name = 'lbracket' if alt_name == 'klogd' or alt_name == 'syslogd': - d.appendVar('ALTERNATIVE_%s-syslog' % (pn), ' ' + alt_name) + d.appendVar('ALTERNATIVE:%s-syslog' % (pn), ' ' + alt_name) else: - d.appendVar('ALTERNATIVE_%s' % (pn), ' ' + alt_name) + d.appendVar('ALTERNATIVE:%s' % (pn), ' ' + alt_name) d.setVarFlag('ALTERNATIVE_LINK_NAME', alt_name, alt_link_name) if os.path.exists('%s%s' % (dvar, target)): d.setVarFlag('ALTERNATIVE_TARGET', alt_name, target) @@ -403,7 +404,7 @@ python do_package_prepend () { # These symlinks will later be updated by update-alternatives calls. # The update-alternatives.bbclass' postinst script runs firstly before other # postinst, but this part of code needs run firstly, so add this funtion. -python populate_packages_updatealternatives_append() { +python populate_packages_updatealternatives:append() { postinst = """ test -n 2 > /dev/null || alias test='busybox test' if test "x$D" = "x"; then @@ -430,10 +431,10 @@ if grep -q "^${base_bindir}/bash$" $D${sysconfdir}/busybox.links*; then fi """ - d.prependVar('pkg_postinst_%s' % pkg, postinst) + d.prependVar('pkg_postinst:%s' % pkg, postinst) } -pkg_postinst_${PN}_prepend () { +pkg_postinst:${PN}:prepend () { # Need path to saved utils, but they may have be removed on upgrade of busybox # Only use shell to get paths. Also capture if busybox was saved. BUSYBOX="" @@ -449,7 +450,7 @@ pkg_postinst_${PN}_prepend () { fi } -pkg_postinst_${PN}_append () { +pkg_postinst:${PN}:append () { # If busybox exists in the remove directory it is because it was the only shell left. if [ "x$D" = "x" ] ; then if [ "x$BUSYBOX" != "x" ] ; then @@ -459,7 +460,7 @@ pkg_postinst_${PN}_append () { fi } -pkg_prerm_${PN} () { +pkg_prerm:${PN} () { # This is so you can make busybox commit suicide - removing busybox with no other packages # providing its files, this will make update-alternatives work, but the update-rc.d part # for syslog, httpd and/or udhcpd will fail if there is no other package providing sh @@ -489,7 +490,7 @@ pkg_prerm_${PN} () { fi } -pkg_postrm_${PN} () { +pkg_postrm:${PN} () { # Add path to remove dir in case we removed our only grep if [ "x$D" = "x" ] ; then for busybox_rmdir in /tmp/busyboxrm-*; do @@ -504,7 +505,7 @@ pkg_postrm_${PN} () { fi } -pkg_prerm_${PN}-syslog () { +pkg_prerm:${PN}-syslog () { # remove syslog if test "x$D" = "x"; then if test "$1" = "upgrade" -o "$1" = "remove"; then @@ -513,4 +514,4 @@ pkg_prerm_${PN}-syslog () { fi } -RPROVIDES_${PN} += "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '/bin/sh /bin/ash', '', d)}" +RPROVIDES:${PN} += "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '/bin/sh /bin/ash', '', d)}" |