[openwrt/openwrt] busybox: update to version 1.34.0

LEDE Commits lede-commits at lists.infradead.org
Sat Sep 4 12:05:36 PDT 2021


dedeckeh pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/b6cbbbb6ef4deaba00f5c128ea66696fc64c5bf0

commit b6cbbbb6ef4deaba00f5c128ea66696fc64c5bf0
Author: Hannu Nyman <hannu.nyman at iki.fi>
AuthorDate: Tue Aug 31 18:12:44 2021 +0300

    busybox: update to version 1.34.0
    
    Update busybox to version 1.34.0
    
    * Remove upstreamed patches (205, 530, 540)
    
    * Remove one old patch that does not apply any more. (203)
      That was originally introduced in 2008 with 563d23459,
      but does not apply after busybox restructuring with
      https://git.busybox.net/busybox/commit/networking/udhcp/dhcpc.c?h=1_34_stable&id=e6007c4911c3ea26925f9473b9f156a692585f30
      and
      https://git.busybox.net/busybox/commit/networking/udhcp/dhcpc.c?h=1_34_stable&id=1c7253726fcbab09917f143f0b703efbd2df55c3
    
    * Refresh config and patches.
    
    * Backport upstream fixes for
       - MIPS compilation breakage and
       - process substitution regression
    
    Config refresh:
    
    Refresh commands, run after busybox is first built once:
    
    cd utils/busybox/
    cd config/
    ../convert_menuconfig.pl ../../../../build_dir/target-aarch64_cortex-a53_musl/busybox-default/busybox-1.34.0
    cd ..
    ./convert_defaults.pl < ../../../build_dir/target-aarch64_cortex-a53_musl/busybox-default/busybox-1.34.0/.config > Config-defaults.in
    
    Manual edits needed afterward:
    
    * Config-defaults.in:  OpenWrt config symbol IPV6 logic applied to
      BUSYBOX_DEFAULT_FEATURE_IPV6
    * Config-defaults.in:  OpenWrt configTARGET_bcm53xx logic applied to
      BUSYBOX_DEFAULT_TRUNCATE (commit 547f1ec)
    * Config-defaults.in:  OpenWrt logic applied to
      BUSYBOX_DEFAULT_LOGIN_SESSION_AS_CHILD (commit dc92917)
      BUSYBOX_DEFAULT_UDHCPC_DEFAULT_INTERFACE (just "")
    * config/editors/Config.in: Add USE_GLIBC dependency to
      BUSYBOX_CONFIG_FEATURE_VI_REGEX_SEARCH (commit f141090)
    * config/shell/Config.in : change at "Options common to all shells"  the symbol
      SHELL_ASH  -->  BUSYBOX_CONFIG_SHELL_ASH
       (discussion in http://lists.openwrt.org/pipermail/openwrt-devel/2021-January/033140.html
         Apparently our script does not see the hidden option while
         prepending config options with "BUSYBOX_CONFIG_" which leads to a
         missed dependency when the options are later evaluated.)
    * Edit Config.in files by adding quotes to sourced items in
      config/Config.in, config/networking/Config.in and config/util-linux/Config.in (commit 1da014f)
    
    Signed-off-by: Hannu Nyman <hannu.nyman at iki.fi>
---
 package/utils/busybox/Config-defaults.in           | 33 +++++++--
 package/utils/busybox/Makefile                     |  4 +-
 package/utils/busybox/config/coreutils/Config.in   | 23 ++++---
 package/utils/busybox/config/editors/Config.in     | 18 ++++-
 package/utils/busybox/config/klibc-utils/Config.in |  2 +-
 package/utils/busybox/config/miscutils/Config.in   | 21 ++++++
 package/utils/busybox/config/networking/Config.in  |  8 +++
 .../busybox/config/networking/udhcp/Config.in      |  8 +++
 package/utils/busybox/config/shell/Config.in       | 10 +--
 .../001-backport-fix-build-breakage-on-mips.patch  | 37 ++++++++++
 .../002-backport-ash-process-substitution.patch    | 77 +++++++++++++++++++++
 .../busybox/patches/200-udhcpc_reduce_msgs.patch   | 10 +--
 .../patches/201-udhcpc_changed_ifindex.patch       |  6 +-
 .../patches/203-udhcpc_renew_no_deconfig.patch     | 10 ---
 .../205-udhcpc_allow_zero_length_options.patch     | 49 -------------
 ...RCE_DATE_EPOCH-for-timestamp-if-available.patch | 80 ----------------------
 .../540-nslookup-mention-QUERY_TYPE-SRV.patch      | 30 --------
 17 files changed, 223 insertions(+), 203 deletions(-)

diff --git a/package/utils/busybox/Config-defaults.in b/package/utils/busybox/Config-defaults.in
index d078a39954..4b264a09a2 100644
--- a/package/utils/busybox/Config-defaults.in
+++ b/package/utils/busybox/Config-defaults.in
@@ -381,7 +381,7 @@ config BUSYBOX_DEFAULT_BZIP2_SMALL
 	default 0
 config BUSYBOX_DEFAULT_FEATURE_BZIP2_DECOMPRESS
 	bool
