Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to clean only target in buildroot

I've messed up some files in target fs. So i would like to reassemble it. But not rebuild all.

make clean just erases all output, + build directory. What command should use to delete only target directory and all related .stamp_some_step files recursively through output/build/ structure, forcing buildroot to reassemble filesystem according to current config, but not rebuilding all libraries and binaries again and again?

like image 690
xakepp35 Avatar asked Nov 16 '17 02:11

xakepp35


1 Answers

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 lastest buildroot, you can simply do the following:

rm -rf output/target
find output/ -name ".stamp_target_installed" |xargs rm -rf 

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".

like image 72
Jeff Zheng Avatar answered Oct 12 '22 02:10

Jeff Zheng