diff options
Diffstat (limited to 'yocto-poky/meta/recipes-core/busybox')
25 files changed, 587 insertions, 718 deletions
diff --git a/yocto-poky/meta/recipes-core/busybox/busybox.inc b/yocto-poky/meta/recipes-core/busybox/busybox.inc index 4d4709a48..5e91a263d 100644 --- a/yocto-poky/meta/recipes-core/busybox/busybox.inc +++ b/yocto-poky/meta/recipes-core/busybox/busybox.inc @@ -17,7 +17,9 @@ BUSYBOX_SPLIT_SUID ?= "1" export EXTRA_CFLAGS = "${CFLAGS}" export EXTRA_LDFLAGS = "${LDFLAGS}" -export EXTRA_OEMAKE += "'LD=${CCLD}'" + +# We don't want '-e MAKEFLAGS=' in EXTRA_OEMAKE +EXTRA_OEMAKE = "CC='${CC}' LD='${CCLD}' V=1 ARCH=${TARGET_ARCH} CROSS_COMPILE=${TARGET_PREFIX} SKIP_STRIP=y" PACKAGES =+ "${PN}-httpd ${PN}-udhcpd ${PN}-udhcpc ${PN}-syslog ${PN}-mdev ${PN}-hwclock" @@ -33,9 +35,9 @@ INITSCRIPT_PACKAGES = "${PN}-httpd ${PN}-syslog ${PN}-udhcpd ${PN}-mdev ${PN}-hw INITSCRIPT_NAME_${PN}-httpd = "busybox-httpd" INITSCRIPT_NAME_${PN}-hwclock = "hwclock.sh" INITSCRIPT_NAME_${PN}-mdev = "mdev" -INITSCRIPT_PARAMS_${PN}-mdev = "start 03 S ." +INITSCRIPT_PARAMS_${PN}-mdev = "start 04 S ." INITSCRIPT_NAME_${PN}-syslog = "syslog" -INITSCRIPT_NAME_${PN}-udhcpd = "busybox-udhcpd" +INITSCRIPT_NAME_${PN}-udhcpd = "busybox-udhcpd" SYSTEMD_PACKAGES = "${PN}-syslog" SYSTEMD_SERVICE_${PN}-syslog = "busybox-syslog.service" @@ -79,8 +81,7 @@ def features_to_busybox_del(d): cnf, rem = features_to_busybox_settings(d) return rem -configmangle = '/CROSS_COMPILER_PREFIX/d; \ - /CONFIG_EXTRA_CFLAGS/d; \ +configmangle = '/CONFIG_EXTRA_CFLAGS/d; \ ' OE_FEATURES := "${@features_to_busybox_conf(d)}" OE_DEL := "${@features_to_busybox_del(d)}" @@ -96,8 +97,7 @@ python () { ("\\n".join((d.expand("${OE_FEATURES}").split("\n"))))) d.setVar('configmangle_append', "/^### CROSS$/a\\\n%s\n" % - ("\\n".join(["CONFIG_CROSS_COMPILER_PREFIX=\"${TARGET_PREFIX}\"", - "CONFIG_EXTRA_CFLAGS=\"${CFLAGS}\" \"${HOST_CC_ARCH}\"" + ("\\n".join(["CONFIG_EXTRA_CFLAGS=\"${CFLAGS} ${HOST_CC_ARCH}\"" ]) )) } @@ -171,20 +171,20 @@ do_compile() { } do_install () { - if [ "${prefix}" != "/usr" ]; then - sed -i "s:^/usr/:${prefix}/:" busybox.links* - fi - if [ "${base_sbindir}" != "/sbin" ]; then - sed -i "s:^/sbin/:${base_sbindir}/:" busybox.links* - fi - if [ "${base_bindir}" != "/bin" ]; then - sed -i "s:^/bin/:${base_bindir}/:" busybox.links* - fi + sed -i "s:^/bin/:BASE_BINDIR/:" busybox.links* + sed -i "s:^/sbin/:BASE_SBINDIR/:" busybox.links* + sed -i "s:^/usr/bin/:BINDIR/:" busybox.links* + sed -i "s:^/usr/sbin/:SBINDIR/:" busybox.links* + + sed -i "s:^BASE_BINDIR/:${base_bindir}/:" busybox.links* + sed -i "s:^BASE_SBINDIR/:${base_sbindir}/:" busybox.links* + sed -i "s:^BINDIR/:${bindir}/:" busybox.links* + sed -i "s:^SBINDIR/:${sbindir}/:" busybox.links* install -d ${D}${sysconfdir}/init.d if ! grep -q "CONFIG_FEATURE_INDIVIDUAL=y" ${B}/.config; then - # Install /bin/busybox, and the /bin/sh link so the postinst script + # Install ${base_bindir}/busybox, and the ${base_bindir}/sh link so the postinst script # can run. Let update-alternatives handle the rest. install -d ${D}${base_bindir} if [ "${BUSYBOX_SPLIT_SUID}" = "1" ]; then @@ -212,7 +212,7 @@ do_install () { # We make this symlink here to eliminate the error when upgrading together # with busybox-syslog. Without this symlink, the opkg may think of the # busybox.nosuid as obsolete and remove it, resulting in dead links like - # /bin/sed -> /bin/busybox.nosuid. This will make upgrading busybox-syslog fail. + # ${base_bindir}/sed -> ${base_bindir}/busybox.nosuid. This will make upgrading busybox-syslog fail. # This symlink will be safely deleted in postinst, thus no negative effect. ln -sf busybox ${D}${base_bindir}/busybox.nosuid fi @@ -258,7 +258,8 @@ do_install () { if grep "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 ${WORKDIR}/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 fi if grep "CONFIG_INETD=y" ${B}/.config; then @@ -275,6 +276,21 @@ do_install () { install -m 0755 ${WORKDIR}/mdev-mount.sh ${D}${sysconfdir}/mdev fi fi + if grep "CONFIG_INIT=y" ${B}/.config; then + install -D -m 0777 ${WORKDIR}/rcS ${D}${sysconfdir}/init.d/rcS + install -D -m 0777 ${WORKDIR}/rcK ${D}${sysconfdir}/init.d/rcK + install -D -m 0755 ${WORKDIR}/runlevel ${D}${base_sbindir}/runlevel + if grep "CONFIG_FEATURE_USE_INITTAB=y" ${B}/.config; then + install -D -m 0777 ${WORKDIR}/inittab ${D}${sysconfdir}/inittab + tmp="${SERIAL_CONSOLES}" + for i in $tmp + do + j=`echo ${i} | sed s/\;/\ /g` + label=`echo ${i} | sed -e 's/tty//' -e 's/^.*;//' -e 's/;.*//'` + echo "tty$label::respawn:${base_sbindir}/getty ${j}" >> ${D}${sysconfdir}/inittab + done + fi + fi if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then if grep -q "CONFIG_SYSLOGD=y" ${B}/.config; then @@ -300,6 +316,12 @@ do_install () { fi } +do_install_ptest () { + cp -r ${B}/testsuite ${D}${PTEST_PATH}/ + cp ${B}/.config ${D}${PTEST_PATH}/ + ln -s /bin/busybox ${D}${PTEST_PATH}/busybox +} + inherit update-alternatives ALTERNATIVE_PRIORITY = "50" @@ -325,6 +347,8 @@ python do_package_prepend () { dvar = d.getVar('D', True) pn = d.getVar('PN', True) def set_alternative_vars(links, target): + links = d.expand(links) + target = d.expand(target) f = open('%s%s' % (dvar, links), 'r') for alt_link_name in f: alt_link_name = alt_link_name.strip() @@ -362,21 +386,10 @@ pkg_postinst_${PN} () { if test -e ${sysconfdir}/busybox.links$suffix; then while read link; do if test ! -e "$link"; then - case "$link" in - /*/*/*) - to="../..${base_bindir}/busybox$suffix" - ;; - /bin/*) - to="busybox$suffix" - ;; - /*/*) - to="..${base_bindir}/busybox$suffix" - ;; - esac # we can use busybox here because even if we are using splitted busybox # we've made a symlink from /bin/busybox to /bin/busybox.nosuid. busybox rm -f $link - busybox ln -s $to $link + busybox ln -s "${base_bindir}/busybox$suffix" $link fi done < ${sysconfdir}/busybox.links$suffix fi @@ -402,6 +415,7 @@ pkg_prerm_${PN} () { ln -s ${base_bindir}/busybox $tmpdir/sed ln -s ${base_bindir}/busybox $tmpdir/sort ln -s ${base_bindir}/busybox $tmpdir/grep + ln -s ${base_bindir}/busybox $tmpdir/tail export PATH=$PATH:$tmpdir } diff --git a/yocto-poky/meta/recipes-core/busybox/busybox/0001-Switch-to-POSIX-utmpx-API.patch b/yocto-poky/meta/recipes-core/busybox/busybox/0001-Switch-to-POSIX-utmpx-API.patch deleted file mode 100644 index 1d299eec9..000000000 --- a/yocto-poky/meta/recipes-core/busybox/busybox/0001-Switch-to-POSIX-utmpx-API.patch +++ /dev/null @@ -1,388 +0,0 @@ -From 86a7f18f211af1abda5c855d2674b0fcb53de524 Mon Sep 17 00:00:00 2001 -From: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> -Date: Thu, 2 Apr 2015 23:03:46 +0200 -Subject: [PATCH] *: Switch to POSIX utmpx API - -UTMP is SVID legacy, UTMPX is mandated by POSIX. - -Glibc and uClibc have identical layout of UTMP and UTMPX, both of these -libc treat _PATH_UTMPX as _PATH_UTMP so from a user-perspective nothing -changes except the names of the API entrypoints. - -Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> ---- -Upstream-Status: Backport - - coreutils/who.c | 8 ++++---- - include/libbb.h | 2 +- - init/halt.c | 4 ++-- - libbb/utmp.c | 44 ++++++++++++++++++++++---------------------- - miscutils/last.c | 8 ++++---- - miscutils/last_fancy.c | 16 ++++++++++------ - miscutils/runlevel.c | 12 ++++++------ - miscutils/wall.c | 8 ++++---- - procps/uptime.c | 6 +++--- - 9 files changed, 56 insertions(+), 52 deletions(-) - -diff --git a/coreutils/who.c b/coreutils/who.c -index f955ce6..8337212 100644 ---- a/coreutils/who.c -+++ b/coreutils/who.c -@@ -73,7 +73,7 @@ static void idle_string(char *str6, time_t t) - int who_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; - int who_main(int argc UNUSED_PARAM, char **argv) - { -- struct utmp *ut; -+ struct utmpx *ut; - unsigned opt; - int do_users = (ENABLE_USERS && (!ENABLE_WHO || applet_name[0] == 'u')); - const char *fmt = "%s"; -@@ -83,8 +83,8 @@ int who_main(int argc UNUSED_PARAM, char **argv) - if (opt & 2) // -H - printf("USER\t\tTTY\t\tIDLE\tTIME\t\t HOST\n"); - -- setutent(); -- while ((ut = getutent()) != NULL) { -+ setutxent(); -+ while ((ut = getutxent()) != NULL) { - if (ut->ut_user[0] - && ((opt & 1) || ut->ut_type == USER_PROCESS) - ) { -@@ -126,6 +126,6 @@ int who_main(int argc UNUSED_PARAM, char **argv) - if (do_users) - bb_putchar('\n'); - if (ENABLE_FEATURE_CLEAN_UP) -- endutent(); -+ endutxent(); - return EXIT_SUCCESS; - } -diff --git a/include/libbb.h b/include/libbb.h -index 26b6868..0f8363b 100644 ---- a/include/libbb.h -+++ b/include/libbb.h -@@ -84,7 +84,7 @@ - # include <selinux/av_permissions.h> - #endif - #if ENABLE_FEATURE_UTMP --# include <utmp.h> -+# include <utmpx.h> - #endif - #if ENABLE_LOCALE_SUPPORT - # include <locale.h> -diff --git a/init/halt.c b/init/halt.c -index 7974adb..ad12d91 100644 ---- a/init/halt.c -+++ b/init/halt.c -@@ -74,7 +74,7 @@ - - static void write_wtmp(void) - { -- struct utmp utmp; -+ struct utmpx utmp; - struct utsname uts; - /* "man utmp" says wtmp file should *not* be created automagically */ - /*if (access(bb_path_wtmp_file, R_OK|W_OK) == -1) { -@@ -88,7 +88,7 @@ static void write_wtmp(void) - utmp.ut_line[0] = '~'; utmp.ut_line[1] = '~'; /* = strcpy(utmp.ut_line, "~~"); */ - uname(&uts); - safe_strncpy(utmp.ut_host, uts.release, sizeof(utmp.ut_host)); -- updwtmp(bb_path_wtmp_file, &utmp); -+ updwtmpx(bb_path_wtmp_file, &utmp); - } - #else - #define write_wtmp() ((void)0) -diff --git a/libbb/utmp.c b/libbb/utmp.c -index 8ad9ba2..bd07670 100644 ---- a/libbb/utmp.c -+++ b/libbb/utmp.c -@@ -16,7 +16,7 @@ static void touch(const char *filename) - - void FAST_FUNC write_new_utmp(pid_t pid, int new_type, const char *tty_name, const char *username, const char *hostname) - { -- struct utmp utent; -+ struct utmpx utent; - char *id; - unsigned width; - -@@ -45,17 +45,17 @@ void FAST_FUNC write_new_utmp(pid_t pid, int new_type, const char *tty_name, con - tty_name += 3; - strncpy(id, tty_name, width); - -- touch(_PATH_UTMP); -- //utmpname(_PATH_UTMP); -- setutent(); -+ touch(_PATH_UTMPX); -+ //utmpxname(_PATH_UTMPX); -+ setutxent(); - /* Append new one (hopefully, unless we collide on ut_id) */ -- pututline(&utent); -- endutent(); -+ pututxline(&utent); -+ endutxent(); - - #if ENABLE_FEATURE_WTMP - /* "man utmp" says wtmp file should *not* be created automagically */ - /*touch(bb_path_wtmp_file);*/ -- updwtmp(bb_path_wtmp_file, &utent); -+ updwtmpx(bb_path_wtmp_file, &utent); - #endif - } - -@@ -64,17 +64,17 @@ void FAST_FUNC write_new_utmp(pid_t pid, int new_type, const char *tty_name, con - */ - void FAST_FUNC update_utmp(pid_t pid, int new_type, const char *tty_name, const char *username, const char *hostname) - { -- struct utmp utent; -- struct utmp *utp; -+ struct utmpx utent; -+ struct utmpx *utp; - -- touch(_PATH_UTMP); -- //utmpname(_PATH_UTMP); -- setutent(); -+ touch(_PATH_UTMPX); -+ //utmpxname(_PATH_UTMPX); -+ setutxent(); - - /* Did init/getty/telnetd/sshd/... create an entry for us? - * It should be (new_type-1), but we'd also reuse - * any other potentially stale xxx_PROCESS entry */ -- while ((utp = getutent()) != NULL) { -+ while ((utp = getutxent()) != NULL) { - if (utp->ut_pid == pid - // && ut->ut_line[0] - && utp->ut_id[0] /* must have nonzero id */ -@@ -88,25 +88,25 @@ void FAST_FUNC update_utmp(pid_t pid, int new_type, const char *tty_name, const - /* Stale record. Nuke hostname */ - memset(utp->ut_host, 0, sizeof(utp->ut_host)); - } -- /* NB: pututline (see later) searches for matching utent -- * using getutid(utent) - we must not change ut_id -+ /* NB: pututxline (see later) searches for matching utxent -+ * using getutxid(utent) - we must not change ut_id - * if we want *exactly this* record to be overwritten! - */ - break; - } - } -- //endutent(); - no need, pututline can deal with (and actually likes) -+ //endutxent(); - no need, pututxline can deal with (and actually likes) - //the situation when utmp file is positioned on found record - - if (!utp) { - if (new_type != DEAD_PROCESS) - write_new_utmp(pid, new_type, tty_name, username, hostname); - else -- endutent(); -+ endutxent(); - return; - } - -- /* Make a copy. We can't use *utp, pututline's internal getutid -+ /* Make a copy. We can't use *utp, pututxline's internal getutxid - * will overwrite it before it is used! */ - utent = *utp; - -@@ -120,14 +120,14 @@ void FAST_FUNC update_utmp(pid_t pid, int new_type, const char *tty_name, const - utent.ut_tv.tv_sec = time(NULL); - - /* Update, or append new one */ -- //setutent(); -- pututline(&utent); -- endutent(); -+ //setutxent(); -+ pututxline(&utent); -+ endutxent(); - - #if ENABLE_FEATURE_WTMP - /* "man utmp" says wtmp file should *not* be created automagically */ - /*touch(bb_path_wtmp_file);*/ -- updwtmp(bb_path_wtmp_file, &utent); -+ updwtmpx(bb_path_wtmp_file, &utent); - #endif - } - -diff --git a/miscutils/last.c b/miscutils/last.c -index a144c7e..6d8b584 100644 ---- a/miscutils/last.c -+++ b/miscutils/last.c -@@ -32,21 +32,21 @@ - - #if defined UT_LINESIZE \ - && ((UT_LINESIZE != 32) || (UT_NAMESIZE != 32) || (UT_HOSTSIZE != 256)) --#error struct utmp member char[] size(s) have changed! -+#error struct utmpx member char[] size(s) have changed! - #elif defined __UT_LINESIZE \ - && ((__UT_LINESIZE != 32) || (__UT_NAMESIZE != 64) || (__UT_HOSTSIZE != 256)) --#error struct utmp member char[] size(s) have changed! -+#error struct utmpx member char[] size(s) have changed! - #endif - - #if EMPTY != 0 || RUN_LVL != 1 || BOOT_TIME != 2 || NEW_TIME != 3 || \ - OLD_TIME != 4 --#error Values for the ut_type field of struct utmp changed -+#error Values for the ut_type field of struct utmpx changed - #endif - - int last_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; - int last_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) - { -- struct utmp ut; -+ struct utmpx ut; - int n, file = STDIN_FILENO; - time_t t_tmp; - off_t pos; -diff --git a/miscutils/last_fancy.c b/miscutils/last_fancy.c -index 16ed9e9..8194e31 100644 ---- a/miscutils/last_fancy.c -+++ b/miscutils/last_fancy.c -@@ -22,6 +22,10 @@ - #define HEADER_LINE_WIDE "USER", "TTY", \ - INET6_ADDRSTRLEN, INET6_ADDRSTRLEN, "HOST", "LOGIN", " TIME", "" - -+#if !defined __UT_LINESIZE && defined UT_LINESIZE -+# define __UT_LINESIZE UT_LINESIZE -+#endif -+ - enum { - NORMAL, - LOGGED, -@@ -39,7 +43,7 @@ enum { - - #define show_wide (option_mask32 & LAST_OPT_W) - --static void show_entry(struct utmp *ut, int state, time_t dur_secs) -+static void show_entry(struct utmpx *ut, int state, time_t dur_secs) - { - unsigned days, hours, mins; - char duration[sizeof("(%u+02:02)") + sizeof(int)*3]; -@@ -104,7 +108,7 @@ static void show_entry(struct utmp *ut, int state, time_t dur_secs) - duration_str); - } - --static int get_ut_type(struct utmp *ut) -+static int get_ut_type(struct utmpx *ut) - { - if (ut->ut_line[0] == '~') { - if (strcmp(ut->ut_user, "shutdown") == 0) { -@@ -142,7 +146,7 @@ static int get_ut_type(struct utmp *ut) - return ut->ut_type; - } - --static int is_runlevel_shutdown(struct utmp *ut) -+static int is_runlevel_shutdown(struct utmpx *ut) - { - if (((ut->ut_pid & 255) == '0') || ((ut->ut_pid & 255) == '6')) { - return 1; -@@ -154,7 +158,7 @@ static int is_runlevel_shutdown(struct utmp *ut) - int last_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; - int last_main(int argc UNUSED_PARAM, char **argv) - { -- struct utmp ut; -+ struct utmpx ut; - const char *filename = _PATH_WTMP; - llist_t *zlist; - off_t pos; -@@ -242,9 +246,9 @@ int last_main(int argc UNUSED_PARAM, char **argv) - { - llist_t *el, *next; - for (el = zlist; el; el = next) { -- struct utmp *up = (struct utmp *)el->data; -+ struct utmpx *up = (struct utmpx *)el->data; - next = el->link; -- if (strncmp(up->ut_line, ut.ut_line, UT_LINESIZE) == 0) { -+ if (strncmp(up->ut_line, ut.ut_line, __UT_LINESIZE) == 0) { - if (show) { - show_entry(&ut, NORMAL, up->ut_tv.tv_sec); - show = 0; -diff --git a/miscutils/runlevel.c b/miscutils/runlevel.c -index 76231df..8558db8 100644 ---- a/miscutils/runlevel.c -+++ b/miscutils/runlevel.c -@@ -29,19 +29,19 @@ - int runlevel_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; - int runlevel_main(int argc UNUSED_PARAM, char **argv) - { -- struct utmp *ut; -+ struct utmpx *ut; - char prev; - -- if (argv[1]) utmpname(argv[1]); -+ if (argv[1]) utmpxname(argv[1]); - -- setutent(); -- while ((ut = getutent()) != NULL) { -+ setutxent(); -+ while ((ut = getutxent()) != NULL) { - if (ut->ut_type == RUN_LVL) { - prev = ut->ut_pid / 256; - if (prev == 0) prev = 'N'; - printf("%c %c\n", prev, ut->ut_pid % 256); - if (ENABLE_FEATURE_CLEAN_UP) -- endutent(); -+ endutxent(); - return 0; - } - } -@@ -49,6 +49,6 @@ int runlevel_main(int argc UNUSED_PARAM, char **argv) - puts("unknown"); - - if (ENABLE_FEATURE_CLEAN_UP) -- endutent(); -+ endutxent(); - return 1; - } -diff --git a/miscutils/wall.c b/miscutils/wall.c -index bb709ee..50658f4 100644 ---- a/miscutils/wall.c -+++ b/miscutils/wall.c -@@ -32,7 +32,7 @@ - int wall_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; - int wall_main(int argc UNUSED_PARAM, char **argv) - { -- struct utmp *ut; -+ struct utmpx *ut; - char *msg; - int fd; - -@@ -46,8 +46,8 @@ int wall_main(int argc UNUSED_PARAM, char **argv) - msg = xmalloc_read(fd, NULL); - if (ENABLE_FEATURE_CLEAN_UP && argv[1]) - close(fd); -- setutent(); -- while ((ut = getutent()) != NULL) { -+ setutxent(); -+ while ((ut = getutxent()) != NULL) { - char *line; - if (ut->ut_type != USER_PROCESS) - continue; -@@ -56,7 +56,7 @@ int wall_main(int argc UNUSED_PARAM, char **argv) - free(line); - } - if (ENABLE_FEATURE_CLEAN_UP) { -- endutent(); -+ endutxent(); - free(msg); - } - return EXIT_SUCCESS; -diff --git a/procps/uptime.c b/procps/uptime.c -index 778812a..149bae6 100644 ---- a/procps/uptime.c -+++ b/procps/uptime.c -@@ -81,10 +81,10 @@ int uptime_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) - - #if ENABLE_FEATURE_UPTIME_UTMP_SUPPORT - { -- struct utmp *ut; -+ struct utmpx *ut; - unsigned users = 0; -- while ((ut = getutent()) != NULL) { -- if ((ut->ut_type == USER_PROCESS) && (ut->ut_name[0] != '\0')) -+ while ((ut = getutxent()) != NULL) { -+ if ((ut->ut_type == USER_PROCESS) && (ut->ut_user[0] != '\0')) - users++; - } - printf(", %u users", users); --- -2.5.1 - diff --git a/yocto-poky/meta/recipes-core/busybox/busybox/0001-chown-fix-help-text.patch b/yocto-poky/meta/recipes-core/busybox/busybox/0001-chown-fix-help-text.patch deleted file mode 100644 index 429979966..000000000 --- a/yocto-poky/meta/recipes-core/busybox/busybox/0001-chown-fix-help-text.patch +++ /dev/null @@ -1,34 +0,0 @@ -From d291c2fdd5cb8616605c67ecbfb04274fa094242 Mon Sep 17 00:00:00 2001 -From: Junling Zheng <zhengjunling@huawei.com> -Date: Sun, 7 Jun 2015 02:32:23 +0200 -Subject: [PATCH] chown: fix help text - -Derived from: -http://git.busybox.net/busybox/commit/?id=d291c2fdd5cb8616605c67ecbfb04274fa094242. - -Only when DESKTOP is enabled, chown has -L, -H and -P options. - -Upstream-Status: Backport - -Signed-off-by: Junling Zheng <zhengjunling@huawei.com> -Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com> ---- - coreutils/chown.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/coreutils/chown.c b/coreutils/chown.c -index cb07bbc..679c0d8 100644 ---- a/coreutils/chown.c -+++ b/coreutils/chown.c -@@ -11,7 +11,7 @@ - /* http://www.opengroup.org/onlinepubs/007904975/utilities/chown.html */ - - //usage:#define chown_trivial_usage --//usage: "[-RhLHP"IF_DESKTOP("cvf")"]... OWNER[<.|:>[GROUP]] FILE..." -+//usage: "[-Rh"IF_DESKTOP("LHPcvf")"]... OWNER[<.|:>[GROUP]] FILE..." - //usage:#define chown_full_usage "\n\n" - //usage: "Change the owner and/or group of each FILE to OWNER and/or GROUP\n" - //usage: "\n -R Recurse" --- -1.8.3.4 - diff --git a/yocto-poky/meta/recipes-core/busybox/busybox/0001-ifconfig-fix-double-free-fatal-error-in-INET_sprint.patch b/yocto-poky/meta/recipes-core/busybox/busybox/0001-ifconfig-fix-double-free-fatal-error-in-INET_sprint.patch deleted file mode 100644 index 2d729b1b0..000000000 --- a/yocto-poky/meta/recipes-core/busybox/busybox/0001-ifconfig-fix-double-free-fatal-error-in-INET_sprint.patch +++ /dev/null @@ -1,67 +0,0 @@ -From a97777889328157bb7d06ec618bad16712a9c345 Mon Sep 17 00:00:00 2001 -From: Denys Vlasenko <vda.linux@googlemail.com> -Date: Tue, 3 Feb 2015 12:11:30 +0100 -Subject: [PATCH] ifconfig: fix double free fatal error in INET_sprint - -Derived from: -http://git.busybox.net/busybox/commit/?id=a97777889328157bb7d06ec618bad16712a9c345. - -While INET_sprint or INET6_sprint is called circularly by keeping -ifconfiging, sap->sa_family would be cleaned by other parallel processes -such as dhclient sometimes, and then there would be a double free error -like the following: - - *** glibc detected *** ifconfig: double free or corruption (fasttop): 0x000a6008 *** - ======= Backtrace: ========= - /lib/libc.so.6(+0x6bc84)[0x40133c84] - /lib/libc.so.6(cfree+0x94)[0x40138684] - ifconfig[0x1c460] - ifconfig[0x1c6a0] - ifconfig[0x1ccf4] - ifconfig[0x187c8] - ifconfig[0xd544] - ifconfig[0xd5dc] - ifconfig[0xdca8] - /lib/libc.so.6(__libc_start_main+0x110)[0x400df258] - ======= Memory map: ======== - 00008000-0009c000 r-xp 00000000 1f:05 444328 /bin/busybox - 000a3000-000a4000 rw-p 00093000 1f:05 444328 /bin/busybox - -This patch moved free() two lines down to address this problem. - -Upstream-Status: Backport - -Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com> ---- - networking/interface.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/networking/interface.c b/networking/interface.c -index bf7d2b1..b0572d0 100644 ---- a/networking/interface.c -+++ b/networking/interface.c -@@ -91,9 +91,9 @@ static const char* FAST_FUNC INET_sprint(struct sockaddr *sap, int numeric) - { - static char *buff; /* defaults to NULL */ - -- free(buff); - if (sap->sa_family == 0xFFFF || sap->sa_family == 0) - return "[NONE SET]"; -+ free(buff); - buff = INET_rresolve((struct sockaddr_in *) sap, numeric, 0xffffff00); - return buff; - } -@@ -173,9 +173,9 @@ static const char* FAST_FUNC INET6_sprint(struct sockaddr *sap, int numeric) - { - static char *buff; - -- free(buff); - if (sap->sa_family == 0xFFFF || sap->sa_family == 0) - return "[NONE SET]"; -+ free(buff); - buff = INET6_rresolve((struct sockaddr_in6 *) sap, numeric); - return buff; - } --- -1.8.3.4 - diff --git a/yocto-poky/meta/recipes-core/busybox/busybox/0001-randconfig-fix.patch b/yocto-poky/meta/recipes-core/busybox/busybox/0001-randconfig-fix.patch deleted file mode 100644 index 415ec3409..000000000 --- a/yocto-poky/meta/recipes-core/busybox/busybox/0001-randconfig-fix.patch +++ /dev/null @@ -1,33 +0,0 @@ -If CONFIG_FEATURE_LAST_SMALL is enabled the build fails because of a broken -__UT_NAMESIZE test. - -Upstream-Status: Backport -Signed-off-by: Ross Burton <ross.burton@intel.com> - -From 932302666b0354ede63504d1bef8393cab28db8b Mon Sep 17 00:00:00 2001 -From: Denys Vlasenko <vda.linux@googlemail.com> -Date: Sun, 11 Oct 2015 16:58:18 +0200 -Subject: [PATCH] randconfig fix - -Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com> ---- - miscutils/last.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/miscutils/last.c b/miscutils/last.c -index 6d8b584..f8f3437 100644 ---- a/miscutils/last.c -+++ b/miscutils/last.c -@@ -34,7 +34,8 @@ - && ((UT_LINESIZE != 32) || (UT_NAMESIZE != 32) || (UT_HOSTSIZE != 256)) - #error struct utmpx member char[] size(s) have changed! - #elif defined __UT_LINESIZE \ -- && ((__UT_LINESIZE != 32) || (__UT_NAMESIZE != 64) || (__UT_HOSTSIZE != 256)) -+ && ((__UT_LINESIZE != 32) || (__UT_NAMESIZE != 32) || (__UT_HOSTSIZE != 256)) -+/* __UT_NAMESIZE was checked with 64 above, but glibc-2.11 definitely uses 32! */ - #error struct utmpx member char[] size(s) have changed! - #endif - --- -2.6.4 - diff --git a/yocto-poky/meta/recipes-core/busybox/busybox/0002-Passthrough-r-to-linker.patch b/yocto-poky/meta/recipes-core/busybox/busybox/0002-Passthrough-r-to-linker.patch deleted file mode 100644 index de286fb74..000000000 --- a/yocto-poky/meta/recipes-core/busybox/busybox/0002-Passthrough-r-to-linker.patch +++ /dev/null @@ -1,32 +0,0 @@ -From df2cc76cdebc4773361477f3db203790f6986e3b Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Sat, 22 Aug 2015 23:42:40 -0700 -Subject: [PATCH 2/2] Passthrough -r to linker - -clang does not have -r switch and it does not pass it down to linker -either, LDFLAGS_RELOCATABLE is used when CC is used for LD, so this -should not cause side effects - -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- -Upstream-Status: Pending - - Makefile | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/Makefile b/Makefile -index 9da02cb..10dd4a9 100644 ---- a/Makefile -+++ b/Makefile -@@ -309,7 +309,7 @@ CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ -Wbitwise $(C - MODFLAGS = -DMODULE - CFLAGS_MODULE = $(MODFLAGS) - AFLAGS_MODULE = $(MODFLAGS) --LDFLAGS_RELOCATABLE = -r -nostdlib -+LDFLAGS_RELOCATABLE = -Xlinker -r -nostdlib - LDFLAGS_MODULE = $(LDFLAGS_RELOCATABLE) - CFLAGS_KERNEL = - AFLAGS_KERNEL = --- -2.1.4 - diff --git a/yocto-poky/meta/recipes-core/busybox/busybox/busybox-1.24.1-truncate-open-mode.patch b/yocto-poky/meta/recipes-core/busybox/busybox/busybox-1.24.1-truncate-open-mode.patch new file mode 100644 index 000000000..cdc91082b --- /dev/null +++ b/yocto-poky/meta/recipes-core/busybox/busybox/busybox-1.24.1-truncate-open-mode.patch @@ -0,0 +1,81 @@ +Upstream-Status: Backport + + http://busybox.net/downloads/fixes-1.24.1/ + https://git.busybox.net/busybox/commit/?id=e111a1640494fe87fc913f94fae3bb805de0fc99 + https://git.busybox.net/busybox/commit/?h=1_24_stable&id=be729c1d3b5c923f10871dd68ea94156d0f8c803 + +Signed-off-by: Andre McCurdy <armccurdy@gmail.com> + +From be729c1d3b5c923f10871dd68ea94156d0f8c803 Mon Sep 17 00:00:00 2001 +From: Ari Sundholm <ari@tuxera.com> +Date: Mon, 4 Jan 2016 15:40:37 +0200 +Subject: [PATCH] truncate: always set mode when opening file to avoid fortify + errors + +Busybox crashes due to no mode being given when opening: +$ ./busybox truncate -s 1M foo +*** invalid open64 call: O_CREAT without mode ***: ./busybox terminated +======= Backtrace: ========= +/lib/x86_64-linux-gnu/libc.so.6(+0x7338f)[0x7f66d921338f] +/lib/x86_64-linux-gnu/libc.so.6(__fortify_fail+0x5c)[0x7f66d92aac9c] +/lib/x86_64-linux-gnu/libc.so.6(+0xeb6aa)[0x7f66d928b6aa] +./busybox[0x4899f9] +======= Memory map: ======== +00400000-004d0000 r-xp 00000000 00:1a 137559 /home/ari/busybox/busybox +006cf000-006d0000 r--p 000cf000 00:1a 137559 /home/ari/busybox/busybox +006d0000-006d1000 rw-p 000d0000 00:1a 137559 /home/ari/busybox/busybox +006d1000-006d4000 rw-p 00000000 00:00 0 +014e7000-01508000 rw-p 00000000 00:00 0 [heap] +7f66d8f8a000-7f66d8fa0000 r-xp 00000000 08:07 1579008 /lib/x86_64-linux-gnu/libgcc_s.so.1 +7f66d8fa0000-7f66d919f000 ---p 00016000 08:07 1579008 /lib/x86_64-linux-gnu/libgcc_s.so.1 +7f66d919f000-7f66d91a0000 rw-p 00015000 08:07 1579008 /lib/x86_64-linux-gnu/libgcc_s.so.1 +7f66d91a0000-7f66d935b000 r-xp 00000000 08:07 1578994 /lib/x86_64-linux-gnu/libc-2.19.so +7f66d935b000-7f66d955a000 ---p 001bb000 08:07 1578994 /lib/x86_64-linux-gnu/libc-2.19.so +7f66d955a000-7f66d955e000 r--p 001ba000 08:07 1578994 /lib/x86_64-linux-gnu/libc-2.19.so +7f66d955e000-7f66d9560000 rw-p 001be000 08:07 1578994 /lib/x86_64-linux-gnu/libc-2.19.so +7f66d9560000-7f66d9565000 rw-p 00000000 00:00 0 +7f66d9565000-7f66d966a000 r-xp 00000000 08:07 1579020 /lib/x86_64-linux-gnu/libm-2.19.so +7f66d966a000-7f66d9869000 ---p 00105000 08:07 1579020 /lib/x86_64-linux-gnu/libm-2.19.so +7f66d9869000-7f66d986a000 r--p 00104000 08:07 1579020 /lib/x86_64-linux-gnu/libm-2.19.so +7f66d986a000-7f66d986b000 rw-p 00105000 08:07 1579020 /lib/x86_64-linux-gnu/libm-2.19.so +7f66d986b000-7f66d988e000 r-xp 00000000 08:07 1578981 /lib/x86_64-linux-gnu/ld-2.19.so +7f66d9a64000-7f66d9a67000 rw-p 00000000 00:00 0 +7f66d9a8a000-7f66d9a8d000 rw-p 00000000 00:00 0 +7f66d9a8d000-7f66d9a8e000 r--p 00022000 08:07 1578981 /lib/x86_64-linux-gnu/ld-2.19.so +7f66d9a8e000-7f66d9a8f000 rw-p 00023000 08:07 1578981 /lib/x86_64-linux-gnu/ld-2.19.so +7f66d9a8f000-7f66d9a90000 rw-p 00000000 00:00 0 +7ffc47761000-7ffc47782000 rw-p 00000000 00:00 0 [stack] +7ffc477ab000-7ffc477ad000 r-xp 00000000 00:00 0 [vdso] +ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall] +Aborted (core dumped) +$ + +Fix this by simply always setting the mode, as it doesn't hurt even +when O_CREAT is not specified. + +This bug is a regression introduced in fc3e40e, as xopen(), which +was originally used, would automatically set the mode. + +Signed-off-by: Ari Sundholm <ari@tuxera.com> +Signed-off-by: Mike Frysinger <vapier@gentoo.org> +(cherry picked from commit e111a1640494fe87fc913f94fae3bb805de0fc99) +--- + coreutils/truncate.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/coreutils/truncate.c b/coreutils/truncate.c +index e5fa656..4c997bf 100644 +--- a/coreutils/truncate.c ++++ b/coreutils/truncate.c +@@ -64,7 +64,7 @@ int truncate_main(int argc UNUSED_PARAM, char **argv) + + argv += optind; + while (*argv) { +- int fd = open(*argv, flags); ++ int fd = open(*argv, flags, 0666); + if (fd < 0) { + if (errno != ENOENT || !(opts & OPT_NOCREATE)) { + bb_perror_msg("%s: open", *argv); +-- +2.6.2 + diff --git a/yocto-poky/meta/recipes-core/busybox/busybox/busybox-1.24.1-unzip-regression.patch b/yocto-poky/meta/recipes-core/busybox/busybox/busybox-1.24.1-unzip-regression.patch new file mode 100644 index 000000000..e3c502091 --- /dev/null +++ b/yocto-poky/meta/recipes-core/busybox/busybox/busybox-1.24.1-unzip-regression.patch @@ -0,0 +1,143 @@ +Upstream-Status: Backport + + http://busybox.net/downloads/fixes-1.24.1/ + http://git.busybox.net/busybox/commit/?id=092fabcf1df5d46cd22be4ffcd3b871f6180eb9c + http://git.busybox.net/busybox/commit/?h=1_24_stable&id=092fabcf1df5d46cd22be4ffcd3b871f6180eb9c + +Signed-off-by: Andre McCurdy <armccurdy@gmail.com> + +From 092fabcf1df5d46cd22be4ffcd3b871f6180eb9c Mon Sep 17 00:00:00 2001 +From: Denys Vlasenko <vda.linux@googlemail.com> +Date: Fri, 30 Oct 2015 23:41:53 +0100 +Subject: [PATCH] [g]unzip: fix recent breakage. + +Also, do emit error message we so painstakingly pass from gzip internals + +Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com> +(cherry picked from commit 6bd3fff51aa74e2ee2d87887b12182a3b09792ef) +Signed-off-by: Mike Frysinger <vapier@gentoo.org> +--- + archival/libarchive/decompress_gunzip.c | 33 +++++++++++++++++++++------------ + testsuite/unzip.tests | 1 + + 2 files changed, 22 insertions(+), 12 deletions(-) + +diff --git a/archival/libarchive/decompress_gunzip.c b/archival/libarchive/decompress_gunzip.c +index c76fd31..357c9bf 100644 +--- a/archival/libarchive/decompress_gunzip.c ++++ b/archival/libarchive/decompress_gunzip.c +@@ -309,8 +309,7 @@ static int huft_build(const unsigned *b, const unsigned n, + huft_t *q; /* points to current table */ + huft_t r; /* table entry for structure assignment */ + huft_t *u[BMAX]; /* table stack */ +- unsigned v[N_MAX]; /* values in order of bit length */ +- unsigned v_end; ++ unsigned v[N_MAX + 1]; /* values in order of bit length. last v[] is never used */ + int ws[BMAX + 1]; /* bits decoded stack */ + int w; /* bits decoded */ + unsigned x[BMAX + 1]; /* bit offsets, then code stack */ +@@ -365,15 +364,17 @@ static int huft_build(const unsigned *b, const unsigned n, + *xp++ = j; + } + +- /* Make a table of values in order of bit lengths */ ++ /* Make a table of values in order of bit lengths. ++ * To detect bad input, unused v[i]'s are set to invalid value UINT_MAX. ++ * In particular, last v[i] is never filled and must not be accessed. ++ */ ++ memset(v, 0xff, sizeof(v)); + p = b; + i = 0; +- v_end = 0; + do { + j = *p++; + if (j != 0) { + v[x[j]++] = i; +- v_end = x[j]; + } + } while (++i < n); + +@@ -435,7 +436,9 @@ static int huft_build(const unsigned *b, const unsigned n, + + /* set up table entry in r */ + r.b = (unsigned char) (k - w); +- if (p >= v + v_end) { // Was "if (p >= v + n)" but v[] can be shorter! ++ if (/*p >= v + n || -- redundant, caught by the second check: */ ++ *p == UINT_MAX /* do we access uninited v[i]? (see memset(v))*/ ++ ) { + r.e = 99; /* out of values--invalid code */ + } else if (*p < s) { + r.e = (unsigned char) (*p < 256 ? 16 : 15); /* 256 is EOB code */ +@@ -520,8 +523,9 @@ static NOINLINE int inflate_codes(STATE_PARAM_ONLY) + e = t->e; + if (e > 16) + do { +- if (e == 99) +- abort_unzip(PASS_STATE_ONLY);; ++ if (e == 99) { ++ abort_unzip(PASS_STATE_ONLY); ++ } + bb >>= t->b; + k -= t->b; + e -= 16; +@@ -557,8 +561,9 @@ static NOINLINE int inflate_codes(STATE_PARAM_ONLY) + e = t->e; + if (e > 16) + do { +- if (e == 99) ++ if (e == 99) { + abort_unzip(PASS_STATE_ONLY); ++ } + bb >>= t->b; + k -= t->b; + e -= 16; +@@ -824,8 +829,9 @@ static int inflate_block(STATE_PARAM smallint *e) + + b_dynamic >>= 4; + k_dynamic -= 4; +- if (nl > 286 || nd > 30) ++ if (nl > 286 || nd > 30) { + abort_unzip(PASS_STATE_ONLY); /* bad lengths */ ++ } + + /* read in bit-length-code lengths */ + for (j = 0; j < nb; j++) { +@@ -906,12 +912,14 @@ static int inflate_block(STATE_PARAM smallint *e) + bl = lbits; + + i = huft_build(ll, nl, 257, cplens, cplext, &inflate_codes_tl, &bl); +- if (i != 0) ++ if (i != 0) { + abort_unzip(PASS_STATE_ONLY); ++ } + bd = dbits; + i = huft_build(ll + nl, nd, 0, cpdist, cpdext, &inflate_codes_td, &bd); +- if (i != 0) ++ if (i != 0) { + abort_unzip(PASS_STATE_ONLY); ++ } + + /* set up data for inflate_codes() */ + inflate_codes_setup(PASS_STATE bl, bd); +@@ -999,6 +1007,7 @@ inflate_unzip_internal(STATE_PARAM transformer_state_t *xstate) + error_msg = "corrupted data"; + if (setjmp(error_jmp)) { + /* Error from deep inside zip machinery */ ++ bb_error_msg(error_msg); + n = -1; + goto ret; + } +diff --git a/testsuite/unzip.tests b/testsuite/unzip.tests +index ca0a458..d8738a3 100755 +--- a/testsuite/unzip.tests ++++ b/testsuite/unzip.tests +@@ -34,6 +34,7 @@ rm foo.zip + testing "unzip (bad archive)" "uudecode; unzip bad.zip 2>&1; echo \$?" \ + "Archive: bad.zip + inflating: ]3j½r«IK-%Ix ++unzip: corrupted data + unzip: inflate error + 1 + " \ +-- +2.6.2 + diff --git a/yocto-poky/meta/recipes-core/busybox/busybox/busybox-1.24.1-unzip.patch b/yocto-poky/meta/recipes-core/busybox/busybox/busybox-1.24.1-unzip.patch new file mode 100644 index 000000000..718672695 --- /dev/null +++ b/yocto-poky/meta/recipes-core/busybox/busybox/busybox-1.24.1-unzip.patch @@ -0,0 +1,118 @@ +Upstream-Status: Backport + + http://busybox.net/downloads/fixes-1.24.1/ + http://git.busybox.net/busybox/commit/?id=1de25a6e87e0e627aa34298105a3d17c60a1f44e + http://git.busybox.net/busybox/commit/?h=1_24_stable&id=6767af17f11144c7cd3cfe9ef799d7f89a78fe65 + +Signed-off-by: Andre McCurdy <armccurdy@gmail.com> + +From 1de25a6e87e0e627aa34298105a3d17c60a1f44e Mon Sep 17 00:00:00 2001 +From: Denys Vlasenko <vda.linux@googlemail.com> +Date: Mon, 26 Oct 2015 19:33:05 +0100 +Subject: [PATCH] unzip: test for bad archive SEGVing + +function old new delta +huft_build 1296 1300 +4 + +Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com> +--- + archival/libarchive/decompress_gunzip.c | 11 +++++++---- + testsuite/unzip.tests | 23 ++++++++++++++++++++++- + 2 files changed, 29 insertions(+), 5 deletions(-) + +diff --git a/archival/libarchive/decompress_gunzip.c b/archival/libarchive/decompress_gunzip.c +index 7b6f459..30bf451 100644 +--- a/archival/libarchive/decompress_gunzip.c ++++ b/archival/libarchive/decompress_gunzip.c +@@ -305,11 +305,12 @@ static int huft_build(const unsigned *b, const unsigned n, + unsigned i; /* counter, current code */ + unsigned j; /* counter */ + int k; /* number of bits in current code */ +- unsigned *p; /* pointer into c[], b[], or v[] */ ++ const unsigned *p; /* pointer into c[], b[], or v[] */ + huft_t *q; /* points to current table */ + huft_t r; /* table entry for structure assignment */ + huft_t *u[BMAX]; /* table stack */ + unsigned v[N_MAX]; /* values in order of bit length */ ++ unsigned v_end; + int ws[BMAX + 1]; /* bits decoded stack */ + int w; /* bits decoded */ + unsigned x[BMAX + 1]; /* bit offsets, then code stack */ +@@ -324,7 +325,7 @@ static int huft_build(const unsigned *b, const unsigned n, + + /* Generate counts for each bit length */ + memset(c, 0, sizeof(c)); +- p = (unsigned *) b; /* cast allows us to reuse p for pointing to b */ ++ p = b; + i = n; + do { + c[*p]++; /* assume all entries <= BMAX */ +@@ -365,12 +366,14 @@ static int huft_build(const unsigned *b, const unsigned n, + } + + /* Make a table of values in order of bit lengths */ +- p = (unsigned *) b; ++ p = b; + i = 0; ++ v_end = 0; + do { + j = *p++; + if (j != 0) { + v[x[j]++] = i; ++ v_end = x[j]; + } + } while (++i < n); + +@@ -432,7 +435,7 @@ static int huft_build(const unsigned *b, const unsigned n, + + /* set up table entry in r */ + r.b = (unsigned char) (k - w); +- if (p >= v + n) { ++ if (p >= v + v_end) { // Was "if (p >= v + n)" but v[] can be shorter! + r.e = 99; /* out of values--invalid code */ + } else if (*p < s) { + r.e = (unsigned char) (*p < 256 ? 16 : 15); /* 256 is EOB code */ +diff --git a/testsuite/unzip.tests b/testsuite/unzip.tests +index 8677a03..ca0a458 100755 +--- a/testsuite/unzip.tests ++++ b/testsuite/unzip.tests +@@ -7,7 +7,7 @@ + + . ./testing.sh + +-# testing "test name" "options" "expected result" "file input" "stdin" ++# testing "test name" "commands" "expected result" "file input" "stdin" + # file input will be file called "input" + # test can create a file "actual" instead of writing to stdout + +@@ -30,6 +30,27 @@ testing "unzip (subdir only)" "unzip -q foo.zip foo/ && test -d foo && test ! -f + rmdir foo + rm foo.zip + ++# File containing some damaged encrypted stream ++testing "unzip (bad archive)" "uudecode; unzip bad.zip 2>&1; echo \$?" \ ++"Archive: bad.zip ++ inflating: ]3j½r«IK-%Ix ++unzip: inflate error ++1 ++" \ ++"" "\ ++begin-base64 644 bad.zip ++UEsDBBQAAgkIAAAAIQA5AAAANwAAADwAAAAQAAcAXTNqwr1ywqtJGxJLLSVJ ++eCkBD0AdKBk8JzQsIj01JC0/ORJQSwMEFAECCAAAAAAhADoAAAAPAAAANgAA ++AAwAAQASw73Ct1DCokohPXQiNjoUNTUiHRwgLT4WHlBLAQIQABQAAggIAAAA ++oQA5AAAANwAAADwAAAAQQAcADAAAACwAMgCAAAAAAABdM2rCvXLCq0kbEkst ++JUl4KQEPQB0oGSY4Cz4QNgEnJSYIPVBLAQIAABQAAggAAAAAIQAqAAAADwAA ++BDYAAAAMAAEADQAAADIADQAAAEEAAAASw73Ct1DKokohPXQiNzA+FAI1HCcW ++NzITNFBLBQUKAC4JAA04Cw0EOhZQSwUGAQAABAIAAgCZAAAAeQAAAAIALhM= ++==== ++" ++ ++rm * ++ + # Clean up scratch directory. + + cd .. +-- +2.6.2 + diff --git a/yocto-poky/meta/recipes-core/busybox/busybox/busybox-appletlib-dependency.patch b/yocto-poky/meta/recipes-core/busybox/busybox/busybox-appletlib-dependency.patch deleted file mode 100644 index de2dbcceb..000000000 --- a/yocto-poky/meta/recipes-core/busybox/busybox/busybox-appletlib-dependency.patch +++ /dev/null @@ -1,37 +0,0 @@ -Upstream-Status: Pending - -# copy commit message from OE as the patch comment: -# commit 98c24291aa165f53423c27ae033831ce0b3bb676 -# Author: Roman I Khimov <khimov@altell.ru> -# Date: Thu Mar 26 23:03:58 2009 +0000 -# -# busybox: update appletlib dependency patch -# -# Previous version still failed from time to time on clean-start builds -# with 4 bitbake threads and '-j16'. Building busybox as sole target worked -# well. -# -# The reason is that previous version introduced a race between applets make -# processes spawned from top-level Makefile and from libbb Makefile. -# -# Fix it with high-level dependency that doesn't create races. -# -# Signed-off-by: Koen Kooi <koen@openembedded.org> -# -# above comment added by Kevin Tian <kevin.tian@intel.com>, 2010-07-06 - -Index: busybox-1.13.2/Makefile -=================================================================== ---- busybox-1.13.2.orig/Makefile 2009-03-19 15:44:37.419270265 +0300 -+++ busybox-1.13.2/Makefile 2009-03-19 15:45:57.737521296 +0300 -@@ -471,6 +471,10 @@ - util-linux/ \ - util-linux/volume_id/ \ - -+# Lib interdeps -+# libbb uses headers generated in applets -+libbb: applets -+ - endif # KBUILD_EXTMOD - - ifeq ($(dot-config),1) diff --git a/yocto-poky/meta/recipes-core/busybox/busybox/defconfig b/yocto-poky/meta/recipes-core/busybox/busybox/defconfig index 4f5df9ebe..ffea6be87 100644 --- a/yocto-poky/meta/recipes-core/busybox/busybox/defconfig +++ b/yocto-poky/meta/recipes-core/busybox/busybox/defconfig @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Busybox version: 1.23.2 -# Thu Jul 30 11:00:00 2015 +# Busybox version: 1.24.1 +# Tue Oct 31 11:00:00 2015 # CONFIG_HAVE_DOT_CONFIG=y @@ -52,7 +52,7 @@ CONFIG_FEATURE_SUID_CONFIG_QUIET=y # CONFIG_FEATURE_PREFER_APPLETS is not set CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe" CONFIG_FEATURE_SYSLOG=y -CONFIG_FEATURE_HAVE_RPC=y +# CONFIG_FEATURE_HAVE_RPC is not set # # Build Options @@ -64,9 +64,9 @@ CONFIG_FEATURE_HAVE_RPC=y # CONFIG_FEATURE_INDIVIDUAL is not set # CONFIG_FEATURE_SHARED_BUSYBOX is not set CONFIG_LFS=y -# CONFIG_CROSS_COMPILER_PREFIX is not set +CONFIG_CROSS_COMPILER_PREFIX="" CONFIG_SYSROOT="" -# CONFIG_EXTRA_CFLAGS is not set +CONFIG_EXTRA_CFLAGS="" CONFIG_EXTRA_LDFLAGS="" CONFIG_EXTRA_LDLIBS="" @@ -156,6 +156,7 @@ CONFIG_CPIO=y CONFIG_GZIP=y # CONFIG_FEATURE_GZIP_LONG_OPTIONS is not set CONFIG_GZIP_FAST=0 +# CONFIG_FEATURE_GZIP_LEVELS is not set # CONFIG_LZOP is not set # CONFIG_LZOP_COMPR_HIGH is not set # CONFIG_RPM is not set @@ -183,10 +184,17 @@ CONFIG_DATE=y # CONFIG_FEATURE_DATE_ISOFMT is not set # CONFIG_FEATURE_DATE_NANO is not set CONFIG_FEATURE_DATE_COMPAT=y +CONFIG_DD=y +CONFIG_FEATURE_DD_SIGNAL_HANDLING=y +# CONFIG_FEATURE_DD_THIRD_STATUS_LINE is not set +# CONFIG_FEATURE_DD_IBS_OBS is not set +# CONFIG_FEATURE_DD_STATUS is not set # CONFIG_HOSTID is not set CONFIG_ID=y CONFIG_GROUPS=y CONFIG_SHUF=y +CONFIG_SYNC=y +# CONFIG_FEATURE_SYNC_FANCY is not set CONFIG_TEST=y CONFIG_FEATURE_TEST_64=y CONFIG_TOUCH=y @@ -195,6 +203,7 @@ CONFIG_FEATURE_TOUCH_SUSV3=y CONFIG_TR=y CONFIG_FEATURE_TR_CLASSES=y # CONFIG_FEATURE_TR_EQUIV is not set +# CONFIG_TRUNCATE is not set CONFIG_UNLINK=y # CONFIG_BASE64 is not set CONFIG_WHO=y @@ -211,10 +220,6 @@ CONFIG_CHROOT=y CONFIG_CP=y # CONFIG_FEATURE_CP_LONG_OPTIONS is not set CONFIG_CUT=y -CONFIG_DD=y -CONFIG_FEATURE_DD_SIGNAL_HANDLING=y -# CONFIG_FEATURE_DD_THIRD_STATUS_LINE is not set -# CONFIG_FEATURE_DD_IBS_OBS is not set CONFIG_DF=y # CONFIG_FEATURE_DF_FANCY is not set CONFIG_DIRNAME=y @@ -283,7 +288,6 @@ CONFIG_STAT=y CONFIG_FEATURE_STAT_FORMAT=y CONFIG_STTY=y # CONFIG_SUM is not set -CONFIG_SYNC=y # CONFIG_TAC is not set CONFIG_TAIL=y CONFIG_FEATURE_FANCY_TAIL=y @@ -292,6 +296,7 @@ CONFIG_TEE=y CONFIG_TRUE=y CONFIG_TTY=y CONFIG_UNAME=y +CONFIG_UNAME_OSNAME="GNU/Linux" # CONFIG_UNEXPAND is not set # CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS is not set CONFIG_UNIQ=y @@ -553,7 +558,18 @@ CONFIG_FSTRIM=y # CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set # CONFIG_FEATURE_MDEV_EXEC is not set # CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set +CONFIG_MOUNT=y +# CONFIG_FEATURE_MOUNT_FAKE is not set +# CONFIG_FEATURE_MOUNT_VERBOSE is not set +# CONFIG_FEATURE_MOUNT_HELPERS is not set +# CONFIG_FEATURE_MOUNT_LABEL is not set +# CONFIG_FEATURE_MOUNT_NFS is not set +# CONFIG_FEATURE_MOUNT_CIFS is not set +CONFIG_FEATURE_MOUNT_FLAGS=y +CONFIG_FEATURE_MOUNT_FSTAB=y +# CONFIG_FEATURE_MOUNT_OTHERTAB is not set # CONFIG_REV is not set +# CONFIG_UEVENT is not set # CONFIG_ACPID is not set # CONFIG_FEATURE_ACPID_COMPAT is not set # CONFIG_BLKID is not set @@ -599,15 +615,6 @@ CONFIG_LOSETUP=y CONFIG_MKSWAP=y # CONFIG_FEATURE_MKSWAP_UUID is not set CONFIG_MORE=y -CONFIG_MOUNT=y -# CONFIG_FEATURE_MOUNT_FAKE is not set -# CONFIG_FEATURE_MOUNT_VERBOSE is not set -# CONFIG_FEATURE_MOUNT_HELPERS is not set -# CONFIG_FEATURE_MOUNT_LABEL is not set -CONFIG_FEATURE_MOUNT_NFS=y -# CONFIG_FEATURE_MOUNT_CIFS is not set -CONFIG_FEATURE_MOUNT_FLAGS=y -CONFIG_FEATURE_MOUNT_FSTAB=y CONFIG_PIVOT_ROOT=y CONFIG_RDATE=y # CONFIG_RDEV is not set @@ -660,10 +667,15 @@ CONFIG_FEATURE_MOUNT_LOOP_CREATE=y # CONFIG_FEATURE_CROND_D is not set # CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set CONFIG_FEATURE_CROND_DIR="" +# CONFIG_I2CGET is not set +# CONFIG_I2CSET is not set +# CONFIG_I2CDUMP is not set +# CONFIG_I2CDETECT is not set CONFIG_LESS=y CONFIG_FEATURE_LESS_MAXLINES=9999999 CONFIG_FEATURE_LESS_BRACKETS=y CONFIG_FEATURE_LESS_FLAGS=y +# CONFIG_FEATURE_LESS_TRUNCATE is not set # CONFIG_FEATURE_LESS_MARKS is not set # CONFIG_FEATURE_LESS_REGEXP is not set # CONFIG_FEATURE_LESS_WINCH is not set @@ -758,6 +770,13 @@ CONFIG_NC=y CONFIG_PING=y CONFIG_PING6=y CONFIG_FEATURE_FANCY_PING=y +CONFIG_WGET=y +CONFIG_FEATURE_WGET_STATUSBAR=y +CONFIG_FEATURE_WGET_AUTHENTICATION=y +CONFIG_FEATURE_WGET_LONG_OPTIONS=y +CONFIG_FEATURE_WGET_TIMEOUT=y +# CONFIG_FEATURE_WGET_OPENSSL is not set +# CONFIG_FEATURE_WGET_SSL_HELPER is not set # CONFIG_WHOIS is not set CONFIG_FEATURE_IPV6=y # CONFIG_FEATURE_UNIX_LOCAL is not set @@ -819,6 +838,7 @@ CONFIG_IP=y CONFIG_FEATURE_IP_ADDRESS=y CONFIG_FEATURE_IP_LINK=y CONFIG_FEATURE_IP_ROUTE=y +CONFIG_FEATURE_IP_ROUTE_DIR="/etc/iproute2" CONFIG_FEATURE_IP_TUNNEL=y # CONFIG_FEATURE_IP_RULE is not set # CONFIG_FEATURE_IP_SHORT_FORMS is not set @@ -885,11 +905,6 @@ CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80 CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-R -n" # CONFIG_UDPSVD is not set # CONFIG_VCONFIG is not set -CONFIG_WGET=y -CONFIG_FEATURE_WGET_STATUSBAR=y -CONFIG_FEATURE_WGET_AUTHENTICATION=y -CONFIG_FEATURE_WGET_LONG_OPTIONS=y -CONFIG_FEATURE_WGET_TIMEOUT=y # CONFIG_ZCIP is not set # diff --git a/yocto-poky/meta/recipes-core/busybox/busybox/fail_on_no_media.patch b/yocto-poky/meta/recipes-core/busybox/busybox/fail_on_no_media.patch index 6745f169f..820acc268 100644 --- a/yocto-poky/meta/recipes-core/busybox/busybox/fail_on_no_media.patch +++ b/yocto-poky/meta/recipes-core/busybox/busybox/fail_on_no_media.patch @@ -1,4 +1,5 @@ -Upstream-Status: Pending +Upstream-Status: Denied +[https://www.mail-archive.com/busybox@busybox.net/msg22354.html] The current behaviour of busybox is to try all fstype when automounting even when no media exists. The util-linux mount command bails when no diff --git a/yocto-poky/meta/recipes-core/busybox/busybox/get_header_tar.patch b/yocto-poky/meta/recipes-core/busybox/busybox/get_header_tar.patch deleted file mode 100644 index 0e528ff91..000000000 --- a/yocto-poky/meta/recipes-core/busybox/busybox/get_header_tar.patch +++ /dev/null @@ -1,22 +0,0 @@ -Upstream-Status: Pending - -# copy commit message from OE as the patch comment: -# commit 5a0e1d473ca7aca5ffefffe9a2ec44ae7a1f35bc -# Author: Frans Meulenbroeks <fransmeulenbroeks@gmail.com> -# Date: Wed Feb 11 22:40:21 2009 +0100 -# -# busybox: fix tar problem with filenames that are exactly 100 bytes -# -# above comment added by Kevin Tian <kevin.tian@intel.com>, 2010-07-06 - ---- busybox-1.13.2/archival/libarchive/get_header_tar.c.orig 2008-11-09 18:28:02.000000000 +0100 -+++ busybox-1.13.2/archival/libarchive/get_header_tar.c 2009-02-11 22:34:52.000000000 +0100 -@@ -252,6 +252,8 @@ - file_header->name = concat_path_file(tar.prefix, tar.name); - } else - file_header->name = xstrdup(tar.name); -+ if (strlen(file_header->name) > 100) -+ file_header->name[100] = 0; - } - - /* Set bits 12-15 of the files mode */ diff --git a/yocto-poky/meta/recipes-core/busybox/busybox/init.cfg b/yocto-poky/meta/recipes-core/busybox/busybox/init.cfg new file mode 100644 index 000000000..006d4c633 --- /dev/null +++ b/yocto-poky/meta/recipes-core/busybox/busybox/init.cfg @@ -0,0 +1,3 @@ +CONFIG_INIT=y +CONFIG_FEATURE_USE_INITTAB=y + diff --git a/yocto-poky/meta/recipes-core/busybox/busybox/mdev.cfg b/yocto-poky/meta/recipes-core/busybox/busybox/mdev.cfg new file mode 100644 index 000000000..6aefe90e4 --- /dev/null +++ b/yocto-poky/meta/recipes-core/busybox/busybox/mdev.cfg @@ -0,0 +1,11 @@ +CONFIG_MDEV=y +CONFIG_FEATURE_MDEV_CONF=y +CONFIG_FEATURE_MDEV_RENAME=y +CONFIG_FEATURE_MDEV_RENAME_REGEXP=y +CONFIG_FEATURE_MDEV_EXEC=y +CONFIG_FEATURE_MDEV_LOAD_FIRMWARE=y + +CONFIG_SETSID=y +CONFIG_CTTYHACK=y + +CONFIG_FEATURE_SHADOWPASSWDS=y diff --git a/yocto-poky/meta/recipes-core/busybox/busybox/musl.cfg b/yocto-poky/meta/recipes-core/busybox/busybox/musl.cfg new file mode 100644 index 000000000..facfe8544 --- /dev/null +++ b/yocto-poky/meta/recipes-core/busybox/busybox/musl.cfg @@ -0,0 +1,12 @@ +# CONFIG_EXTRA_COMPAT is not set +# CONFIG_SELINUX is not set +# CONFIG_FEATURE_HAVE_RPC is not set +# CONFIG_WERROR is not set +# CONFIG_FEATURE_SYSTEMD is not set +# CONFIG_FEATURE_VI_REGEX_SEARCH is not set +# CONFIG_PAM is not set +# CONFIG_FEATURE_INETD_RPC is not set +# CONFIG_SELINUXENABLED is not set +# CONFIG_FEATURE_MOUNT_NFS is not set +# CONFIG_FEATURE_UTMP is not set + diff --git a/yocto-poky/meta/recipes-core/busybox/busybox/resize.cfg b/yocto-poky/meta/recipes-core/busybox/busybox/resize.cfg new file mode 100644 index 000000000..a1d9c95b2 --- /dev/null +++ b/yocto-poky/meta/recipes-core/busybox/busybox/resize.cfg @@ -0,0 +1,2 @@ +CONFIG_RESIZE=y +CONFIG_FEATURE_RESIZE_PRINT=y diff --git a/yocto-poky/meta/recipes-core/busybox/busybox_1.23.2.bb b/yocto-poky/meta/recipes-core/busybox/busybox_1.24.1.bb index 7258df022..bdaa5a564 100644 --- a/yocto-poky/meta/recipes-core/busybox/busybox_1.23.2.bb +++ b/yocto-poky/meta/recipes-core/busybox/busybox_1.24.1.bb @@ -1,8 +1,6 @@ require busybox.inc SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.bz2;name=tarball \ - file://get_header_tar.patch \ - file://busybox-appletlib-dependency.patch \ file://busybox-udhcpc-no_deconfig.patch \ file://find-touchscreen.sh \ file://busybox-cron \ @@ -30,25 +28,23 @@ SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.bz2;name=tarball \ file://login-utilities.cfg \ file://recognize_connmand.patch \ file://busybox-cross-menuconfig.patch \ - file://0001-Switch-to-POSIX-utmpx-API.patch \ - file://0001-ifconfig-fix-double-free-fatal-error-in-INET_sprint.patch \ - file://0001-chown-fix-help-text.patch \ file://0001-Use-CC-when-linking-instead-of-LD-and-use-CFLAGS-and.patch \ - file://0002-Passthrough-r-to-linker.patch \ - file://0001-randconfig-fix.patch \ + file://busybox-1.24.1-unzip.patch \ + file://busybox-1.24.1-unzip-regression.patch \ + file://busybox-1.24.1-truncate-open-mode.patch \ file://mount-via-label.cfg \ file://sha1sum.cfg \ file://sha256sum.cfg \ file://getopts.cfg \ + file://resize.cfg \ + ${@["", "file://init.cfg"][(d.getVar('VIRTUAL-RUNTIME_init_manager', True) == 'busybox')]} \ + ${@["", "file://mdev.cfg"][(d.getVar('VIRTUAL-RUNTIME_dev_manager', True) == 'busybox-mdev')]} \ + file://inittab \ + file://rcS \ + file://rcK \ + file://runlevel \ " +SRC_URI_append_libc-musl = " file://musl.cfg " -SRC_URI[tarball.md5sum] = "7925683d7dd105aabe9b6b618d48cc73" -SRC_URI[tarball.sha256sum] = "05a6f9e21aad8c098e388ae77de7b2361941afa7157ef74216703395b14e319a" - -EXTRA_OEMAKE += "V=1 ARCH=${TARGET_ARCH} CROSS_COMPILE=${TARGET_PREFIX} SKIP_STRIP=y" - -do_install_ptest () { - cp -r ${B}/testsuite ${D}${PTEST_PATH}/ - cp ${B}/.config ${D}${PTEST_PATH}/ - ln -s /bin/busybox ${D}${PTEST_PATH}/busybox -} +SRC_URI[tarball.md5sum] = "be98a40cadf84ce2d6b05fa41a275c6a" +SRC_URI[tarball.sha256sum] = "37d03132cc078937360b392170b7a1d0e5b322eee9f57c0b82292a8b1f0afe3d" diff --git a/yocto-poky/meta/recipes-core/busybox/busybox_git.bb b/yocto-poky/meta/recipes-core/busybox/busybox_git.bb index ade72f4b7..c29b89434 100644 --- a/yocto-poky/meta/recipes-core/busybox/busybox_git.bb +++ b/yocto-poky/meta/recipes-core/busybox/busybox_git.bb @@ -1,14 +1,12 @@ require busybox.inc -SRCREV = "be947c4d97c0dacb703a6f24dd813ff6dd3a33b6" +SRCREV = "1b7c17391de66502dd7a97c866e0a33681edbb1f" # Lookout for PV bump too when SRCREV is changed -PV = "1.23.2+git${SRCPV}" +PV = "1.25.0+git${SRCPV}" S = "${WORKDIR}/git" SRC_URI = "git://busybox.net/busybox.git \ - file://get_header_tar.patch \ - file://busybox-appletlib-dependency.patch \ file://busybox-udhcpc-no_deconfig.patch \ file://find-touchscreen.sh \ file://busybox-cron \ @@ -36,19 +34,19 @@ SRC_URI = "git://busybox.net/busybox.git \ file://login-utilities.cfg \ file://recognize_connmand.patch \ file://busybox-cross-menuconfig.patch \ - file://0001-ifconfig-fix-double-free-fatal-error-in-INET_sprint.patch \ - file://0001-chown-fix-help-text.patch \ + file://0001-Use-CC-when-linking-instead-of-LD-and-use-CFLAGS-and.patch \ file://mount-via-label.cfg \ file://sha1sum.cfg \ file://sha256sum.cfg \ + file://getopts.cfg \ + file://resize.cfg \ + ${@["", "file://init.cfg"][(d.getVar('VIRTUAL-RUNTIME_init_manager', True) == 'busybox')]} \ + ${@["", "file://mdev.cfg"][(d.getVar('VIRTUAL-RUNTIME_dev_manager', True) == 'busybox-mdev')]} \ + file://inittab \ + file://rcS \ + file://rcK \ + file://runlevel \ " - -EXTRA_OEMAKE += "V=1 ARCH=${TARGET_ARCH} CROSS_COMPILE=${TARGET_PREFIX} SKIP_STRIP=y" - -do_install_ptest () { - cp -r ${B}/testsuite ${D}${PTEST_PATH}/ - cp ${B}/.config ${D}${PTEST_PATH}/ - ln -s /bin/busybox ${D}${PTEST_PATH}/busybox -} +SRC_URI_append_libc-musl = " file://musl.cfg " DEFAULT_PREFERENCE = "-1" diff --git a/yocto-poky/meta/recipes-core/busybox/files/inittab b/yocto-poky/meta/recipes-core/busybox/files/inittab new file mode 100644 index 000000000..bfec4a774 --- /dev/null +++ b/yocto-poky/meta/recipes-core/busybox/files/inittab @@ -0,0 +1,24 @@ +# This is run first except when booting in single-user mode. + +# Startup the system +null::sysinit:/bin/mount -t proc proc /proc +null::sysinit:/bin/mount -t sysfs sysfs /sys +null::sysinit:/bin/mount -t devtmpfs devtmpfs /dev +null::sysinit:/bin/mount -o remount,rw / +null::sysinit:/bin/mkdir -p /dev/pts +null::sysinit:/bin/mount -t devpts devpts /dev/pts +null::sysinit:/bin/mount -a + +::sysinit:/etc/init.d/rcS + +# Stuff to do before rebooting +::ctrlaltdel:/sbin/reboot +::shutdown:/etc/init.d/rcK +::shutdown:/sbin/swapoff -a +::shutdown:/bin/umount -a -r + +# Stuff to do when restarting the init process +::restart:/sbin/init + +# set hostname +null::sysinit:/bin/busybox hostname -F /etc/hostname diff --git a/yocto-poky/meta/recipes-core/busybox/files/mdev-mount.sh b/yocto-poky/meta/recipes-core/busybox/files/mdev-mount.sh index d5d66d66f..b4385a157 100644 --- a/yocto-poky/meta/recipes-core/busybox/files/mdev-mount.sh +++ b/yocto-poky/meta/recipes-core/busybox/files/mdev-mount.sh @@ -15,7 +15,7 @@ case "$ACTION" in exit 0 fi DEVBASE=`expr substr $MDEV 1 3` - if [ "${DEVBASE}" == "mmc" ] ; then + if [ "${DEVBASE}" = "mmc" ] ; then DEVBASE=`expr substr $MDEV 1 7` fi # check for "please don't mount it" file @@ -24,7 +24,7 @@ case "$ACTION" in exit 0 fi # check for full-disk partition - if [ "${DEVBASE}" == "${MDEV}" ] ; then + if [ "${DEVBASE}" = "${MDEV}" ] ; then if [ -d /sys/block/${DEVBASE}/${DEVBASE}*1 ] ; then # Partition detected, just quit exit 0 @@ -33,7 +33,7 @@ case "$ACTION" in # No size at all exit 0 fi - if [ `cat /sys/block/${DEVBASE}/size` == 0 ] ; then + if [ "`cat /sys/block/${DEVBASE}/size`" = "0" ] ; then # empty device, bail out exit 0 fi @@ -42,7 +42,7 @@ case "$ACTION" in if ! mount /dev/$MDEV > /dev/null 2>&1 then MOUNTPOINT="${MDEV_AUTOMOUNT_ROOT}/$MDEV" - mkdir "$MOUNTPOINT" + mkdir -p "$MOUNTPOINT" mount -t auto /dev/$MDEV "$MOUNTPOINT" fi ;; diff --git a/yocto-poky/meta/recipes-core/busybox/files/rcK b/yocto-poky/meta/recipes-core/busybox/files/rcK new file mode 100644 index 000000000..f8a63e132 --- /dev/null +++ b/yocto-poky/meta/recipes-core/busybox/files/rcK @@ -0,0 +1,26 @@ +#!/bin/sh + +# Stop all init scripts in /etc/rc6.d +# executing them in numerical order. +# +for i in /etc/rc6.d/K??*; do + + # Ignore dangling symlinks (if any). + [ ! -f "$i" ] && continue + + case "$i" in + *.sh) + # Source shell script for speed. + ( + trap - INT QUIT TSTP + set stop + . $i + ) + ;; + *) + # No sh extension, so fork subprocess. + $i stop + ;; + esac +done + diff --git a/yocto-poky/meta/recipes-core/busybox/files/rcS b/yocto-poky/meta/recipes-core/busybox/files/rcS new file mode 100644 index 000000000..bb03eb608 --- /dev/null +++ b/yocto-poky/meta/recipes-core/busybox/files/rcS @@ -0,0 +1,27 @@ +#!/bin/sh + +# Start all init scripts in /etc/rcS.d and /etc/rc5.d +# executing them in numerical order. +# + +for i in /etc/rcS.d/S??* /etc/rc5.d/S??* ;do + + # Ignore dangling symlinks (if any). + [ ! -f "$i" ] && continue + + case "$i" in + *.sh) + # Source shell script for speed. + ( + trap - INT QUIT TSTP + set start + . $i + ) + ;; + *) + # No sh extension, so fork subprocess. + $i start + ;; + esac +done + diff --git a/yocto-poky/meta/recipes-core/busybox/files/runlevel b/yocto-poky/meta/recipes-core/busybox/files/runlevel new file mode 100644 index 000000000..866f3b594 --- /dev/null +++ b/yocto-poky/meta/recipes-core/busybox/files/runlevel @@ -0,0 +1,11 @@ +#!/bin/sh +# busybox init does not have LSB ( sysvinit ) like initlevels +# so lets fake it to 5 which is what we default anyway +# this helps with opkg post installs where it tries to invoke +# update-rc.d ad post install step. +# for package upgrades +# See code in update-rc.d around line 190 where it calls runlevel +# program +# +echo "5" + diff --git a/yocto-poky/meta/recipes-core/busybox/files/simple.script b/yocto-poky/meta/recipes-core/busybox/files/simple.script index 22168b07e..6ed029352 100644 --- a/yocto-poky/meta/recipes-core/busybox/files/simple.script +++ b/yocto-poky/meta/recipes-core/busybox/files/simple.script @@ -14,7 +14,7 @@ root_is_nfs() { } have_bin_ip=0 -if [ -x /sbin/ip ]; then +if [ -x /SBIN_DIR/ip ]; then have_bin_ip=1 BROADCAST="broadcast +" fi @@ -23,34 +23,34 @@ fi case "$1" in deconfig) - if [ -x /sbin/resolvconf ]; then - /sbin/resolvconf -d "${interface}.udhcpc" + if [ -x /SBIN_DIR/resolvconf ]; then + /SBIN_DIR/resolvconf -d "${interface}.udhcpc" fi if ! root_is_nfs ; then if [ $have_bin_ip -eq 1 ]; then - ip addr flush dev $interface - ip link set dev $interface up + /SBIN_DIR/ip addr flush dev $interface + /SBIN_DIR/ip link set dev $interface up else - /sbin/ifconfig $interface 0.0.0.0 + /SBIN_DIR/ifconfig $interface 0.0.0.0 fi fi ;; renew|bound) if [ $have_bin_ip -eq 1 ]; then - ip addr add dev $interface local $ip/$mask $BROADCAST + /SBIN_DIR/ip addr add dev $interface local $ip/$mask $BROADCAST else - /sbin/ifconfig $interface $ip $BROADCAST $NETMASK + /SBIN_DIR/ifconfig $interface $ip $BROADCAST $NETMASK fi if [ -n "$router" ] ; then if ! root_is_nfs ; then if [ $have_bin_ip -eq 1 ]; then - while ip route del default dev $interface 2>/dev/null ; do + while /SBIN_DIR/ip route del default dev $interface 2>/dev/null ; do : done else - while route del default gw 0.0.0.0 dev $interface 2>/dev/null ; do + while /SBIN_DIR/route del default gw 0.0.0.0 dev $interface 2>/dev/null ; do : done fi @@ -59,9 +59,9 @@ case "$1" in metric=10 for i in $router ; do if [ $have_bin_ip -eq 1 ]; then - ip route add default via $i metric $metric + /SBIN_DIR/ip route add default via $i metric $metric else - route add default gw $i dev $interface metric $metric 2>/dev/null + /SBIN_DIR/route add default gw $i dev $interface metric $metric 2>/dev/null fi metric=$(($metric + 1)) done @@ -77,8 +77,8 @@ case "$1" in " done - if [ -x /sbin/resolvconf ]; then - echo -n "$R" | /sbin/resolvconf -a "${interface}.udhcpc" + if [ -x /SBIN_DIR/resolvconf ]; then + echo -n "$R" | /SBIN_DIR/resolvconf -a "${interface}.udhcpc" else echo -n "$R" > "$RESOLV_CONF" fi |