build systems

I have been working with embedded distribution build systems for some years now, since the Sharp Zaurus 5000d first got released and have thought a lot about this subject. I have tried many build systems, some commercial, and all have short comings. A build system should require a few things:

1) It has got to be stable and should "just work", out of the box.

some of them out there are neither. They use mainly very unstable cvs/svn for sources, and a developer can either never get a build finished, has to spend precious time fixing things that should just work to get it building. They themselves are 'works in progress', and have never created something stable.

2)It should be easy to configure which packages get build.

I have used the old openzaurus 'buildroot'. I prefer it, because it uses the old kernel config gui, and doesn't download entirely new completely unstable cvs/svn sources just because the wind blew differently. It is stable because no one but myself works on it. Give me some kind of gui to select packages! The gui should be easy to maintain, and well known.

3) It should have good up to date documentation on it's use

Nothing worse than trying to use documents on a wiki, which are outdated and do not work.

4) It should be easy to maintain

Build systems should not have to be complicated. They should be easy to understand, so a developer can easily
add new packages, or remove them. Having to download and learn 5 or 6 ever changing packages just to suit the build system is not my idea of easy.

5) It should build a toolchain, and should be configurable where it lives

I hate to hear it, and hear it often, some developer just wants to cross compile one or two apps for some device. Someone jumps in with "Why don't you use < some ungodly big, unstable distribution build system >". Cross compiling is just that - a simple process that someone wants to do quickly, without too much hassle. Developers just want a frickin' toolchain! Don't recommend overkill. You wouldn't use a jack hammer to pound in one small tack. It should also be configurable where this toolchain lives, because no one likes your idea of putting the cross compiling environment in some unstandard, unobvious and out of the way place.

more thoughts later... my one and a half year old just woke up...


Blog Topics:

Comments