diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2024-08-12 15:53:06 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2024-08-13 15:47:55 +0100 |
commit | 5226f46342cae47cb96fafb725dc082ef206f9e8 (patch) | |
tree | f48ab32e3419d2a947e2309c5a4981dbd85abc8c /bitbake/lib/bb/parse/ast.py | |
parent | 36f98fc1f27015a1724f1677495227927341b0ff (diff) | |
download | poky-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.py | 26 |
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 | ||
242 | class AddTaskNode(AstNode): | 242 | class 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 | ||
252 | class DelTaskNode(AstNode): | 254 | class 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) | |||
348 | def handleExportFuncs(statements, filename, lineno, m, classname): | 350 | def 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 | ||
351 | def handleAddTask(statements, filename, lineno, m): | 353 | def 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 | |||
360 | def 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)) | 356 | def handleDelTask(statements, filename, lineno, tasks): |
357 | statements.append(DelTaskNode(filename, lineno, tasks)) | ||
366 | 358 | ||
367 | def handleBBHandlers(statements, filename, lineno, m): | 359 | def handleBBHandlers(statements, filename, lineno, m): |
368 | statements.append(BBHandlerNode(filename, lineno, m.group(1))) | 360 | statements.append(BBHandlerNode(filename, lineno, m.group(1))) |