From f5a344441ac9a6e2d829948050a1ba4c118c3ef5 Mon Sep 17 00:00:00 2001 From: Jacob Kroon Date: Sat, 22 Feb 2014 17:52:29 +0100 Subject: bitbake: ast: Fix support for anonymous methods in wildcard .bbappend files When using wildcard .bbappend files with anonymous methods in them, bitbake/python fails to parse the generated code since the '%' is encoded in the generated method name. Fix this by including '%' in the convert-to-underscore list during method name mangling. While we're at it, move the method name mangling translation table to a class variable, as suggested by Chris Larson. [YOCTO #5864] (Bitbake rev: 537f1f9bbe110acc9848ef95f43468c07d87af79) Signed-off-by: Jacob Kroon Signed-off-by: Richard Purdie --- bitbake/lib/bb/parse/ast.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'bitbake/lib/bb/parse') diff --git a/bitbake/lib/bb/parse/ast.py b/bitbake/lib/bb/parse/ast.py index a2020532ea..d8c141b37c 100644 --- a/bitbake/lib/bb/parse/ast.py +++ b/bitbake/lib/bb/parse/ast.py @@ -139,6 +139,8 @@ class DataNode(AstNode): data.setVar(key, val, **loginfo) class MethodNode(AstNode): + tr_tbl = string.maketrans('/.+-@%', '______') + def __init__(self, filename, lineno, func_name, body): AstNode.__init__(self, filename, lineno) self.func_name = func_name @@ -147,7 +149,7 @@ class MethodNode(AstNode): def eval(self, data): text = '\n'.join(self.body) if self.func_name == "__anonymous": - funcname = ("__anon_%s_%s" % (self.lineno, self.filename.translate(string.maketrans('/.+-@', '_____')))) + funcname = ("__anon_%s_%s" % (self.lineno, self.filename.translate(MethodNode.tr_tbl))) text = "def %s(d):\n" % (funcname) + text bb.methodpool.insert_method(funcname, text, self.filename) anonfuncs = data.getVar('__BBANONFUNCS') or [] -- cgit v1.2.3-54-g00ecf