Discussion:
force buildroot to regenerate the output/target directory tree
Francesco Montorsi
2013-02-25 13:46:00 UTC
Permalink
Hi,
I've been using buildroot since some time and there is a thing I didn't figure
out yet. Consider this situation: I have a working buildroot environment; I have
copied into the output/target folder some stuff so that when I run "make"
buildroot generates for me images into output/images which already contain the
contents I manually copied.
Now I would like to "reset" the output/target folder, i.e. obtain the buildroot
"vanilla" output/target tree and to obtian the buildroot vanilla
output/images.... how can I do that without doing a "make clean" (which requires
re-compilation of all packages and takes a lot of time)?

does a "rm -rf output/target && make" works?


Thanks!
Francesco
Thomas Petazzoni
2013-02-25 14:16:37 UTC
Permalink
Dear Francesco Montorsi,
Post by Francesco Montorsi
I've been using buildroot since some time and there is a thing I
didn't figure out yet. Consider this situation: I have a working
buildroot environment; I have copied into the output/target folder
some stuff so that when I run "make" buildroot generates for me
images into output/images which already contain the contents I
manually copied. Now I would like to "reset" the output/target
folder, i.e. obtain the buildroot "vanilla" output/target tree and to
obtian the buildroot vanilla output/images.... how can I do that
without doing a "make clean" (which requires re-compilation of all
packages and takes a lot of time)?
does a "rm -rf output/target && make" works?
No, it doesn't work, and as of today, there isn't really a simple and
reliable way of doing that.

How long is your entire build? What is your configuration (post
your .config if possible)? Do you have an external toolchain? Have you
used ccache? Are you perhaps building inside a virtual machine and/or
on a slow laptop?

Best regards,

Thomas
--
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
Francesco Montorsi
2013-02-25 19:59:42 UTC
Permalink
Post by Thomas Petazzoni
Post by Francesco Montorsi
does a "rm -rf output/target && make" works?
No, it doesn't work, and as of today, there isn't really a simple and
reliable way of doing that.
ok... I think it would be nice to add one, though!
Post by Thomas Petazzoni
How long is your entire build? What is your configuration (post
your .config if possible)? Do you have an external toolchain? Have you
used ccache? Are you perhaps building inside a virtual machine and/or
on a slow laptop?
my build is about 1h on an core i5... yes: I'm using ccache.
Anyway, it's not really a matter of compilation flags / development machine. The
point is that in a development stage I often find myself doing several small
changes in the configuration files and other stuff (in a SVN environment); then
I copy them in the output/target tree... my point is that I would like to be
sure that there are no leftovers from previous cp commands I issued.

Perhaps I can do:
make # in buildroot folder
cp -rf output/target output/targetVANILLA
cp -rf /mystuff output/target
make # to generate images containing my customized stuff in output/images

and then

rm -rf output/target
cp -rf output/targetVANILLA output/target

to start over in the future.

Perhaps skeletons are the most clean way to do that... I will look into it as
soon as I find the time!

THanks,
Francesco
Jérôme Pouiller
2013-02-25 15:15:37 UTC
Permalink
Hello Francesco,
Post by Francesco Montorsi
Hi,
I've been using buildroot since some time and there is a thing I didn't
figure out yet. Consider this situation: I have a working buildroot
environment; I have copied into the output/target folder some stuff so that
when I run "make" buildroot generates for me images into output/images
which already contain the contents I manually copied.
Now I would like to "reset" the output/target folder, i.e. obtain the
buildroot "vanilla" output/target tree and to obtian the buildroot vanilla
output/images.... how can I do that without doing a "make clean" (which
requires re-compilation of all packages and takes a lot of time)?
does a "rm -rf output/target && make" works?
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)

Remind, there are ton of reasons these tips could do wrong things. The only
current official way to rebuild target is "make clean".
--
Jérôme Pouiller, Sysmic
Embedded Linux specialist
http://www.sysmic.fr
Francesco Montorsi
2013-02-25 20:02:32 UTC
Permalink
Post by Jérôme Pouiller
Post by Francesco Montorsi
does a "rm -rf output/target && make" works?
* 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)
Remind, there are ton of reasons these tips could do wrong things. The only
current official way to rebuild target is "make clean".
Thanks!
I will test this approach next time, after doing a backup copy :)

Anyway I think it would be nice to have an additional target in the buildroot
Makefile which does the operations above (with possible additional quirks) :)

Francesco

Loading...