From: Francis Laniel <francis.laniel@amarulasolutions.com>
To: Wolfgang Denk <wd@denx.de>
Cc: u-boot@lists.denx.de, michael@amarulasolutions.com,
"Marek Behún" <marek.behun@nic.cz>,
"Simon Glass" <sjg@chromium.org>,
hws@denx.de
Subject: Re: How should we deal with actual hush odd behavior?
Date: Tue, 31 Aug 2021 11:32:56 +0200 [thread overview]
Message-ID: <4647124.GXAFRqVoOG@pwmachine> (raw)
In-Reply-To: <47007.1629717610@gemini.denx.de>
Hi.
Le lundi 23 août 2021, 13:20:10 CEST Wolfgang Denk a écrit :
> Dear Francis,
>
> In message <2787647.e9J7NaK4W3@pwmachine> you wrote:
> > Porting 2021 Busybox hush to U-Boot seems, for me, to be a good idea as we
> > would benefit from Busybox bug fixes as well as being compatible with
> > actual hush (in theory).
> > We could also add new features to U-Boot hush, like functions, as they
> > were
> > added to Busybox.
>
> Thanks a lot, much appreciated.
>
> > Nonetheless, the idea of this port is to be compatible.
>
> My recommendation is not to try to be bug-compatible, i. e. is the
> current U-Boot version of hush behaves different than the recent
> one, we should check how other POSIX compatible shells behave.
> I would expect that in most cases the old hush in U-Boot has a bug,
> which has been fixed in the recent version.
>
> In such a situation, we should accept the bug fix and not try tokeep
> the old, buggy behaviour of the old version.
>
> > In practice, I noted some cases when this is actually not the case.
> > The first one can be related to how && and || operators were handled in
> > hush. So, the following: false && false || true
> > Returns 0 on Busybox 2021 hush and 1 on U-Boot.
> >
> > The behavior of 2021 is coherent with the definition of these operators
[4]:
> > > The return status of AND and OR lists is the exit
> > > status of the last command executed in the list.
>
> This is a clear bug in the old version. It's good to see it fixed
> in the recent code.
>
> > An other example concerns variable expansion, where foo='bar "quux" is
> > expanded to bar quux in U-Boot and bar "quux in Busybox.
>
> I guess you mean foo='bar "quux' ? [ foo='bar "quux" is
> missing the closing apostrophe.]
Sorry, I indeed missed the closing apostrophe.
>
> Again, this is a bug in U-Boots command line parsing.
>
> > I do not have a real opinion on the second one, as I think local variable
> > set in U-Boot scripts are quite simple as people do not try to do:
> > foo="bar \"quux 'quuz' \"\"\"corge".
> > The first one is maybe more problematic.
> > Grepping "if test" shows me that the more complex if condition seems to be
> > under the form:
> > if first_test_ AND/OR second_test
> > Here also, people seems to no try to write complex expression like: foo ||
> > bar; echo quux && quuz.
>
> We should port the recent version of hush without hesitating about
> bug compatibility of expected use cases. We can'tknoww if peple
> didn't use afeature because the ran into problems with it, or
> because it's just not their programming style.
>
> > So, porting Busybox 2021 hush can solve bugs we have currently in U-Boot,
> > but what if fixing these bugs lead to a board script failing and so a
> > device not booting...
>
> The new version should be optional in any case, at least for some
> longer migration period to give users time to test their scripts.
> If someone selects the new version in his board configuration, he
> probably has run enough tests to make sure his scripts are working
> fine in the new environment.
I added a choice in Kconfig to permits user to select the parser they want to
use (either the old or the new one).
By default, the old one is selected.
More generally, I see it seems to be a consensus over going with the new 2021
behavior (which contains bug fixes compared to old one) rather than sticking
with the old (and sometime buggy) behavior.
Thank you a lot for all your comments!
>
> Best regards,
>
> Wolfgang Denk
prev parent reply other threads:[~2021-08-31 9:33 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-20 16:12 How should we deal with actual hush odd behavior? Francis Laniel
2021-08-20 18:22 ` Simon Glass
2021-08-25 22:24 ` Tom Rini
2021-08-23 11:20 ` Wolfgang Denk
2021-08-31 9:32 ` Francis Laniel [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4647124.GXAFRqVoOG@pwmachine \
--to=francis.laniel@amarulasolutions.com \
--cc=hws@denx.de \
--cc=marek.behun@nic.cz \
--cc=michael@amarulasolutions.com \
--cc=sjg@chromium.org \
--cc=u-boot@lists.denx.de \
--cc=wd@denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox