summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbitbake/bin/bitbake3
-rw-r--r--bitbake/lib/bb/runqueue.py20
2 files changed, 21 insertions, 2 deletions
diff --git a/bitbake/bin/bitbake b/bitbake/bin/bitbake
index 478ac06124..f23673fdf8 100755
--- a/bitbake/bin/bitbake
+++ b/bitbake/bin/bitbake
@@ -118,6 +118,9 @@ Default BBFILES are the .bb files in the current directory.""")
118 parser.add_option("-c", "--cmd", help = "Specify task to execute. Note that this only executes the specified task for the providee and the packages it depends on, i.e. 'compile' does not implicitly call stage for the dependencies (IOW: use only if you know what you are doing). Depending on the base.bbclass a listtasks tasks is defined and will show available tasks", 118 parser.add_option("-c", "--cmd", help = "Specify task to execute. Note that this only executes the specified task for the providee and the packages it depends on, i.e. 'compile' does not implicitly call stage for the dependencies (IOW: use only if you know what you are doing). Depending on the base.bbclass a listtasks tasks is defined and will show available tasks",
119 action = "store", dest = "cmd") 119 action = "store", dest = "cmd")
120 120
121 parser.add_option("-C", "--clear-stamp", help = "Invalidate the specified stamp for a task such as 'compile' and run the default task for the specified target(s)",
122 action = "store", dest = "invalidate_stamp")
123
121 parser.add_option("-r", "--read", help = "read the specified file before bitbake.conf", 124 parser.add_option("-r", "--read", help = "read the specified file before bitbake.conf",
122 action = "append", dest = "prefile", default = []) 125 action = "append", dest = "prefile", default = [])
123 126
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()