-	default y
+	default n
 config BUSYBOX_DEFAULT_CPIO
 	bool
 	default n
@@ -514,6 +514,9 @@ config BUSYBOX_DEFAULT_CHROOT
 config BUSYBOX_DEFAULT_CKSUM
 	bool
 	default n
+config BUSYBOX_DEFAULT_CRC32
+	bool
+	default n
 config BUSYBOX_DEFAULT_COMM
 	bool
 	default n
@@ -529,6 +532,9 @@ config BUSYBOX_DEFAULT_FEATURE_CP_REFLINK
 config BUSYBOX_DEFAULT_CUT
 	bool
 	default y
+config BUSYBOX_DEFAULT_FEATURE_CUT_REGEX
+	bool
+	default n
 config BUSYBOX_DEFAULT_DATE
 	bool
 	default y
@@ -829,9 +835,6 @@ config BUSYBOX_DEFAULT_TIMEOUT
 config BUSYBOX_DEFAULT_TOUCH
 	bool
 	default y
-config BUSYBOX_DEFAULT_FEATURE_TOUCH_NODEREF
-	bool
-	default n
 config BUSYBOX_DEFAULT_FEATURE_TOUCH_SUSV3
 	bool
 	default y
@@ -1058,6 +1061,9 @@ config BUSYBOX_DEFAULT_FEATURE_VI_8BIT
 config BUSYBOX_DEFAULT_FEATURE_VI_COLON
 	bool
 	default y
+config BUSYBOX_DEFAULT_FEATURE_VI_COLON_EXPAND
+	bool
+	default n
 config BUSYBOX_DEFAULT_FEATURE_VI_YANKMARK
 	bool
 	default y
@@ -1097,6 +1103,9 @@ config BUSYBOX_DEFAULT_FEATURE_VI_UNDO_QUEUE
 config BUSYBOX_DEFAULT_FEATURE_VI_UNDO_QUEUE_MAX
 	int
 	default 0
+config BUSYBOX_DEFAULT_FEATURE_VI_VERBOSE_STATUS
+	bool
+	default n
 config BUSYBOX_DEFAULT_FEATURE_ALLOW_EXEC
 	bool
 	default y
@@ -1895,6 +1904,9 @@ config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_XFS
 config BUSYBOX_DEFAULT_ADJTIMEX
 	bool
 	default n
+config BUSYBOX_DEFAULT_ASCII
+	bool
+	default n
 config BUSYBOX_DEFAULT_BBCONFIG
 	bool
 	default n
@@ -2183,6 +2195,9 @@ config BUSYBOX_DEFAULT_VOLNAME
 config BUSYBOX_DEFAULT_WATCHDOG
 	bool
 	default n
+config BUSYBOX_DEFAULT_FEATURE_WATCHDOG_OPEN_TWICE
+	bool
+	default n
 config BUSYBOX_DEFAULT_FEATURE_IPV6
 	bool
 	default y if IPV6
@@ -2589,6 +2604,9 @@ config BUSYBOX_DEFAULT_FEATURE_WGET_LONG_OPTIONS
 config BUSYBOX_DEFAULT_FEATURE_WGET_STATUSBAR
 	bool
 	default n
+config BUSYBOX_DEFAULT_FEATURE_WGET_FTP
+	bool
+	default n
 config BUSYBOX_DEFAULT_FEATURE_WGET_AUTHENTICATION
 	bool
 	default n
@@ -2652,6 +2670,9 @@ config BUSYBOX_DEFAULT_FEATURE_UDHCPC6_RFC4833
 config BUSYBOX_DEFAULT_FEATURE_UDHCPC6_RFC5970
 	bool
 	default n
+config BUSYBOX_DEFAULT_UDHCPC_DEFAULT_INTERFACE
+	string
+	default ""
 config BUSYBOX_DEFAULT_FEATURE_UDHCP_PORT
 	bool
 	default n
@@ -2985,10 +3006,10 @@ config BUSYBOX_DEFAULT_HUSH_BASH_COMPAT
 config BUSYBOX_DEFAULT_HUSH_BRACE_EXPANSION
 	bool
 	default n
-config BUSYBOX_DEFAULT_HUSH_LINENO_VAR
+config BUSYBOX_DEFAULT_HUSH_BASH_SOURCE_CURDIR
 	bool
 	default n
-config BUSYBOX_DEFAULT_HUSH_BASH_SOURCE_CURDIR
+config BUSYBOX_DEFAULT_HUSH_LINENO_VAR
 	bool
 	default n
 config BUSYBOX_DEFAULT_HUSH_INTERACTIVE
diff --git a/package/utils/busybox/Makefile b/package/utils/busybox/Makefile
index 76a1de33b7..306da6c36c 100644
--- a/package/utils/busybox/Makefile
+++ b/package/utils/busybox/Makefile
@@ -5,14 +5,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=busybox
-PKG_VERSION:=1.33.1
+PKG_VERSION:=1.34.0
 PKG_RELEASE:=$(AUTORELEASE)
 PKG_FLAGS:=essential
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=https://www.busybox.net/downloads \
 		http://sources.buildroot.net
