data: Handle BASH_FUNC shellshock implication
PATCH 1/1 data: Handle BASH_FUNC shellshock implication
The shellshock patches changed the way bash functions are exported. Unfortunately different distros used slightly different formats, Fedora went with BASH_FUNC_XXX()=() { echo foo; } and Ubuntu went with BASH_FUNC_foo%%=() { echo foo; }.
The former causes errors in dealing with out output from emit_env, the functions are not exported in either case any more.
This patch handles things so the functions work as expected in either case.
[YOCTO #6880]
Signed-off-by Richard Purdie <[email protected]>
bitbake/lib/bb/data.py +7 -0
@@ -219,6 +219,13 @@ def emit_var(var, o=sys.__stdout__, d = init(), all=False): val = str(val) + if varExpanded.startswith("BASH_FUNC_"): + varExpanded = varExpanded[10:-2] + val = val[3:] # Strip off "() " + o.write("%s() %s\n" % (varExpanded, val)) + o.write("export -f %s\n" % (varExpanded)) + return 1 + if func: # NOTE: should probably check for unbalanced {} within the var o.write("%s() {\n%s\n}\n" % (varExpanded, val))