All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH V2 0/3] Fixes for addtask and deltask
@ 2019-04-29  8:11 Robert Yang
  2019-04-29  8:11 ` [PATCH V2 1/3] bitbake: BBHandler: Fix " Robert Yang
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Robert Yang @ 2019-04-29  8:11 UTC (permalink / raw)
  To: bitbake-devel

* V2:
  - Fix RP's comments on V1
  - Add testcase for addtask and deltask

* V1:
  - Initial version

The following changes since commit 244cbcce0ecc4691a9ddfb0a44dc487ff7af0670:

  utils/multiprocess_launch: Improve failing subprocess output (2019-04-26 10:09:08 +0100)

are available in the git repository at:

  git://git.pokylinux.org/poky-contrib rbt/addtask
  http://git.pokylinux.org/cgit.cgi//log/?h=rbt/addtask

Robert Yang (3):
  bitbake: BBHandler: Fix addtask and deltask
  bitbake: build.py: check dependendent task for addtask
  bitbake: tests/parse.py: Add testcase for addtask and deltask

 bitbake/lib/bb/build.py                    |  3 +++
 bitbake/lib/bb/parse/parse_py/BBHandler.py | 18 +++++++++++++++++-
 bitbake/lib/bb/tests/parse.py              | 18 ++++++++++++++++++
 3 files changed, 38 insertions(+), 1 deletion(-)

-- 
2.7.4



^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH V2 1/3] bitbake: BBHandler: Fix addtask and deltask
  2019-04-29  8:11 [PATCH V2 0/3] Fixes for addtask and deltask Robert Yang
@ 2019-04-29  8:11 ` Robert Yang
  2019-04-29  8:11 ` [PATCH V2 2/3] bitbake: build.py: check dependendent task for addtask Robert Yang
  2019-04-29  8:12 ` [PATCH V2 3/3] bitbake: tests/parse.py: Add testcase for addtask and deltask Robert Yang
  2 siblings, 0 replies; 4+ messages in thread
From: Robert Yang @ 2019-04-29  8:11 UTC (permalink / raw)
  To: bitbake-devel

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@windriver.com>
---
 bitbake/lib/bb/parse/parse_py/BBHandler.py | 18 +++++++++++++++++-
 1 file changed, 17 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..314e802 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>((.*(?=after))|(.*))))|(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,27 @@ 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"
+        taskexpression = s.split()
+        for word in ('before', 'after'):
+            if taskexpression.count(word) > 1:
+                logger.warning("addtask contained multiple '%s' keywords, only one is supported" % word)
+
         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'))
         ast.handleDelTask(statements, fn, lineno, m)
         return
 
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH V2 2/3] bitbake: build.py: check dependendent task for addtask
  2019-04-29  8:11 [PATCH V2 0/3] Fixes for addtask and deltask Robert Yang
  2019-04-29  8:11 ` [PATCH V2 1/3] bitbake: BBHandler: Fix " Robert Yang
@ 2019-04-29  8:11 ` Robert Yang
  2019-04-29  8:12 ` [PATCH V2 3/3] bitbake: tests/parse.py: Add testcase for addtask and deltask Robert Yang
  2 siblings, 0 replies; 4+ messages in thread
From: Robert Yang @ 2019-04-29  8:11 UTC (permalink / raw)
  To: bitbake-devel

The following command is incorrect, but was ignored silently, that may suprise
users:

addtask task after task_not_existed

This patch can check and warn for it. It would be better to also check "before"
tasks, but there is no easier way to do it.

[YOCTO #13282]

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
---
 bitbake/lib/bb/build.py | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/bitbake/lib/bb/build.py b/bitbake/lib/bb/build.py
index 7571421..a83de8d 100644
--- a/bitbake/lib/bb/build.py
+++ b/bitbake/lib/bb/build.py
@@ -815,6 +815,9 @@ def add_tasks(tasklist, d):
         task_deps['parents'][task] = []
         if 'deps' in flags:
             for dep in flags['deps']:
+                # Check and warn for "addtask task after foo" while foo does not exist
+                if not dep in tasklist:
+                    bb.warn('%s: dependent task %s does not exist' % (d.getVar('PN'), dep))
                 dep = d.expand(dep)
                 task_deps['parents'][task].append(dep)
 
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH V2 3/3] bitbake: tests/parse.py: Add testcase for addtask and deltask
  2019-04-29  8:11 [PATCH V2 0/3] Fixes for addtask and deltask Robert Yang
  2019-04-29  8:11 ` [PATCH V2 1/3] bitbake: BBHandler: Fix " Robert Yang
  2019-04-29  8:11 ` [PATCH V2 2/3] bitbake: build.py: check dependendent task for addtask Robert Yang
@ 2019-04-29  8:12 ` Robert Yang
  2 siblings, 0 replies; 4+ messages in thread
From: Robert Yang @ 2019-04-29  8:12 UTC (permalink / raw)
  To: bitbake-devel

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
---
 bitbake/lib/bb/tests/parse.py | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/bitbake/lib/bb/tests/parse.py b/bitbake/lib/bb/tests/parse.py
index 1bc4740..4467d17 100644
--- a/bitbake/lib/bb/tests/parse.py
+++ b/bitbake/lib/bb/tests/parse.py
@@ -187,3 +187,21 @@ python () {
         self.assertEqual(d1.getVar("VAR_var"), "B")
         self.assertEqual(d2.getVar("VAR_var"), None)
 
+    addtask_deltask = """
+addtask do_patch after do_foo after do_unpack before do_configure before do_compile
+addtask do_fetch do_patch
+
+deltask do_fetch do_patch
+"""
+    def test_parse_addtask_deltask(self):
+        import sys
+        f = self.parsehelper(self.addtask_deltask)
+        d = bb.parse.handle(f.name, self.d)['']
+
+        stdout = sys.stdout.getvalue()
+        self.assertTrue("addtask contained multiple 'before' keywords" in stdout)
+        self.assertTrue("addtask contained multiple 'after' keywords" in stdout)
+        self.assertTrue('addtask ignored: " do_patch"' in stdout)
+        self.assertTrue('deltask ignored: " do_patch"' in stdout)
+        self.assertTrue('dependent task do_foo does not exist' in stdout)
+
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2019-04-29  8:13 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-04-29  8:11 [PATCH V2 0/3] Fixes for addtask and deltask Robert Yang
2019-04-29  8:11 ` [PATCH V2 1/3] bitbake: BBHandler: Fix " Robert Yang
2019-04-29  8:11 ` [PATCH V2 2/3] bitbake: build.py: check dependendent task for addtask Robert Yang
2019-04-29  8:12 ` [PATCH V2 3/3] bitbake: tests/parse.py: Add testcase for addtask and deltask Robert Yang

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.