-PKG_HASH:=12cec6bd2b16d8a9446dd16130f2b92982f1819f6e1c5f5887b6db03f5660d28
+PKG_HASH:=ec8d1615edb045b83b81966604759c4d4ac921434ab4011da604f629c06074ce
 
 PKG_BUILD_DEPENDS:=BUSYBOX_CONFIG_PAM:libpam
 PKG_BUILD_PARALLEL:=1
diff --git a/package/utils/busybox/config/coreutils/Config.in b/package/utils/busybox/config/coreutils/Config.in
index e256ca36f5..c84c1d5a94 100644
--- a/package/utils/busybox/config/coreutils/Config.in
+++ b/package/utils/busybox/config/coreutils/Config.in
@@ -63,8 +63,10 @@ config BUSYBOX_CONFIG_CHROOT
 config BUSYBOX_CONFIG_CKSUM
 	bool "cksum (4.1 kb)"
 	default BUSYBOX_DEFAULT_CKSUM
-	help
-	cksum is used to calculate the CRC32 checksum of a file.
+
+config BUSYBOX_CONFIG_CRC32
+	bool "crc32 (4.1 kb)"
+	default BUSYBOX_DEFAULT_CRC32
 config BUSYBOX_CONFIG_COMM
 	bool "comm (4.2 kb)"
 	default BUSYBOX_DEFAULT_COMM
@@ -95,6 +97,13 @@ config BUSYBOX_CONFIG_CUT
 	help
 	cut is used to print selected parts of lines from
 	each file to stdout.
+
+config BUSYBOX_CONFIG_FEATURE_CUT_REGEX
+	bool "cut -F"
+	default BUSYBOX_DEFAULT_FEATURE_CUT_REGEX
+	depends on BUSYBOX_CONFIG_CUT
+	help
+	Allow regex based delimiters.
 config BUSYBOX_CONFIG_DATE
 	bool "date (7 kb)"
 	default BUSYBOX_DEFAULT_DATE
@@ -739,16 +748,8 @@ config BUSYBOX_CONFIG_TOUCH
 	touch is used to create or change the access and/or
 	modification timestamp of specified files.
 
-config BUSYBOX_CONFIG_FEATURE_TOUCH_NODEREF
-	bool "Add support for -h"
-	default BUSYBOX_DEFAULT_FEATURE_TOUCH_NODEREF
-	depends on BUSYBOX_CONFIG_TOUCH
-	help
-	Enable touch to have the -h option.
-	This requires libc support for lutimes() function.
-
 config BUSYBOX_CONFIG_FEATURE_TOUCH_SUSV3
-	bool "Add support for SUSV3 features (-d -t -r)"
+	bool "Add support for SUSV3 features (-a -d -m -t -r)"
 	default BUSYBOX_DEFAULT_FEATURE_TOUCH_SUSV3
 	depends on BUSYBOX_CONFIG_TOUCH
 	help
diff --git a/package/utils/busybox/config/editors/Config.in b/package/utils/busybox/config/editors/Config.in
index 16d08bc0f8..dc80a4ec0d 100644
--- a/package/utils/busybox/config/editors/Config.in
+++ b/package/utils/busybox/config/editors/Config.in
@@ -110,6 +110,14 @@ config BUSYBOX_CONFIG_FEATURE_VI_COLON
 	Enable a limited set of colon commands. This does not
 	provide an "ex" mode.
 
+config BUSYBOX_CONFIG_FEATURE_VI_COLON_EXPAND
+	bool "Expand \"%\" and \"#\" in colon commands"
+	default BUSYBOX_DEFAULT_FEATURE_VI_COLON_EXPAND
+	depends on BUSYBOX_CONFIG_FEATURE_VI_COLON
+	help
+	Expand the special characters \"%\" (current filename)
+	and \"#\" (alternate filename) in colon commands.
+
 config BUSYBOX_CONFIG_FEATURE_VI_YANKMARK
 	bool "Enable yank/put commands and mark cmds"
 	default BUSYBOX_DEFAULT_FEATURE_VI_YANKMARK
@@ -126,7 +134,7 @@ config BUSYBOX_CONFIG_FEATURE_VI_SEARCH
 
 config BUSYBOX_CONFIG_FEATURE_VI_REGEX_SEARCH
 	bool "Enable regex in search and replace"
-	default BUSYBOX_DEFAULT_FEATURE_VI_REGEX_SEARCH
+	default BUSYBOX_DEFAULT_FEATURE_VI_REGEX_SEARCH   # Uses GNU regex, which may be unavailable. FIXME
 	depends on BUSYBOX_CONFIG_FEATURE_VI_SEARCH
 	depends on USE_GLIBC
 	help
@@ -218,6 +226,14 @@ config BUSYBOX_CONFIG_FEATURE_VI_UNDO_QUEUE_MAX
 	Unless you want more (or less) frequent "undo points" while typing,
 	you should probably leave this unchanged.
 
