[RFC PATCH v3 00/23] Modernize U-Boot shell

Tom Rini trini at konsulko.com
Thu Apr 21 14:20:28 CEST 2022


On Fri, Apr 01, 2022 at 01:26:53AM +0200, Francis Laniel wrote:

> Hi.
> 
> First I hope you are fine and the same for your relatives.
> I would also like to apologize for the delay between v2 and v3.
> 
> During 2021 summer, Sean Anderson wrote a contribution to add a new shell, based
> on LIL, to U-Boot [1][2].
> While one of the goals of this contribution was to address the fact actual
> U-Boot shell, which is based on Busybox hush, is old there was a discussion
> about adding a new shell versus updating the actual one [3][4].
> 
> So, in this series, with Harald Seiler, we updated the actual U-Boot shell to
> reflect what is currently in Busybox source code.
> Basically, this contribution is about taking a snapshot of Busybox shell/hush.c
> file (as it exists in commit 37460f5da) and adapt it to suit U-Boot needs.

In order to put this through CI and my local testing loop as well, I
need:
commit 0eae144ef84e7190b3c2da5fbd745468f7d1f7e6
Author: Tom Rini <trini at konsulko.com>
Date:   Wed Apr 20 15:28:10 2022 -0400

    HACK: Make new HUSH default
    
    Signed-off-by: Tom Rini <trini at konsulko.com>

diff --git a/cmd/Kconfig b/cmd/Kconfig
index 3454229d9c92..d0fb264e7df1 100644
--- a/cmd/Kconfig
+++ b/cmd/Kconfig
@@ -23,12 +23,13 @@ config HUSH_PARSER
 	  If disabled, you get the old, much simpler behaviour with a somewhat
 	  smaller memory footprint.
 
-menu "Hush flavor to use"
+choice
+	prompt "Hush flavor to use"
 	depends on HUSH_PARSER
+	default HUSH_2021_PARSER
 
 	config HUSH_OLD_PARSER
 		bool "Use hush old parser"
-		default y
 		help
 		  This option enables the old flavor of hush based on hush Busybox from
 		  2005.
@@ -42,7 +43,7 @@ menu "Hush flavor to use"
 		  2021.
 
 		  For the moment, it is highly experimental and should be used at own risks.
-endmenu
+endchoice
 
 config CMDLINE_EDITING
 	bool "Enable command line editing"
diff --git a/common/cli_hush_2021.c b/common/cli_hush_2021.c
index 68b2fa4b3fe6..0b1ef6dc642f 100644
--- a/common/cli_hush_2021.c
+++ b/common/cli_hush_2021.c
@@ -40,12 +40,6 @@
 #define USE_FOR_NOMMU(...)	__VA_ARGS__
 #define USE_FOR_MMU(...)
 
-/* TODO: Drop this before upstreaming */
-#ifdef CONFIG_SYS_PROMPT
-#undef CONFIG_SYS_PROMPT
-#define CONFIG_SYS_PROMPT	"2021> "
-#endif /* CONFIG_SYS_PROMPT */
-
 /*
  * Size-saving "small" ints (arch-dependent)
  */
diff --git a/common/cli_hush_upstream.c b/common/cli_hush_upstream.c
index e46875847018..2a659dcd4eae 100644
--- a/common/cli_hush_upstream.c
+++ b/common/cli_hush_upstream.c
@@ -1448,6 +1448,7 @@ static void xxfree(void *ptr)
  * HUSH_DEBUG >= 2 prints line number in this file where it was detected.
  */
 #if HUSH_DEBUG < 2
+#include <linux/compiler.h>
 # define msg_and_die_if_script(lineno, ...)     msg_and_die_if_script(__VA_ARGS__)
 # define syntax_error(lineno, msg)              syntax_error(msg)
 # define syntax_error_at(lineno, msg)           syntax_error_at(msg)
@@ -1465,7 +1466,7 @@ static void die_if_script(void)
 	}
 }
 
-static void msg_and_die_if_script(unsigned lineno, const char *fmt, ...)
+static void __maybe_unused msg_and_die_if_script(unsigned lineno, const char *fmt, ...)
 {
 	va_list p;
 
@@ -1539,7 +1540,7 @@ static void syntax_error_unexpected_ch(unsigned lineno UNUSED_PARAM, int ch)
 /* Replace each \x with x in place, return ptr past NUL. */
 static char *unbackslash(char *src)
 {
-	char *dst = src = strchrnul(src, '\\');
+	char *dst = src = (char *)strchrnul(src, '\\');
 	while (1) {
 		if (*src == '\\') {
 			src++;


With everything but the Kconfig part being the same as RFCv2.  For the
next RFC please:
- Include a patch near the end making this new HUSH the default
- Include a link to CI running and passing (see
  https://u-boot.readthedocs.io/en/latest/develop/ci_testing.html for
  how to get the CI to run for everything)
- Include a patch near the end that moves from the updated hush you
  started with to the current hush, as a way of showing how easy (or
  hardd!) keeping this in sync moving forward will be.

Thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20220421/ece75c2f/attachment.sig>


More information about the U-Boot mailing list