[Aboriginal] Refactoring/recycling

Rob Landley rob at landley.net
Sat Sep 10 22:17:49 PDT 2016


On 09/09/2016 07:28 PM, Rob Landley wrote:
> I've been breaking aboriginal linux down for parts. It's just too much
> of a giant hairball, despite my attempts to separate it into layers.
> 
> The thing is, once you take out the toolchain build (and replace it with
> Rich Felker's musl-cross-make), there's only 5 other packages it builds
> (toybox, busybox, make, bash, distcc). All of them compile reasonably
> easily, and as toybox adances at least 2 of them should go away. The
> infrastructure aboriginal linux provides for them is WAY OVERKILL for
> what's left for it to do (as evidenced by
> https:/github.com/j-core.org/mkroot working fine without any of it).
> 
> What Aboriginal Linux has is:
> 
> 1) The ./download.sh infrastructure to download and patch source code,
> and maintain an extracted "package cache" for parallel builds. This
> includes setup and teardown wrappers to _use_ the package cache (and set
> up the cross compiler path, and so on).
> 
> 2) The host-tools.sh "airlock step" and environment sanitization logic
> (sources/variables.sh) for doing "hermetic builds" (I.E.
> portable/reproducible builds that provide their own known build
> environment).
> 
> 3) target configs with matching gcc tuple (and flags), kernel config
> (and KARCH), and qemu command line (and kernel command line).
> 
> 4) Wrapper script to launch qemu with some infrastucture around it (most
> of which supports build control images; note that
> http://landley.net/aboriginal/build-control to _create_ build control
> images is a separate project with its own git repo).
> 
> 5) Busybox and uClibc config files (now legacy info).
> 
> 6) A dozen package build recipes (in sources/sections), 2/3 which
> (ccwrap.sh, gcc.sh, musl.build, uClibc.build, binutils.build,
> linux-headers.sh, uClibc++.build, elf2flt.sh) are obsolete if we use
> Rich's toolchain instead of building our own.
> 
> 7) The miniconfig.sh stuff
> 
> 8) record-commands.sh

And a wrapper that packages up a directory in various formats (squashfs,
cpio.gz, gene2fs).

That wrapper _used_ to be more interesting, because (unless you wanted
to build as root, where you could actually mknod on the host system) you
had to add arguments to each of those packaging formats' command lines
creating /dev/console in the new root filesystem, or else Linux couldn't
launch init. But now there's CONFIG_DEVTMPFS_MOUNT (and I have a patch
to make it apply to initramfs, although when I submitted it upstream
they didn't want it and I lost interest because it works for me so if
they don't want it, I'm ok with that).

I suppose I should post miniconfig.sh again too. (Annually if necessary,
since they'll never take it and I'm pretty sure the TEN YEARS since my
initial 3 posts submitting miniconfig shows I'm not interested in doing
morethan I have to inflict something that works fine for me on a
community that doesn't want it. Still, the invitation-only kernel summit
community hanging out on the private greybeards list.)

Rob


More information about the Aboriginal mailing list