summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/parse/ast.py
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2024-08-12 15:53:06 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2024-08-13 15:47:55 +0100
commit5226f46342cae47cb96fafb725dc082ef206f9e8 (patch)
treef48ab32e3419d2a947e2309c5a4981dbd85abc8c /bitbake/lib/bb/parse/ast.py
parent36f98fc1f27015a1724f1677495227927341b0ff (diff)
downloadpoky-5226f46342cae47cb96fafb725dc082ef206f9e8.tar.gz
bitbake: BBHandler/ast: Improve addtask handling
The recent addtask improvement to handle comments complicated the regex significantly and there are already a number of corner cases in that code which aren't handled well. Instead of trying to complicate the regex further, switch to code logic instead. This means the following cases are now handled: * addtask with multiple task names * addtask with multiple before constraints * addtask with multiple after constraints The testcase is updated to match the improvements. (Bitbake rev: 417016b83c21fca7616b2ee768d5d08e1edd1e06) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/parse/ast.py')
-rw-r--r--bitbake/lib/bb/parse/ast.py26
1 files changed, 9 insertions, 17 deletions
diff --git a/bitbake/lib/bb/parse/ast.py b/bitbake/lib/bb/parse/ast.py
index 7581d003fd..001ba8d289 100644
--- a/bitbake/lib/bb/parse/ast.py
+++ b/bitbake/lib/bb/parse/ast.py
@@ -240,14 +240,16 @@ class ExportFuncsNode(AstNode):
240 data.setVar(func, sentinel + " " + calledfunc + "\n", parsing=True) 240 data.setVar(func, sentinel + " " + calledfunc + "\n", parsing=True)
241 241
242class AddTaskNode(AstNode): 242class AddTaskNode(AstNode):
243 def __init__(self, filename, lineno, func, before, after): 243 def __init__(self, filename, lineno, tasks, before, after):
244 AstNode.__init__(self, filename, lineno) 244 AstNode.__init__(self, filename, lineno)
245 self.func = func 245 self.tasks = tasks
246 self.before = before 246 self.before = before
247 self.after = after 247 self.after = after
248 248
249 def eval(self, data): 249 def eval(self, data):
250 bb.build.addtask(self.func, self.before, self.after, data) 250 tasks = self.tasks.split()
251 for task in tasks:
252 bb.build.addtask(task, self.before, self.after, data)
251 253
252class DelTaskNode(AstNode): 254class DelTaskNode(AstNode):
253 def __init__(self, filename, lineno, tasks): 255 def __init__(self, filename, lineno, tasks):
@@ -348,21 +350,11 @@ def handlePythonMethod(statements, filename, lineno, funcname, modulename, body)
348def handleExportFuncs(statements, filename, lineno, m, classname): 350def handleExportFuncs(statements, filename, lineno, m, classname):
349 statements.append(ExportFuncsNode(filename, lineno, m.group(1), classname)) 351 statements.append(ExportFuncsNode(filename, lineno, m.group(1), classname))
350 352
351def handleAddTask(statements, filename, lineno, m): 353def handleAddTask(statements, filename, lineno, tasks, before, after):
352 func = m.group("func") 354 statements.append(AddTaskNode(filename, lineno, tasks, before, after))
353 before = m.group("before")
354 after = m.group("after")
355 if func is None:
356 return
357
358 statements.append(AddTaskNode(filename, lineno, func, before, after))
359
360def handleDelTask(statements, filename, lineno, m):
361 func = m.group(1)
362 if func is None:
363 return
364 355
365 statements.append(DelTaskNode(filename, lineno, func)) 356def handleDelTask(statements, filename, lineno, tasks):
357 statements.append(DelTaskNode(filename, lineno, tasks))
366 358
367def handleBBHandlers(statements, filename, lineno, m): 359def handleBBHandlers(statements, filename, lineno, m):
368 statements.append(BBHandlerNode(filename, lineno, m.group(1))) 360 statements.append(BBHandlerNode(filename, lineno, m.group(1)))