Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

heads-up: sh changes (perhaps fragility)



I have made some changes to how the shell parser, and more significantly,
the var/arith/cmdsub expansion routines work.  This code is very very hairy,
and fragile, and the smallest glance at it tends to cause problems...

So, please be on the lookout for anything weird happening that looks as if
it might be caused by sh expansion problems, and if you find anything,
either let me know, or file a PR.

Feel free to torture test it with whatever you can find that is evil!

There are not intended to be any visible operational changes (just a few
bug fixes) - it should in normal use behave just the same as before (some
of the changes are needed as a base of other coming changes, which is
what forced me to dive in to these very murky depths, again!)

The changed version manages to pass all of our sh ATF tests (including
the new ones I just added which yesterday's sh did not pass), and
those test some fairly bizarre expansions, so there is at least
some confidence that all will be OK.   An ATF test run of everything
managed to succeed about as well as it ever does (my test system has
no configured network, no nameservers, almost nothing, aside from /dev
added to what "make release" produces, and some of the tests seem to
want to get answers from the non-existant nameserver.  Others just seem
to always fail.)

The changes were based upon the FreeBSD sh, which should also give some
confidence that it should all be OK, but our internals are different than
theirs, so there was a fair amount of "interpretation" involved.

The modified shell has managed to successfully complete run of build.sh
to build a new NetBSD - which of itself is not all that much of a test
(nothing in there stresses the shell all that much) but at least it shows
that should there be a problem, it will at least be possible to upgrade,
rather than having to try to go backwards.

It was this last test that has delayed committing this change (which should
have happened 24 hours ago) - when I first tried the build, it failed, badly...
then I undid my sh changes and tried again, that also failed badly... turned
out to be that my test method was bogus, but it took a while to work that out,
then successfully build with the old shell to show I had fixed my procedure,
then try again with the new shell code, successfully this time...
Apologies for the delay.

kre









Home | Main Index | Thread Index | Old Index