Yesterday, a set of patches I’ve authored that aims at simplifying Buildroot for users has been merged into the official version of the project, and will therefore be part of the next stable release (scheduled for November, according to our 3 months release cycle). This work is probably my major contribution to Buildroot, outside of external toolchain support and various fixes here and there. Here are quick details about the improvements brought by these patches :
- Remove the “project” feature. The project feature removal was the main point of this patch set. This feature, that allows to compile a system for different, but very similar platforms, without recompiling everything from scratch, was rarely used and introduced a lot of complexity in the usage of Buildroot for newcomers. Who hasn’t been confused by this
project_build_arm
directory? This thing is gone now. - Remove the BOARD/LOCAL feature, which duplicates another way of adding support for new targets in Buildroot. This is the kind of feature that has been added at the time Buildroot was basically unmaintained, when nobody was able to say « Hey, but you’re just trying to-reimplement something that already exists »
- Move all output directories in an output directory. By default, when Buildroot is compiled, it generates several directories in the middle of its source code. Now, with this patch, everything is grouped into an
output
directory, unless out-of-tree compilation is used, of course (withO=
) - Remove TOPDIR_PREFIX and TOPDIR_SUFFIX since the same effect could already be done using out-of-tree compilation with
O=
. Another duplicated feature that should never have reached the tree. - Rename the output directories. Now that everything is properly stored in an
output
directory, it was time to rename the subdirectories to make them more meaningful. So now, we havebuild
where all packages are built,images
that contains the final binary images of the root filesystem and the kernel,staging
which contains the staging directory (all packages installed with their development headers and libraries),target
that contains the root filesystem for the target (without the device files),host
that contains the installation of the host tools that Buildroot requires for its execution,stamps
that contains the stamp files used by Buildroot to keep track of the compilation progress. Therefore, all directories such as build_ARCH or toolchain_build_ARCH have disappeared. - Major documentation update, to of course make sure that our documentation is up-to-date with the latest changes.
Getting all these changes mainlined is really a nice thing. I also have tons of other ideas to improve Buildroot infrastructure, and I’m sure the coming Buildroot Developer Day will be a great opportunity to discuss these.
Nice work Thomas, Buildroot gets better and better with your contributions.
Wow, sounds like a great list of improvements. I have been struggling with the latest release build (2009.08) for a while now. It appears at first glance that its having trouble with external mult-lib toolchains. I can hack some things here an there to get busybox built and working, but all other packages fail due to library pathing (-L). Do you know if this is something that either you or other developers are looking at?
Yes, this is an issue that has already been reported. More specifically, the multilib toolchain being used was a Codesourcery toolchain. A Buildroot user already made some investigation about the issue, but I haven’t had the time myself to dig into the issue. It’s definitely on my TODO-list, but I’m not sure when I’ll be able to release proper fixes for multilib toolchain support.
Thanks for your interest in Buildroot! Don’t hesitate to share your issues with the list or to report bugs to our bug tracker.