diff options
| author | Paul Eggleton <paul.eggleton@linux.intel.com> | 2012-06-18 16:45:36 +0100 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2012-06-21 13:10:32 +0100 |
| commit | c072fa8400002326027557c454a0563acc9ea3b1 (patch) | |
| tree | 1c231f3c116f70abf5068f66d3b1acf5567d0c2b /bitbake/lib/bb | |
| parent | 5bd11a9bf329217f312076f347b045b5c09f19b2 (diff) | |
| download | poky-c072fa8400002326027557c454a0563acc9ea3b1.tar.gz | |
bitbake: bitbake: add -C option to invalidate a task and rebuild the target
This new command line option forces the specified task and all dependent
tasks up to the default task to re-run. This means that the following
single step:
bitbake -C compile somerecipe
is equivalent to the following two steps (with the recent change to -f):
bitbake -c compile -f somerecipe
bitbake somerecipe
Note that to work this option needs 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, -C effectively does nothing.
Based on a previous implementation of this option by Jason Wessel
<jason.wessel@windriver.com>.
Implements [YOCTO #2615].
(Bitbake rev: 2530e0faada5775897cfd1b93aba6925826dca73)
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb')
| -rw-r--r-- | bitbake/lib/bb/runqueue.py | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py index 28eb072bee..608aff8ad7 100644 --- a/bitbake/lib/bb/runqueue.py +++ b/bitbake/lib/bb/runqueue.py | |||
| @@ -705,11 +705,27 @@ class RunQueueData: | |||
| 705 | continue | 705 | continue |
| 706 | self.runq_setscene.append(task) | 706 | self.runq_setscene.append(task) |
| 707 | 707 | ||
| 708 | def invalidate_task(fn, taskname, error_nostamp): | ||
| 709 | taskdep = self.dataCache.task_deps[fn] | ||
| 710 | if 'nostamp' in taskdep and taskname in taskdep['nostamp']: | ||
| 711 | if error_nostamp: | ||
| 712 | bb.fatal("Task %s is marked nostamp, cannot invalidate this task" % taskname) | ||
| 713 | else: | ||
| 714 | bb.debug(1, "Task %s is marked nostamp, cannot invalidate this task" % taskname) | ||
| 715 | else: | ||
| 716 | logger.verbose("Invalidate task %s, %s", taskname, fn) | ||
| 717 | bb.parse.siggen.invalidate_task(taskname, self.dataCache, fn) | ||
| 718 | |||
| 708 | # Invalidate task if force mode active | 719 | # Invalidate task if force mode active |
| 709 | if self.cooker.configuration.force: | 720 | if self.cooker.configuration.force: |
| 710 | for (fn, target) in self.target_pairs: | 721 | for (fn, target) in self.target_pairs: |
| 711 | logger.verbose("Invalidate task %s, %s", target, fn) | 722 | invalidate_task(fn, target, False) |
| 712 | bb.parse.siggen.invalidate_task(target, self.dataCache, fn) | 723 | |
| 724 | # Invalidate task if invalidate mode active | ||
| 725 | if self.cooker.configuration.invalidate_stamp: | ||
| 726 | for (fn, target) in self.target_pairs: | ||
| 727 | for st in self.cooker.configuration.invalidate_stamp.split(','): | ||
| 728 | invalidate_task(fn, "do_%s" % st, True) | ||
| 713 | 729 | ||
| 714 | # Interate over the task list and call into the siggen code | 730 | # Interate over the task list and call into the siggen code |
| 715 | dealtwith = set() | 731 | dealtwith = set() |
