summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/runqueue.py
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2012-06-18 16:45:36 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-06-21 13:10:32 +0100
commitc072fa8400002326027557c454a0563acc9ea3b1 (patch)
tree1c231f3c116f70abf5068f66d3b1acf5567d0c2b /bitbake/lib/bb/runqueue.py
parent5bd11a9bf329217f312076f347b045b5c09f19b2 (diff)
downloadpoky-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/runqueue.py')
-rw-r--r--bitbake/lib/bb/runqueue.py20
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()