diff options
Diffstat (limited to 'bitbake/lib/bb/data.py')
-rw-r--r-- | bitbake/lib/bb/data.py | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/bitbake/lib/bb/data.py b/bitbake/lib/bb/data.py index 841369699e..f3ae062022 100644 --- a/bitbake/lib/bb/data.py +++ b/bitbake/lib/bb/data.py | |||
@@ -261,7 +261,7 @@ def emit_func_python(func, o=sys.__stdout__, d = init()): | |||
261 | newdeps |= set((d.getVarFlag(dep, "vardeps") or "").split()) | 261 | newdeps |= set((d.getVarFlag(dep, "vardeps") or "").split()) |
262 | newdeps -= seen | 262 | newdeps -= seen |
263 | 263 | ||
264 | def build_dependencies(key, keys, mod_funcs, shelldeps, varflagsexcl, ignored_vars, d): | 264 | def build_dependencies(key, keys, mod_funcs, shelldeps, varflagsexcl, ignored_vars, d, codeparsedata): |
265 | def handle_contains(value, contains, exclusions, d): | 265 | def handle_contains(value, contains, exclusions, d): |
266 | newvalue = [] | 266 | newvalue = [] |
267 | if value: | 267 | if value: |
@@ -312,14 +312,14 @@ def build_dependencies(key, keys, mod_funcs, shelldeps, varflagsexcl, ignored_va | |||
312 | value = varflags.get("vardepvalue") | 312 | value = varflags.get("vardepvalue") |
313 | elif varflags.get("func"): | 313 | elif varflags.get("func"): |
314 | if varflags.get("python"): | 314 | if varflags.get("python"): |
315 | value = d.getVarFlag(key, "_content", False) | 315 | value = codeparsedata.getVarFlag(key, "_content", False) |
316 | parser = bb.codeparser.PythonParser(key, logger) | 316 | parser = bb.codeparser.PythonParser(key, logger) |
317 | parser.parse_python(value, filename=varflags.get("filename"), lineno=varflags.get("lineno")) | 317 | parser.parse_python(value, filename=varflags.get("filename"), lineno=varflags.get("lineno")) |
318 | deps = deps | parser.references | 318 | deps = deps | parser.references |
319 | deps = deps | (keys & parser.execs) | 319 | deps = deps | (keys & parser.execs) |
320 | value = handle_contains(value, parser.contains, exclusions, d) | 320 | value = handle_contains(value, parser.contains, exclusions, d) |
321 | else: | 321 | else: |
322 | value, parsedvar = d.getVarFlag(key, "_content", False, retparser=True) | 322 | value, parsedvar = codeparsedata.getVarFlag(key, "_content", False, retparser=True) |
323 | parser = bb.codeparser.ShellParser(key, logger) | 323 | parser = bb.codeparser.ShellParser(key, logger) |
324 | parser.parse_shell(parsedvar.value) | 324 | parser.parse_shell(parsedvar.value) |
325 | deps = deps | shelldeps | 325 | deps = deps | shelldeps |
@@ -378,12 +378,17 @@ def generate_dependencies(d, ignored_vars): | |||
378 | shelldeps = set(key for key in d.getVar("__exportlist", False) if d.getVarFlag(key, "export", False) and not d.getVarFlag(key, "unexport", False)) | 378 | shelldeps = set(key for key in d.getVar("__exportlist", False) if d.getVarFlag(key, "export", False) and not d.getVarFlag(key, "unexport", False)) |
379 | varflagsexcl = d.getVar('BB_SIGNATURE_EXCLUDE_FLAGS') | 379 | varflagsexcl = d.getVar('BB_SIGNATURE_EXCLUDE_FLAGS') |
380 | 380 | ||
381 | codeparserd = d.createCopy() | ||
382 | for forced in (d.getVar('BB_HASH_CODEPARSER_VALS') or "").split(): | ||
383 | key, value = forced.split("=", 1) | ||
384 | codeparserd.setVar(key, value) | ||
385 | |||
381 | deps = {} | 386 | deps = {} |
382 | values = {} | 387 | values = {} |
383 | 388 | ||
384 | tasklist = d.getVar('__BBTASKS', False) or [] | 389 | tasklist = d.getVar('__BBTASKS', False) or [] |
385 | for task in tasklist: | 390 | for task in tasklist: |
386 | deps[task], values[task] = build_dependencies(task, keys, mod_funcs, shelldeps, varflagsexcl, ignored_vars, d) | 391 | deps[task], values[task] = build_dependencies(task, keys, mod_funcs, shelldeps, varflagsexcl, ignored_vars, d, codeparserd) |
387 | newdeps = deps[task] | 392 | newdeps = deps[task] |
388 | seen = set() | 393 | seen = set() |
389 | while newdeps: | 394 | while newdeps: |
@@ -392,7 +397,7 @@ def generate_dependencies(d, ignored_vars): | |||
392 | newdeps = set() | 397 | newdeps = set() |
393 | for dep in nextdeps: | 398 | for dep in nextdeps: |
394 | if dep not in deps: | 399 | if dep not in deps: |
395 | deps[dep], values[dep] = build_dependencies(dep, keys, mod_funcs, shelldeps, varflagsexcl, ignored_vars, d) | 400 | deps[dep], values[dep] = build_dependencies(dep, keys, mod_funcs, shelldeps, varflagsexcl, ignored_vars, d, codeparserd) |
396 | newdeps |= deps[dep] | 401 | newdeps |= deps[dep] |
397 | newdeps -= seen | 402 | newdeps -= seen |
398 | #print "For %s: %s" % (task, str(deps[task])) | 403 | #print "For %s: %s" % (task, str(deps[task])) |