From b14ccb2367983b2263608b6d618647ecd22bf00d Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Tue, 15 Dec 2015 16:42:18 +0000 Subject: bitbake: runqueue: Add support for - syntax It can be useful to run all tasks up to but not including a specific task. The main reason this was never added was the lack of a good syntax. This patch uses the syntax - to denote this behaviour which is simple, not invasive and fits what we need from good syntax IMO, hence we can add this. (Bitbake rev: 99ccfd411ab3f7baa111f9f3d50fae68816a9a83) Signed-off-by: Richard Purdie --- bitbake/lib/bb/runqueue.py | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) (limited to 'bitbake/lib/bb/runqueue.py') diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py index 878028aa97..ee06f0e71e 100644 --- a/bitbake/lib/bb/runqueue.py +++ b/bitbake/lib/bb/runqueue.py @@ -634,23 +634,33 @@ class RunQueueData: fnid = taskData.build_targets[targetid][0] fn = taskData.fn_index[fnid] - self.target_pairs.append((fn, target[1])) + task = target[1] + parents = False + if task.endswith('-'): + parents = True + task = task[:-1] + + self.target_pairs.append((fn, task)) if fnid in taskData.failed_fnids: continue - if target[1] not in taskData.tasks_lookup[fnid]: + if task not in taskData.tasks_lookup[fnid]: import difflib - close_matches = difflib.get_close_matches(target[1], taskData.tasks_lookup[fnid], cutoff=0.7) + close_matches = difflib.get_close_matches(task, taskData.tasks_lookup[fnid], cutoff=0.7) if close_matches: extra = ". Close matches:\n %s" % "\n ".join(close_matches) else: extra = "" - bb.msg.fatal("RunQueue", "Task %s does not exist for target %s%s" % (target[1], target[0], extra)) - - listid = taskData.tasks_lookup[fnid][target[1]] - - mark_active(listid, 1) + bb.msg.fatal("RunQueue", "Task %s does not exist for target %s%s" % (task, target[0], extra)) + + # For tasks called "XXXX-", ony run their dependencies + listid = taskData.tasks_lookup[fnid][task] + if parents: + for i in self.runq_depends[listid]: + mark_active(i, 1) + else: + mark_active(listid, 1) # Step C - Prune all inactive tasks # -- cgit v1.2.3-54-g00ecf