diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-02-02 14:07:58 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-02-10 13:33:48 +0000 |
commit | 8bf33a8e92c0e188fa392030025756196c96fcbb (patch) | |
tree | 509681b0ba903825f61d0da99970ea2433be0425 /lib/bb/build.py | |
parent | 3f5520b4844a4bdd615046479ba08ed192bdc8cd (diff) | |
download | bitbake-8bf33a8e92c0e188fa392030025756196c96fcbb.tar.gz |
build/data: Don't expand python functions before execution [API change]
Right now, if you have some python code like:
X = "a"
def somefunction(d):
d.setVar("X", "b")
d.setVar("Y", "${X}")
then any sane person would expect that Y = "b" at the end of the
function. This is not the case, Y = "a".
This is due to the python function being expanded before execution, the
executed code would read d.setVar("Y", "a"). This understandably
confuses people, it also makes it near impossible to write ${} in a
python function without unintended things happening.
I think there is general agreement we should fix this and standardise
on non-expansion of python functions. We already don't expand anonymous
python (mostly).
I've checked OE-Core with buildhistory before and after this change and
there were a small number of issues this exposed which I've sent
patches for.
I propose we default to not expanding python code and then deal with
any consequences from that if/as/where identified. This will improve
new user understanding and usability of the system, it also allows
several long standing weird expansion issues to be fixed.
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'lib/bb/build.py')
-rw-r--r-- | lib/bb/build.py | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/bb/build.py b/lib/bb/build.py index f16675bde..1cd546a71 100644 --- a/lib/bb/build.py +++ b/lib/bb/build.py @@ -239,7 +239,7 @@ def exec_func_python(func, d, runfile, cwd=None): """Execute a python BB 'function'""" bbfile = d.getVar('FILE', True) - code = _functionfmt.format(function=func, body=d.getVar(func, True)) + code = _functionfmt.format(function=func, body=d.getVar(func, False)) bb.utils.mkdirhier(os.path.dirname(runfile)) with open(runfile, 'w') as script: bb.data.emit_func_python(func, script, d) |