+config BUSYBOX_CONFIG_FEATURE_VI_VERBOSE_STATUS
+	bool "Enable verbose status reporting"
+	default BUSYBOX_DEFAULT_FEATURE_VI_VERBOSE_STATUS
+	depends on BUSYBOX_CONFIG_VI
+	help
+	Enable more verbose reporting of the results of yank, change,
+	delete, undo and substitution commands.
+
 config BUSYBOX_CONFIG_FEATURE_ALLOW_EXEC
 	bool "Allow vi and awk to execute shell commands"
 	default BUSYBOX_DEFAULT_FEATURE_ALLOW_EXEC
diff --git a/package/utils/busybox/config/klibc-utils/Config.in b/package/utils/busybox/config/klibc-utils/Config.in
index 408c9f695d..06b9681bc9 100644
--- a/package/utils/busybox/config/klibc-utils/Config.in
+++ b/package/utils/busybox/config/klibc-utils/Config.in
@@ -13,7 +13,7 @@ config BUSYBOX_CONFIG_MINIPS
 	Alias to "ps".
 config BUSYBOX_CONFIG_NUKE
 	bool "nuke (2.9 kb)"
-	default BUSYBOX_DEFAULT_NUKE
+	default BUSYBOX_DEFAULT_NUKE  # off by default: too "accidentally destructive"
 	help
 	Alias to "rm -rf".
 config BUSYBOX_CONFIG_RESUME
diff --git a/package/utils/busybox/config/miscutils/Config.in b/package/utils/busybox/config/miscutils/Config.in
index f3b29787d1..ecb83d9647 100644
--- a/package/utils/busybox/config/miscutils/Config.in
+++ b/package/utils/busybox/config/miscutils/Config.in
@@ -12,6 +12,12 @@ config BUSYBOX_CONFIG_ADJTIMEX
 	help
 	Adjtimex reads and optionally sets adjustment parameters for
 	the Linux clock adjustment algorithm.
+config BUSYBOX_CONFIG_ASCII
+	bool "ascii"
+	default BUSYBOX_DEFAULT_ASCII
+	help
+	Print ascii table.
+
 config BUSYBOX_CONFIG_BBCONFIG
 	bool "bbconfig (9.7 kb)"
 	default BUSYBOX_DEFAULT_BBCONFIG
@@ -788,4 +794,19 @@ config BUSYBOX_CONFIG_WATCHDOG
 	certain amount of time, the watchdog device assumes the system has
 	hung, and will cause the hardware to reboot.
 
+config BUSYBOX_CONFIG_FEATURE_WATCHDOG_OPEN_TWICE
+	bool "Open watchdog device twice, closing it gracefully in between"
+	depends on BUSYBOX_CONFIG_WATCHDOG
+	default BUSYBOX_DEFAULT_FEATURE_WATCHDOG_OPEN_TWICE   # this behavior was essentially a hack for a broken driver
+	help
+	When enabled, the watchdog device is opened and then immediately
+	magic-closed, before being opened a second time. This may be necessary
+	for some watchdog devices, but can cause spurious warnings in the
+	kernel log if the nowayout feature is enabled. If this workaround
+	is really needed for you machine to work properly, consider whether
+	it should be fixed in the kernel driver instead. Even when disabled,
+	the behaviour is easily emulated with a "printf 'V' > /dev/watchdog"
+	immediately before starting the busybox watchdog daemon. Say n unless
+	you know that you absolutely need this.
+
 endmenu
diff --git a/package/utils/busybox/config/networking/Config.in b/package/utils/busybox/config/networking/Config.in
index 3e1c4c4c04..79bb6b1f53 100644
--- a/package/utils/busybox/config/networking/Config.in
+++ b/package/utils/busybox/config/networking/Config.in
@@ -1092,6 +1092,13 @@ config BUSYBOX_CONFIG_FEATURE_WGET_STATUSBAR
 	default BUSYBOX_DEFAULT_FEATURE_WGET_STATUSBAR
 	depends on BUSYBOX_CONFIG_WGET
 
+config BUSYBOX_CONFIG_FEATURE_WGET_FTP
+	bool "Enable FTP protocol (+1k)"
+	default BUSYBOX_DEFAULT_FEATURE_WGET_FTP
+	depends on BUSYBOX_CONFIG_WGET
+	help
+	To support FTPS, enable FEATURE_WGET_HTTPS as well.
+
 config BUSYBOX_CONFIG_FEATURE_WGET_AUTHENTICATION
 	bool "Enable HTTP authentication"
 	default BUSYBOX_DEFAULT_FEATURE_WGET_AUTHENTICATION
@@ -1120,6 +1127,7 @@ config BUSYBOX_CONFIG_FEATURE_WGET_HTTPS
 	select BUSYBOX_CONFIG_TLS
 	help
 	wget will use internal TLS code to connect to https:// URLs.
+	It also enables FTPS support, but it's not well tested yet.
 	Note:
 	On NOMMU machines, ssl_helper applet should be available
 	in the $PATH for this to work. Make sure to select that applet.
