[Toybox] Sigh, I broke defconfig...

Rob Landley rob at landley.net
Wed Apr 23 07:05:07 PDT 2025


Working on fixing it but it might take a day or two.

I've been rewriting the kconfig plumbing, which started by replacing the 
help text generation (since the new kconfig.c had to parse the config 
entries that had help text in them _anyway_), which meant the 
config2help.c shananigans to splice together multiple config entries 
when you had optional -Z lines because of enabling/disabling LSM support 
(and float support in sort -g, and wget https support) weren't being 
done anymore, so I did new plumbing for that, which meant a lot of the 
intermediate symbols could just go AWAY if I had the opposite of 
USE_BLAH() macros, which I _had_ initially implemented when I invented 
those for busybox back in the day, so I added that and made the various 
config strings use them, ala SKIP_TOYBOX_LSM_NONE("Z:") in the option 
strings only puts the Z: in there when CFG_TOYBOX_LSM_NONE is _not_ set...

But the sed creating the input to mkflags in scripts/make.sh only knew 
about the USE_ macros, it didn't know how to make the skip macros. But 
I'd locally enabled TOYBOX_LSM_NONE to test the extra help text showing 
up before eliminating the LS_Z and similar symbols, and didn't test the 
defconfig path.

And _really_ what I should do is use some variant of the same ! trick in 
the option string so the option gets skipped when the TOYFLAG to enable 
it isn't there, and THEN I could probably make scripts/mkflags.c go away 
too because... well I blathered about that in 
https://landley.net/notes-2024.html#30-01-2024 and the following day a 
year and change back. Generating the FLAG_ macros wasn't so hard, it was 
the optstr that needed C. (And that's another generated/*.h file that 
would be .config invariant, leaving ONLY generated/config.h that needed 
to be recreated each build.)

But in the meantime, the build breaks because the SKIP_ macro drops out 
in the wrong pass and it says undefined symbol FLAG_Z.

I could teach the old sed invocation to understand SKIP, but the right 
fix is to rip out mkflags.c and replace it with bash (which of course 
toysh needs to be able to run)...

That said, the break shouldn't hit Android because their config has an 
LSM so the SKIP macro _doesn't_ drop out. (I did actually test the code 
before checking it in, just not all configurations. And the shortest way 
out is through, so...)

Sorry,

Rob


More information about the Toybox mailing list