[oe-commits] [bitbake] 03/07: parse/ast: fix line number for anonymous function

git at git.openembedded.org git at git.openembedded.org
Fri Nov 16 14:03:08 UTC 2018


This is an automated email from the git hooks/post-receive script.

rpurdie pushed a commit to branch master-next
in repository bitbake.

commit 7466c8765fcc792e5ea3daefda3c5895e782d6c4
Author: Robert Yang <liezhi.yang at windriver.com>
AuthorDate: Wed Nov 14 17:46:37 2018 +0800

    parse/ast: fix line number for anonymous function
    
    Fixed:
    - Define an error anonymous function in base.bbclass:
      15
      16 python() {
      17     Compile error
      18 }
    
      $ bitbake -p
      ERROR: Error in compiling python function in /buildarea1/lyang1/poky/meta/classes/base.bbclass, line 18:
    
      The code lines resulting in this error were:
           0001:def __anon_18__buildarea1_lyang1_poky_meta_classes_base_bbclass(d):
       *** 0002:    Compile error
           0003:
      SyntaxError: invalid syntax (base.bbclass, line 18)
    
      The lineno should be 17, but it reported 18, this would mislead people a lot
      when there more lines.
    
    - Now fix it to:
      ERROR: Error in compiling python function in /buildarea1/lyang1/poky/meta/classes/base.bbclass, line 17:
    
      The code lines resulting in this error were:
           0001:def __anon_18__buildarea1_lyang1_poky_meta_classes_base_bbclass(d):
       *** 0002:    Compile error
           0003:
      SyntaxError: invalid syntax (base.bbclass, line 17)
    
    This is because the anonymous function is constructed by:
    text = "def %s(d):\n" % (funcname) + text
    
    The len(self.body) doesn't include the "def " line, the length of the function
    should be "len(self.body) + 1", so we need pass "self.lineno - (len(self.body) + 1)"
    which is the same as 'self.lineno - len(self.body) - 1' to
    bb.methodpool.insert_method() as we already had done to named function. Otherwise, the
    lineno is wrong, and would cause other problems such as report which line is
    wrong, but the line is not what we want since it reports incorrect line.
    
    Signed-off-by: Robert Yang <liezhi.yang at windriver.com>
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 lib/bb/parse/ast.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/bb/parse/ast.py b/lib/bb/parse/ast.py
index 9d20c32..6d7c80b 100644
--- a/lib/bb/parse/ast.py
+++ b/lib/bb/parse/ast.py
@@ -178,7 +178,7 @@ class MethodNode(AstNode):
             funcname = ("__anon_%s_%s" % (self.lineno, self.filename.translate(MethodNode.tr_tbl)))
             self.python = True
             text = "def %s(d):\n" % (funcname) + text
-            bb.methodpool.insert_method(funcname, text, self.filename, self.lineno - len(self.body))
+            bb.methodpool.insert_method(funcname, text, self.filename, self.lineno - len(self.body) - 1)
             anonfuncs = data.getVar('__BBANONFUNCS', False) or []
             anonfuncs.append(funcname)
             data.setVar('__BBANONFUNCS', anonfuncs)

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list