diff --git a/package/utils/busybox/config/networking/udhcp/Config.in b/package/utils/busybox/config/networking/udhcp/Config.in
index 9bede61499..ecfa283e23 100644
--- a/package/utils/busybox/config/networking/udhcp/Config.in
+++ b/package/utils/busybox/config/networking/udhcp/Config.in
@@ -142,6 +142,14 @@ config BUSYBOX_CONFIG_FEATURE_UDHCPC6_RFC5970
 comment "Common options for DHCP applets"
         depends on BUSYBOX_CONFIG_UDHCPD || BUSYBOX_CONFIG_UDHCPC || BUSYBOX_CONFIG_UDHCPC6 || BUSYBOX_CONFIG_DHCPRELAY
 
+config BUSYBOX_CONFIG_UDHCPC_DEFAULT_INTERFACE
+	string "Default interface name"
+	default BUSYBOX_DEFAULT_UDHCPC_DEFAULT_INTERFACE
+	depends on BUSYBOX_CONFIG_UDHCPC || BUSYBOX_CONFIG_UDHCPC6
+	help
+	The interface that will be used if no other interface is
+	specified on the commandline.
+
 config BUSYBOX_CONFIG_FEATURE_UDHCP_PORT
 	bool "Enable '-P port' option for udhcpd and udhcpc"
 	default BUSYBOX_DEFAULT_FEATURE_UDHCP_PORT
diff --git a/package/utils/busybox/config/shell/Config.in b/package/utils/busybox/config/shell/Config.in
index cb43bcd84c..2b07812109 100644
--- a/package/utils/busybox/config/shell/Config.in
+++ b/package/utils/busybox/config/shell/Config.in
@@ -299,11 +299,6 @@ config BUSYBOX_CONFIG_HUSH_BRACE_EXPANSION
 	help
 	Enable {abc,def} extension.
 
-config BUSYBOX_CONFIG_HUSH_LINENO_VAR
-	bool "$LINENO variable"
-	default BUSYBOX_DEFAULT_HUSH_LINENO_VAR
-	depends on BUSYBOX_CONFIG_HUSH_BASH_COMPAT
-
 config BUSYBOX_CONFIG_HUSH_BASH_SOURCE_CURDIR
 	bool "'source' and '.' builtins search current directory after $PATH"
 	default BUSYBOX_DEFAULT_HUSH_BASH_SOURCE_CURDIR   # do not encourage non-standard behavior
@@ -311,6 +306,11 @@ config BUSYBOX_CONFIG_HUSH_BASH_SOURCE_CURDIR
 	help
 	This is not compliant with standards. Avoid if possible.
 
+config BUSYBOX_CONFIG_HUSH_LINENO_VAR
+	bool "$LINENO variable (bashism)"
+	default BUSYBOX_DEFAULT_HUSH_LINENO_VAR
+	depends on BUSYBOX_CONFIG_SHELL_HUSH
+
 config BUSYBOX_CONFIG_HUSH_INTERACTIVE
 	bool "Interactive mode"
 	default BUSYBOX_DEFAULT_HUSH_INTERACTIVE
