public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
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





      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