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_armdirectory? 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
outputdirectory, unless out-of-tree compilation is used, of course (with
- 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
outputdirectory, it was time to rename the subdirectories to make them more meaningful. So now, we have
buildwhere all packages are built,
imagesthat contains the final binary images of the root filesystem and the kernel,
stagingwhich contains the staging directory (all packages installed with their development headers and libraries),
targetthat contains the root filesystem for the target (without the device files),
hostthat contains the installation of the host tools that Buildroot requires for its execution,
stampsthat 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.