diff --git a/package/utils/busybox/patches/001-backport-fix-build-breakage-on-mips.patch b/package/utils/busybox/patches/001-backport-fix-build-breakage-on-mips.patch
new file mode 100644
index 0000000000..354e3e511a
--- /dev/null
+++ b/package/utils/busybox/patches/001-backport-fix-build-breakage-on-mips.patch
@@ -0,0 +1,37 @@
+From 00adcdb64a5487f0ea6b400d912dcf7c58637696 Mon Sep 17 00:00:00 2001
+From: Denys Vlasenko <vda.linux at googlemail.com>
+Date: Fri, 20 Aug 2021 13:33:50 +0200
+Subject: udhcp: fix build breakage on MIPS
+
+Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
+---
+ networking/udhcp/common.h | 12 ------------
+ 1 file changed, 12 deletions(-)
+
+diff --git a/networking/udhcp/common.h b/networking/udhcp/common.h
+index 8c678dd32..ca778dab8 100644
+--- a/networking/udhcp/common.h
++++ b/networking/udhcp/common.h
+@@ -304,18 +304,6 @@ void udhcp_dump_packet(struct dhcp_packet *packet) FAST_FUNC;
+ # define log3s(msg) ((void)0)
+ #endif
+ 
+-#if defined(__mips__)
+-/*
+- * The 'simple' message functions have a negative impact on the size of the
+- * DHCP code when compiled for MIPS, so don't use them in this case.
+- */
+-#define bb_simple_info_msg bb_info_msg
+-#define bb_simple_error_msg bb_error_msg
+-#define bb_simple_perror_msg_and_die bb_perror_msg_and_die
+-#undef log1s
+-#define log1s log1
+-#endif
+-
+ /*** Other shared functions ***/
+ 
+ /* 2nd param is "uint32_t*" */
+-- 
+cgit v1.2.3
+
+
diff --git a/package/utils/busybox/patches/002-backport-ash-process-substitution.patch b/package/utils/busybox/patches/002-backport-ash-process-substitution.patch
new file mode 100644
index 0000000000..5b348ea26b
--- /dev/null
+++ b/package/utils/busybox/patches/002-backport-ash-process-substitution.patch
@@ -0,0 +1,77 @@
+Stacy Harper reports that this script:
+
+   test() { . /tmp/bb_test; }
+   echo "export TEST=foo" >/tmp/bb_test
+   test 2>/dev/null
+   echo "$TEST"
+
+correctly prints 'foo' in BusyBox 1.33 but hangs in 1.34.
+
+Bisection suggested the problem was caused by commit a1b0d3856 (ash: add
+process substitution in bash-compatibility mode).  Removing the call to
+unwindredir() in cmdloop() introduced in that commit makes the script
+work again.
+
+Additionally, these examples of process substitution:
+
+   while true; do cat <(echo hi); done
+   f() { while true; do cat <(echo hi); done }
+   f
+
+result in running out of file descriptors.  This is a regression from
+v5 of the process substitution patch caused by changes to evalcommand()
+not being transferred to v6.
+
+function                                             old     new   delta
+static.pushredir                                       -      99     +99
+evalcommand                                         1729    1750     +21
+exitreset                                             69      86     +17
+cmdloop                                              372     365      -7
+unwindredir                                           28       -     -28
+pushredir                                            112       -    -112
+------------------------------------------------------------------------------
+(add/remove: 1/2 grow/shrink: 2/1 up/down: 137/-147)          Total: -10 bytes
+
+Signed-off-by: Ron Yorston <rmy at pobox.com>
+---
+ shell/ash.c | 10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/shell/ash.c b/shell/ash.c
+index b5947147a..53c140930 100644
+--- a/shell/ash.c
++++ b/shell/ash.c
+@@ -10278,6 +10278,9 @@ evalcommand(union node *cmd, int flags)
+ 
+ 	/* First expand the arguments. */
+ 	TRACE(("evalcommand(0x%lx, %d) called\n", (long)cmd, flags));
++#if BASH_PROCESS_SUBST
++	redir_stop = redirlist;
++#endif
+ 	file_stop = g_parsefile;
+ 	back_exitstatus = 0;
+ 
+@@ -10356,7 +10359,11 @@ evalcommand(union node *cmd, int flags)
+ 		lastarg = nargv[-1];
+ 
+ 	expredir(cmd->ncmd.redirect);
++#if !BASH_PROCESS_SUBST
+ 	redir_stop = pushredir(cmd->ncmd.redirect);
++#else
++	pushredir(cmd->ncmd.redirect);
++#endif
+ 	preverrout_fd = 2;
+ 	if (BASH_XTRACEFD && xflag) {
+ 		/* NB: bash closes fd == $BASH_XTRACEFD when it is changed.
+@@ -13476,9 +13483,6 @@ cmdloop(int top)
+ #if JOBS
+ 		if (doing_jobctl)
+ 			showjobs(SHOW_CHANGED|SHOW_STDERR);
+-#endif
+-#if BASH_PROCESS_SUBST
+-		unwindredir(NULL);
+ #endif
+ 		inter = 0;
+ 		if (iflag && top) {
+-- 
+2.31.1
diff --git a/package/utils/busybox/patches/200-udhcpc_reduce_msgs.patch b/package/utils/busybox/patches/200-udhcpc_reduce_msgs.patch
index 2e67009224..c0f234ee42 100644
--- a/package/utils/busybox/patches/200-udhcpc_reduce_msgs.patch
+++ b/package/utils/busybox/patches/200-udhcpc_reduce_msgs.patch
@@ -1,18 +1,18 @@
 --- a/networking/udhcp/dhcpc.c
 +++ b/networking/udhcp/dhcpc.c
-@@ -712,6 +712,7 @@ static int bcast_or_ucast(struct dhcp_pa
- static NOINLINE int send_discover(uint32_t xid, uint32_t requested)
+@@ -722,6 +722,7 @@ static int bcast_or_ucast(struct dhcp_pa
+ static NOINLINE int send_discover(uint32_t requested)
  {
  	struct dhcp_packet packet;
 +	static int msgs = 0;
  
  	/* Fill in: op, htype, hlen, cookie, chaddr fields,
- 	 * random xid field (we override it below),
-@@ -729,6 +730,7 @@ static NOINLINE int send_discover(uint32
+ 	 * xid field, message type option:
+@@ -736,6 +737,7 @@ static NOINLINE int send_discover(uint32
  	 */
  	add_client_options(&packet);
  
 +	if (msgs++ < 3)
- 	bb_info_msg("sending %s", "discover");
+ 	bb_simple_info_msg("broadcasting discover");
  	return raw_bcast_from_client_data_ifindex(&packet, INADDR_ANY);
  }
diff --git a/package/utils/busybox/patches/201-udhcpc_changed_ifindex.patch b/package/utils/busybox/patches/201-udhcpc_changed_ifindex.patch
index 875f2ce5fc..a4bda992c4 100644
--- a/package/utils/busybox/patches/201-udhcpc_changed_ifindex.patch
+++ b/package/utils/busybox/patches/201-udhcpc_changed_ifindex.patch
@@ -1,8 +1,8 @@
 --- a/networking/udhcp/dhcpc.c
 +++ b/networking/udhcp/dhcpc.c
