imaging Re: link: "Recursive Make Considered Harmful"

Andrew Hacking ahacking at
Wed Jan 12 19:07:15 PST 2005

On Wed, 2005-01-12 at 15:26, George Georgalis wrote:
> On Wed, Jan 12, 2005 at 01:11:42PM +1000, Andrew Hacking wrote:
> >
> >Its interesting that this topic coming up at this point in time since I
> >am currently developing a brave new build/make system at my workplace.
> >The system I am working on needs to be multi-platform hosted, support
> >cross-compilation, integrate with version control systems, and break the
> >traditional hierarchical "ownership" directory structure so that the
> >code base gets opened up for all to see and share. It must also be able
> >to handle multiple versions of "components" and handle all of the
> >dependencies both forward and reverse between different versions of
> >components. It must also support "build profiles" akin to the system
> >profile concept in gentoo.  I have been looking at both BSD ports,
> >gentoo's portage and other build technologies for inspiration on aspects
> >of the problem. The scons approach seems to have a lot of power and
> >generalisation but the typical build fragments which end user developers
> >have to deal with are just too python based for my liking, and I am sure
> >I would end up with a revolution on my hands....
> That's what I'm doing, heh not so many requirements though. Do you
> call it brave because the development time is not 2x, but an order of
> magnitude or two over forecasted? Between boot strapping a mini-root,
> getting host parameters, binary packages, compiled sources, networking
> and a bootloader installed, "function" tends to look like hack!

All of the above, and the fact that some groups are being pulled out of
the ice age in terms of the tools and methods they use for managing
source and building software.  I don't expect everyone to be happy....

> This type of project generally takes a long time because of all the
> environment handoffs, reboots and data writes involved (use fast dev
> hardware!). The process has been an interest of mine for 20 months or
> so. A lot of my initial work is online [1] (uugh, old code), basically
> I do a debian base install, download which adds a suite
> of packages and makes an archive of the image. Then from (whatever)
> mini-root I image the target system with host specific parameters
> (partitioning, networking, etc), boot and compile host specific
> source. Several entry points are required to reduce development
> time. My recent work is under contract but may be released in the
> next 6 months. My first (private) go at it was a PXE method; then
> I began (open) development of scripts to http/s download from a
> knoppix mini root and go (I'm moving to BSD but Linux is still my
> vocation). Presently I'm using Makefiles to manage the files for the
> various targets.. If I where to start today, I'd take a close look at
> radmind.

I'm currently getting paid to develop linux based appliances but much
prefer BSD based systems.

I personally find the Free/DFly BSD stuff far easier to work with, due
to the fact that is has a self hosted build system. The nearest I've
found in the Linux world is Gentoo, but don't expect much from the
documentation. The world changes beneath your feet with each 'emerge
world' with hardly a heads up on the 'new way' of doing things.

You will find Gentoo stage tarballs on the Gentoo site from which you
can chroot into, setup your build profile and then build to your hearts

You should also look at the nanobsd scripts in FreeBSD5.x for building
customised/cut-down FreeBSD based systems. I have some similar (but
different) scripts in the works (For FreeBSD4.x and DFly) and will make
them available when I am done if there is any interest.

-Andrew Hacking

More information about the Kernel mailing list