diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2022-11-24 22:10:21 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2023-02-17 18:02:04 +0000 |
commit | d976eb3d5257174900eebedc9495052bb3936ce7 (patch) | |
tree | ea536cddab8c0d692e1e9f8d0d1191d986eaaee6 /bitbake/lib/bb/data.py | |
parent | 6d5c1129ae464e15e3ba17df7606291bcb94067d (diff) | |
download | poky-d976eb3d5257174900eebedc9495052bb3936ce7.tar.gz |
bitbake: data: Evaluate the value of export/unexport/network flags
Currently the export/unexport/network flags are acted on only by presence
or lack of in the data store. This is deliberate due to performance reasons
since a given recipe shell task might export ~80-90 variables and this means
expanding flags for every one of them.
This does catch users unaware since values which expand to nothing don't work
e.g. ${@""} and setting values to "0" wouldn't work either.
The downside to this patch is slow down in parsing speed of around 4%.
The network flag is easier to change and doesn't affect performance, it was
made to operate the same as export/unexport for consitency reasons.
(Bitbake rev: 3d96c07f9fd4ba1a84826811d14bb4e98ad58846)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/data.py')
-rw-r--r-- | bitbake/lib/bb/data.py | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/bitbake/lib/bb/data.py b/bitbake/lib/bb/data.py index f3ae062022..3ee8f5e7db 100644 --- a/bitbake/lib/bb/data.py +++ b/bitbake/lib/bb/data.py | |||
@@ -114,8 +114,8 @@ def emit_var(var, o=sys.__stdout__, d = init(), all=False): | |||
114 | if d.getVarFlag(var, 'python', False) and func: | 114 | if d.getVarFlag(var, 'python', False) and func: |
115 | return False | 115 | return False |
116 | 116 | ||
117 | export = d.getVarFlag(var, "export", False) | 117 | export = bb.utils.to_boolean(d.getVarFlag(var, "export")) |
118 | unexport = d.getVarFlag(var, "unexport", False) | 118 | unexport = bb.utils.to_boolean(d.getVarFlag(var, "unexport")) |
119 | if not all and not export and not unexport and not func: | 119 | if not all and not export and not unexport and not func: |
120 | return False | 120 | return False |
121 | 121 | ||
@@ -188,8 +188,8 @@ def emit_env(o=sys.__stdout__, d = init(), all=False): | |||
188 | 188 | ||
189 | def exported_keys(d): | 189 | def exported_keys(d): |
190 | return (key for key in d.keys() if not key.startswith('__') and | 190 | return (key for key in d.keys() if not key.startswith('__') and |
191 | d.getVarFlag(key, 'export', False) and | 191 | bb.utils.to_boolean(d.getVarFlag(key, 'export')) and |
192 | not d.getVarFlag(key, 'unexport', False)) | 192 | not bb.utils.to_boolean(d.getVarFlag(key, 'unexport'))) |
193 | 193 | ||
194 | def exported_vars(d): | 194 | def exported_vars(d): |
195 | k = list(exported_keys(d)) | 195 | k = list(exported_keys(d)) |
@@ -375,7 +375,7 @@ def generate_dependencies(d, ignored_vars): | |||
375 | 375 | ||
376 | mod_funcs = set(bb.codeparser.modulecode_deps.keys()) | 376 | mod_funcs = set(bb.codeparser.modulecode_deps.keys()) |
377 | keys = set(key for key in d if not key.startswith("__")) | mod_funcs | 377 | keys = set(key for key in d if not key.startswith("__")) | mod_funcs |
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 bb.utils.to_boolean(d.getVarFlag(key, "export")) and not bb.utils.to_boolean(d.getVarFlag(key, "unexport"))) |
379 | varflagsexcl = d.getVar('BB_SIGNATURE_EXCLUDE_FLAGS') | 379 | varflagsexcl = d.getVar('BB_SIGNATURE_EXCLUDE_FLAGS') |
380 | 380 | ||
381 | codeparserd = d.createCopy() | 381 | codeparserd = d.createCopy() |