-@@ -1415,6 +1415,12 @@ int udhcpc_main(int argc UNUSED_PARAM, c
- 		/* silence "uninitialized!" warning */
- 		unsigned timestamp_before_wait = timestamp_before_wait;
+@@ -1384,6 +1384,12 @@ int udhcpc_main(int argc UNUSED_PARAM, c
+ 		struct pollfd pfds[2];
+ 		struct dhcp_packet packet;
  
 +		/* When running on a bridge, the ifindex may have changed (e.g. if
 +		 * member interfaces were added/removed or if the status of the
diff --git a/package/utils/busybox/patches/203-udhcpc_renew_no_deconfig.patch b/package/utils/busybox/patches/203-udhcpc_renew_no_deconfig.patch
deleted file mode 100644
index 88a98c0a1c..0000000000
--- a/package/utils/busybox/patches/203-udhcpc_renew_no_deconfig.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/networking/udhcp/dhcpc.c
-+++ b/networking/udhcp/dhcpc.c
-@@ -1125,7 +1125,6 @@ static void perform_renew(void)
- 		client_data.state = RENEW_REQUESTED;
- 		break;
- 	case RENEW_REQUESTED: /* impatient are we? fine, square 1 */
--		udhcp_run_script(NULL, "deconfig");
- 	case REQUESTING:
- 	case RELEASED:
- 		change_listen_mode(LISTEN_RAW);
diff --git a/package/utils/busybox/patches/205-udhcpc_allow_zero_length_options.patch b/package/utils/busybox/patches/205-udhcpc_allow_zero_length_options.patch
deleted file mode 100644
index abe8baf54f..0000000000
--- a/package/utils/busybox/patches/205-udhcpc_allow_zero_length_options.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 7eed119b84b0f7efb7ef351940dd895dc2379eb3 Mon Sep 17 00:00:00 2001
-From: Russell Senior <russell at personaltelco.net>
-Date: Mon, 15 Mar 2021 23:27:58 -0700
-Subject: [PATCH v2] udhcpc: ignore zero-length DHCP options
-
-Discovered that the DHCP server on a TrendNet router (unknown model)
-provides a zero-length option 12 (Host Name) in the DHCP ACK message. This
-has the effect of causing udhcpc to drop the rest of the options, including
-option 51 (IP Address Lease Time), 3 (Router), and 6 (Domain Name Server),
-most importantly leaving the OpenWrt device with no default gateway.
-
-The TrendNet behavior violates RFC 2132, which in Section 3.14 declares that
-option 12 has a miniumum length of 1 octet. It is perhaps not a cosmic coincidence
-that I found this behavior on Pi Day.
-
-This patch allows zero length options without bailing out, by simply skipping them.
-
-v2 changelog:
-* advance the optionptr by two bytes, not one;
-* add a message to warn about the rfc violation;
-
-Signed-off-by: Russell Senior <russell at personaltelco.net>
----
- networking/udhcp/common.c | 9 +++++++--
- 1 file changed, 7 insertions(+), 2 deletions(-)
-
-diff --git a/networking/udhcp/common.c b/networking/udhcp/common.c
-index 4bc719001..a16fd85d0 100644
---- a/networking/udhcp/common.c
-+++ b/networking/udhcp/common.c
-@@ -277,8 +277,13 @@ uint8_t* FAST_FUNC udhcp_scan_options(struct dhcp_packet *packet, struct dhcp_sc
- 			goto complain; /* complain and return NULL */
- 		len = 2 + scan_state->optionptr[OPT_LEN];
- 		scan_state->rem -= len;
--		/* So far no valid option with length 0 known. */
--		if (scan_state->rem < 0 || scan_state->optionptr[OPT_LEN] == 0)
-+		/* skip any options with zero length */
-+		if (scan_state->optionptr[OPT_LEN] == 0) {
-+			scan_state->optionptr += 2;
-+			bb_simple_error_msg("warning: zero length DHCP option violates rfc2132, skipping");
-+			continue;
-+		}
-+		if (scan_state->rem < 0)
- 			goto complain; /* complain and return NULL */
- 
- 		if (scan_state->optionptr[OPT_CODE] == DHCP_OPTION_OVERLOAD) {
--- 
-2.30.1
-
diff --git a/package/utils/busybox/patches/530-use-SOURCE_DATE_EPOCH-for-timestamp-if-available.patch b/package/utils/busybox/patches/530-use-SOURCE_DATE_EPOCH-for-timestamp-if-available.patch
deleted file mode 100644
index af473622ed..0000000000
--- a/package/utils/busybox/patches/530-use-SOURCE_DATE_EPOCH-for-timestamp-if-available.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From 59f773ee81a8945321f4aa20abc5e9577e6483e4 Mon Sep 17 00:00:00 2001
-From: Paul Spooren <mail at aparcar.org>
-Date: Thu, 13 May 2021 11:25:34 +0200
-Subject: [PATCH] use SOURCE_DATE_EPOCH for timestamp if available
-
-The SOURCE_DATE_EPOCH is an effort of the Reproducible Builds
-organization to make timestamps/build dates in compiled tools
-deterministic over several repetitive builds.
-
-Busybox shows by default the build date timestamp which changes whenever
-compiled. To have a reasonable accurate build date while staying
-reproducible, it's possible to use the *date of last source
-modification* rather than the current time and date.
-
-Further information on SOURCE_DATE_EPOCH are available online [1].
-
-This patch modifies `confdata.c` so that the content of the
-SOURCE_DATE_EPOCH env variable is used as timestamp.
-
-To be independent of different timezones between builds, whenever
-SOURCE_DATE_EPOCH is defined the GMT time is used.
-
-[1]: https://reproducible-builds.org/docs/source-date-epoch/
-
-Signed-off-by: Paul Spooren <mail at aparcar.org>
----
- scripts/kconfig/confdata.c | 17 ++++++++++++++---
- 1 file changed, 14 insertions(+), 3 deletions(-)
-
-diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
-index b05b96e45..73c25e3a8 100644
---- a/scripts/kconfig/confdata.c
-+++ b/scripts/kconfig/confdata.c
-@@ -342,6 +342,8 @@ int conf_write(const char *name)
- 	time_t now;
- 	int use_timestamp = 1;
- 	char *env;
-+	char *source_date_epoch;
-+	struct tm *build_time;
- 
- 	dirname[0] = 0;
- 	if (name && name[0]) {
-@@ -378,7 +380,16 @@ int conf_write(const char *name)
- 	}
- 	sym = sym_lookup("KERNELVERSION", 0);
- 	sym_calc_value(sym);
--	time(&now);
-+
-+	source_date_epoch = getenv("SOURCE_DATE_EPOCH");
-+	if (source_date_epoch && *source_date_epoch) {
-+		now = strtoull(source_date_epoch, NULL, 10);
-+		build_time = gmtime(&now);
-+	} else {
-+		time(&now);
-+		build_time = localtime(&now);
-+	}
-+
- 	env = getenv("KCONFIG_NOTIMESTAMP");
- 	if (env && *env)
- 		use_timestamp = 0;
-@@ -398,14 +409,14 @@ int conf_write(const char *name)
- 		if (use_timestamp) {
- 			size_t ret = \
- 				strftime(buf, sizeof(buf), "#define AUTOCONF_TIMESTAMP "
--					"\"%Y-%m-%d %H:%M:%S %Z\"\n", localtime(&now));
-+					"\"%Y-%m-%d %H:%M:%S %Z\"\n", build_time);
- 			/* if user has Factory timezone or some other odd install, the
- 			 * %Z above will overflow the string leaving us with undefined
- 			 * results ... so let's try again without the timezone.
- 			 */
- 			if (ret == 0)
- 				strftime(buf, sizeof(buf), "#define AUTOCONF_TIMESTAMP "
--					"\"%Y-%m-%d %H:%M:%S\"\n", localtime(&now));
-+					"\"%Y-%m-%d %H:%M:%S\"\n", build_time);
- 		} else { /* bbox */
- 			strcpy(buf, "#define AUTOCONF_TIMESTAMP \"\"\n");
- 		}
--- 
-2.30.2
-
diff --git a/package/utils/busybox/patches/540-nslookup-mention-QUERY_TYPE-SRV.patch b/package/utils/busybox/patches/540-nslookup-mention-QUERY_TYPE-SRV.patch
deleted file mode 100644
index ac9afa34ef..0000000000
--- a/package/utils/busybox/patches/540-nslookup-mention-QUERY_TYPE-SRV.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From a0136f24f788e8bfc4ab74a647b27e115a25d9fb Mon Sep 17 00:00:00 2001
-From: Paul Spooren <mail at aparcar.org>
-Date: Wed, 19 May 2021 00:55:21 +0200
-Subject: [PATCH] nslookup: mention QUERY_TYPE SRV
-
-SRV lookups are supported since "6b4960155 nslookup: implement support
-for SRV records" and should therefore be mentioned as a possible
-QUERY_TYPE in the help message.
-
-Signed-off-by: Paul Spooren <mail at aparcar.org>
----
- networking/nslookup.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/networking/nslookup.c b/networking/nslookup.c
-index dda22de0e..2ae8d391c 100644
---- a/networking/nslookup.c
-+++ b/networking/nslookup.c
-@@ -25,7 +25,7 @@
- //usage:#define nslookup_full_usage "\n\n"
- //usage:       "Query DNS about HOST"
- //usage:       IF_FEATURE_NSLOOKUP_BIG("\n")
--//usage:       IF_FEATURE_NSLOOKUP_BIG("\nQUERY_TYPE: soa,ns,a,"IF_FEATURE_IPV6("aaaa,")"cname,mx,txt,ptr,any")
-+//usage:       IF_FEATURE_NSLOOKUP_BIG("\nQUERY_TYPE: soa,ns,a,"IF_FEATURE_IPV6("aaaa,")"cname,mx,txt,ptr,srv,any")
- //usage:#define nslookup_example_usage
- //usage:       "$ nslookup localhost\n"
- //usage:       "Server:     default\n"
--- 
-2.30.2
-



More information about the lede-commits mailing list