[Toybox] "bad xform" not very helpful

Rob Landley rob at landley.net
Thu Sep 8 04:20:25 PDT 2022


On 9/7/22 23:54, enh wrote:
>     I just checked in some more test tweaking, which hopefully lets me park that for
>     a bit. (I still need to fix the chattr tests, which are skipped because root and
>     last worked who KNOWS when, 
> 
> remember that Android's CI typically tests as root (which is why i hit all these
> root-only things first), so i can tell you it worked last week :-)

On android, but not on devuan. (Most likely it's mounted on a diffferent
filesystem, or even just different mount options. And another * showed up at the
edge of a ----- list which is just sad.)

>     the first test is failing the same way on the host
>     and with toybox because the output it expects is the wrong LENGTH... filesystem
>     type probably changed out from under it in a distro version upgrade. But I poked
>     them because that's the other remaining SKIPNEXT=1 usage I missed removing when
>     I changed the test plumbing's semantics.)
> 
> the tricky thing to note with the chattr tests is that depending on the fs, any
> subset of them might pass/fail.

Which is annoying and I'm pondering how to fix that on the design level. What
I'm coming up with is mostly mkroot testing in a known environment (so it's the
_tool_ we're testing not the environment...)

Hmmm, or possibly I could make the test mount a tmpfs? If the test's already
running as root... I think mount --make-private should cause the mount point to
unmount automatically when all the PIDs that can access it exit so I don't have
to worry about missing cleanup for an interrupted test? (If you haven't got
xattr support in tmpfs that won't work, but if you _do_ it should presumably
give consistent results. Modulo kernel version skew...)

>     I'm also 2/3 of the way through adding toysh support for blockless functions ala
>     "x() echo hello; x" which of course spawned a couple tangents:
> 
> (speaking of features that seem more like bugs than features ... that's just
> awful. given that bash doesn't support it, don't you want to wait until you see
> an actual real-world use first?

I was pondering doing it when I first implemented this because there's honestly
no reason for it NOT to work, and finding out that 4 other shells work that way
tipped my hand.

But you're right, I haven't checked it in yet...

> the fact that bash doesn't support this makes me
> doubt we'll ever see any? which seems like a good thing, because i don't think
> there are many people still alive who can read that syntax and know what it
> actually does!)
>   
>     1) after parsing the function body gets pulled out of the current parse block
>     and moved to a linked list of defined functions because object lifetime: when
>     you exit the current block and it frees it the function that got defined needs
>     to persist, so I made a reference counted structure. But the transplant code
>     assumed it was starting in a block and didn't know when to end if it wasn't, so
>     it needed some massaging.
> 
>     2) I was adding a placeholder type 'f' pipeline segment and I do NOT remember
>     why, it not only seems unnecessary but I have a TODO not to remove it?
> 
>     And of course I want to get diff finished and checked in.
> 
>     (And Moritz Weber sent me a git.c drop to help him debug, and reminded me we
>     were poking at host/nslookup, and that I was doing videos, and...)
> 
>     I'm trying to get the symlink stuff converted so it passes better on mac, then
>     lemme try to get diff and sh parked, and then I need to implement the sed
>     extension so tar can use one persistent instance in a streaming manner. And then
>     I can finish the redo of readlink.c so I can have "make test_tar" detect the
>     output directory from "make install_airlock", and write up a FAQ entry about
>     doing that...
> 
>     Sorry I'm not faster. :(
> 
> no worries, i probably won't have much time the next couple of weeks anyway...

I saw the Android 13 release announcement. Congrats. :)

> (but note that the chattr.test breakage means i can't take any other changes
> until that's working again.)

Working on it.

Rob


More information about the Toybox mailing list