summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Yang <liezhi.yang@windriver.com>2018-11-23 19:13:44 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2018-12-05 13:04:54 +0000
commitf7060a43995279723036c37d173f846a3613180e (patch)
tree1ca51dba885c34c24d04addde9854b25de26c4b7
parenteff9942d30c34a8290fa3ff5edafe32a8992c633 (diff)
downloadpoky-f7060a43995279723036c37d173f846a3613180e.tar.gz
bitbake: bitbake: BBHandler: Check tab indentation for python code
The previous check was in data.py which only can check code like "python funcname()" in the dependency chain, but there are 3 kinds of python functions: - python() - def py_funcname() - python funcname() Add the checking to BBHandler to check and warn for all of them. The warning looks like: WARNING: /path/to/recipes-core/busybox/busybox_1.29.2.bb: python should use 4 spaces indentation, but found tabs in busybox.inc, line 75 (Bitbake rev: 0cdc5b81fc1f5e5281a525a657e420ebc3bb9e90) Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--bitbake/lib/bb/data.py2
-rw-r--r--bitbake/lib/bb/parse/parse_py/BBHandler.py11
2 files changed, 11 insertions, 2 deletions
diff --git a/bitbake/lib/bb/data.py b/bitbake/lib/bb/data.py
index d66d98cc8b..6bcfcf46cc 100644
--- a/bitbake/lib/bb/data.py
+++ b/bitbake/lib/bb/data.py
@@ -322,8 +322,6 @@ def build_dependencies(key, keys, shelldeps, varflagsexcl, d):
322 if varflags.get("python"): 322 if varflags.get("python"):
323 value = d.getVarFlag(key, "_content", False) 323 value = d.getVarFlag(key, "_content", False)
324 parser = bb.codeparser.PythonParser(key, logger) 324 parser = bb.codeparser.PythonParser(key, logger)
325 if value and "\t" in value:
326 logger.warning("Variable %s contains tabs, please remove these (%s)" % (key, d.getVar("FILE")))
327 parser.parse_python(value, filename=varflags.get("filename"), lineno=varflags.get("lineno")) 325 parser.parse_python(value, filename=varflags.get("filename"), lineno=varflags.get("lineno"))
328 deps = deps | parser.references 326 deps = deps | parser.references
329 deps = deps | (keys & parser.execs) 327 deps = deps | (keys & parser.execs)
diff --git a/bitbake/lib/bb/parse/parse_py/BBHandler.py b/bitbake/lib/bb/parse/parse_py/BBHandler.py
index 01fc47e512..f3bf4aa529 100644
--- a/bitbake/lib/bb/parse/parse_py/BBHandler.py
+++ b/bitbake/lib/bb/parse/parse_py/BBHandler.py
@@ -46,6 +46,7 @@ __deltask_regexp__ = re.compile("deltask\s+(?P<func>\w+)")
46__addhandler_regexp__ = re.compile( r"addhandler\s+(.+)" ) 46__addhandler_regexp__ = re.compile( r"addhandler\s+(.+)" )
47__def_regexp__ = re.compile( r"def\s+(\w+).*:" ) 47__def_regexp__ = re.compile( r"def\s+(\w+).*:" )
48__python_func_regexp__ = re.compile( r"(\s+.*)|(^$)|(^#)" ) 48__python_func_regexp__ = re.compile( r"(\s+.*)|(^$)|(^#)" )
49__python_tab_regexp__ = re.compile(" *\t")
49 50
50__infunc__ = [] 51__infunc__ = []
51__inpython__ = False 52__inpython__ = False
@@ -160,6 +161,16 @@ def handle(fn, d, include):
160 161
161def feeder(lineno, s, fn, root, statements, eof=False): 162def feeder(lineno, s, fn, root, statements, eof=False):
162 global __func_start_regexp__, __inherit_regexp__, __export_func_regexp__, __addtask_regexp__, __addhandler_regexp__, __def_regexp__, __python_func_regexp__, __inpython__, __infunc__, __body__, bb, __residue__, __classname__ 163 global __func_start_regexp__, __inherit_regexp__, __export_func_regexp__, __addtask_regexp__, __addhandler_regexp__, __def_regexp__, __python_func_regexp__, __inpython__, __infunc__, __body__, bb, __residue__, __classname__
164
165 # Check tabs in python functions:
166 # - def py_funcname(): covered by __inpython__
167 # - python(): covered by '__anonymous' == __infunc__[0]
168 # - python funcname(): covered by __infunc__[3]
169 if __inpython__ or (__infunc__ and ('__anonymous' == __infunc__[0] or __infunc__[3])):
170 tab = __python_tab_regexp__.match(s)
171 if tab:
172 bb.warn('python should use 4 spaces indentation, but found tabs in %s, line %s' % (root, lineno))
173
163 if __infunc__: 174 if __infunc__:
164 if s == '}': 175 if s == '}':
165 __body__.append('') 176 __body__.append('')