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 | |
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>
-rwxr-xr-x | bitbake/bin/bitbake-worker | 2 | ||||
-rw-r--r-- | bitbake/lib/bb/data.py | 10 |
2 files changed, 6 insertions, 6 deletions
diff --git a/bitbake/bin/bitbake-worker b/bitbake/bin/bitbake-worker index a3ea5d9618..d743ff5105 100755 --- a/bitbake/bin/bitbake-worker +++ b/bitbake/bin/bitbake-worker | |||
@@ -269,7 +269,7 @@ def fork_off_task(cfg, data, databuilder, workerdata, extraconfigdata, runtask): | |||
269 | 269 | ||
270 | bb.utils.set_process_name("%s:%s" % (the_data.getVar("PN"), taskname.replace("do_", ""))) | 270 | bb.utils.set_process_name("%s:%s" % (the_data.getVar("PN"), taskname.replace("do_", ""))) |
271 | 271 | ||
272 | if not the_data.getVarFlag(taskname, 'network', False): | 272 | if not bb.utils.to_boolean(the_data.getVarFlag(taskname, 'network')): |
273 | if bb.utils.is_local_uid(uid): | 273 | if bb.utils.is_local_uid(uid): |
274 | logger.debug("Attempting to disable network for %s" % taskname) | 274 | logger.debug("Attempting to disable network for %s" % taskname) |
275 | bb.utils.disable_network(uid, gid) | 275 | bb.utils.disable_network(uid, gid) |
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() |