]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commit
bitbake: ensure -f causes dependent tasks to be re-run
authorPaul Eggleton <paul.eggleton@linux.intel.com>
Mon, 18 Jun 2012 15:45:35 +0000 (16:45 +0100)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Thu, 21 Jun 2012 12:04:34 +0000 (13:04 +0100)
commitf7b55a94226f9acd985f87946e26d01bd86a35bb
tree52040ceb6c753f0c98c687e42e6fb2a24b49f75a
parentd316f28ed725ff40daa8771c1aa224ac46d5b224
bitbake: ensure -f causes dependent tasks to be re-run

If -f is specified, force dependent tasks to be re-run next time. This
works by changing the force behaviour so that instead of deleting the
task's stamp, we write a "taint" file into the stamps directory, which
will alter the taskhash randomly and thus trigger the task to re-run
next time we evaluate whether or not that should be done as well as
influencing the taskhashes of any dependent tasks so that they are
similarly re-triggered. As a bonus because we write this file as
<stamp file name>.taskname.taint, the existing code which deletes the
stamp files in OE's do_clean will already handle removing it.

This means you can now do the following:

bitbake somepackage
[ change the source code in the package's WORKDIR ]
bitbake -c compile -f somepackage
bitbake somepackage

and the result will be that all of the tasks that depend on do_compile
(do_install, do_package, etc.) will be re-run in the last step.

Note that to operate in the manner described above you need full hashing
enabled (i.e. BB_SIGNATURE_HANDLER must be set to a signature handler
that inherits from BasicHash). If this is not the case, -f will just
delete the stamp for the specified task as it did before.

This fix is required for [YOCTO #2615] and [YOCTO #2256].

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
lib/bb/build.py
lib/bb/cooker.py
lib/bb/runqueue.py
lib/bb/siggen.py