[bitbake-devel] [PATCH 1/2] bitbake: BBHandler: Fix addtask and deltask
Richard Purdie
richard.purdie at linuxfoundation.org
Thu Apr 25 10:48:58 UTC 2019
On Thu, 2019-04-25 at 18:00 +0800, Robert Yang wrote:
> The following commands are not supported, but they were ignored
> silently, that
> may suprise users:
>
> * addtask task1 task2
> task2 is ignored
>
> * addtask task1 before task2 before task3
> Should be: addtask task1 before task2 task3
>
> * addtask task1 after task2 after task3
> Should be: addtask task1 after task2 task3
>
> * deltask task1 task2
> task2 is ignore
>
> This patch can check and warn for them.
>
> [YOCTO #13282]
>
> Signed-off-by: Robert Yang <liezhi.yang at windriver.com>
> ---
> bitbake/lib/bb/parse/parse_py/BBHandler.py | 25
> ++++++++++++++++++++++++-
> 1 file changed, 24 insertions(+), 1 deletion(-)
>
> diff --git a/bitbake/lib/bb/parse/parse_py/BBHandler.py
> b/bitbake/lib/bb/parse/parse_py/BBHandler.py
> index 9dba5f2..4d90ff0 100644
> --- a/bitbake/lib/bb/parse/parse_py/BBHandler.py
> +++ b/bitbake/lib/bb/parse/parse_py/BBHandler.py
> @@ -42,7 +42,7 @@ __func_start_regexp__ =
> re.compile(r"(((?P<py>python)|(?P<fr>fakeroot))\s*)*(
> __inherit_regexp__ = re.compile(r"inherit\s+(.+)" )
> __export_func_regexp__ = re.compile(r"EXPORT_FUNCTIONS\s+(.+)" )
> __addtask_regexp__ =
> re.compile(r"addtask\s+(?P<func>\w+)\s*((before\s*(?P<before>((.*(?=a
> fter))|(.*))))|(after\s*(?P<after>((.*(?=before))|(.*)))))*")
> -__deltask_regexp__ = re.compile(r"deltask\s+(?P<func>\w+)")
> +__deltask_regexp__ =
> re.compile(r"deltask\s+(?P<func>\w+)(?P<ignores>.*)")
> __addhandler_regexp__ = re.compile(r"addhandler\s+(.+)" )
> __def_regexp__ = re.compile(r"def\s+(\w+).*:" )
> __python_func_regexp__ = re.compile(r"(\s+.*)|(^$)|(^#)" )
> @@ -236,11 +236,34 @@ def feeder(lineno, s, fn, root, statements,
> eof=False):
>
> m = __addtask_regexp__.match(s)
> if m:
> + if len(m.group().split()) == 2:
> + # Check and warn for "addtask task1 task2"
> + m2 = re.match(r"addtask\s+(?P<func>\w+)(?P<ignores>.*)",
> s)
> + if m2 and m2.group('ignores'):
> + logger.warning('addtask ignored: "%s"' %
> m2.group('ignores'))
> +
> + # Check and warn for "addtask task1 before task2 before
> task3", the
> + # similar to "after"
> + dup_after = 0
> + dup_before = 0
> + for tmp in s.split():
> + if 'before' == tmp:
> + dup_before += 1
> + if 'after' == tmp:
> + dup_after += 1
> + if dup_after > 1:
taskexpression = s.split()
if taskexpression.count("after") > 1:
logger.warning("X")
if taskexpression.count("before") > 1:
logger.warning("Y")
> + logger.warning('addtask found more than 1 keyword
> "after": "%s"' % s)
How about:
addtask contained multiple 'after' keywords, only one is supported
> + if dup_before > 1:
> + logger.warning('addtask found more than 1 keyword
> "before": "%s"' % s)
and:
addtask contained multiple 'before' keywords, only one is supported
> ast.handleAddTask(statements, fn, lineno, m)
> return
>
> m = __deltask_regexp__.match(s)
> if m:
> + # Check and warn "for deltask task1 task2"
> + if m.group('ignores'):
> + logger.warning('deltask ignored: "%s"' %
> m.group('ignores'))
deltask listing multiple tasks is not supported
I did wonder if we should support multiple tasks for deltask?
Also, we might want to consider adding something to lib/bb/tests/ for
this?
Cheers,
Richard
More information about the bitbake-devel
mailing list