How to clean only target in buildroot
Buildroot tracks build progress with .stamp_xxx in each package build dir. target install is actually the last stage for each package. So removing the .stamp_target_installed file from each package build dir would cause it to reinstall to target
In the latest buildroot, you can simply do the following:
rm -rf output/target
find output/ -name ".stamp_target_installed" -delete
rm -f output/build/host-gcc-final-*/.stamp_host_installed
In some older buildroot, there are a few other files in output that tracks the creation of the target dir with the skeleton. Citing the mailing list message, we could summarize following:
Does a "rm -rf output/target && make" work?
As Thomas said, it does not work. But, some unofficial hacks exist:
- remove
build/.root
will force to reinstall skeleton- remove
build/*/.stamp_target_installed
force reinstall each target package- depending of you toolchain, you can reinstall libc and co by removing:
stamps/ext-toolchain-installed
(external)stamps/ct-ng-toolchain-installed
(ctng)target/lib/libc.so.0
(buildroot)
And then simply do make again.
Remind, there are ton of reasons these tips could do wrong things. The only current official way to rebuild target is "make clean".
Buildroot has special make targets to clean out the build directory for specific packages, but this does not touch any of the installed files. To quote the user manual:
When a package is removed from the configuration, Buildroot does not do anything special. It does not remove the files installed by this package from the target root filesystem or from the toolchain sysroot. A full rebuild is needed to get rid of this package. However, generally you don’t necessarily need this package to be removed right now: you can wait for the next lunch break to restart the build from scratch.
That said, you can delete the build files for a specific package by running make <PKG-NAME>-dirclean
. For example, if I wanted to delete the build files for i2c-tools
, I would run make i2c-tools-dirclean
. The <PKG-NAME>-dirclean
target simply runs an rm -rf
on the output/build/<PKG-NAME>
directory. This will not remove the installed files from output/target/
. If you want to remove the files from your rootfs without a full rebuild, that's fine - you can just go into output/target/
, rm
the files you no longer want, then run make
to regenerate your final images. Make sure your Buildroot config is also not set to rebuild and install the package you are trying to remove.