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 15:10:03 +0000 |
commit | 3d96c07f9fd4ba1a84826811d14bb4e98ad58846 (patch) | |
tree | 6d8c92ed3fc363b111c8d8ba40804064b2449091 | |
parent | aaefb43b41a0d9b16a59643136268eb6e5d48cd2 (diff) | |
download | bitbake-contrib-3d96c07f9fd4ba1a84826811d14bb4e98ad58846.tar.gz |
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.
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rwxr-xr-x | bin/bitbake-worker | 2 | ||||
-rw-r--r-- | lib/bb/data.py | 10 |
2 files changed, 6 insertions, 6 deletions
diff --git a/bin/bitbake-worker b/bin/bitbake-worker index a3ea5d961..d743ff510 100755 --- a/bin/bitbake-worker +++ b/bin/bitbake-worker @@ -269,7 +269,7 @@ def fork_off_task(cfg, data, databuilder, workerdata, extraconfigdata, runtask): bb.utils.set_process_name("%s:%s" % (the_data.getVar("PN"), taskname.replace("do_", ""))) - if not the_data.getVarFlag(taskname, 'network', False): + if not bb.utils.to_boolean(the_data.getVarFlag(taskname, 'network')): if bb.utils.is_local_uid(uid): logger.debug("Attempting to disable network for %s" % taskname) bb.utils.disable_network(uid, gid) diff --git a/lib/bb/data.py b/lib/bb/data.py index f3ae06202..3ee8f5e7d 100644 --- a/lib/bb/data.py +++ b/lib/bb/data.py @@ -114,8 +114,8 @@ def emit_var(var, o=sys.__stdout__, d = init(), all=False): if d.getVarFlag(var, 'python', False) and func: return False - export = d.getVarFlag(var, "export", False) - unexport = d.getVarFlag(var, "unexport", False) + export = bb.utils.to_boolean(d.getVarFlag(var, "export")) + unexport = bb.utils.to_boolean(d.getVarFlag(var, "unexport")) if not all and not export and not unexport and not func: return False @@ -188,8 +188,8 @@ def emit_env(o=sys.__stdout__, d = init(), all=False): def exported_keys(d): return (key for key in d.keys() if not key.startswith('__') and - d.getVarFlag(key, 'export', False) and - not d.getVarFlag(key, 'unexport', False)) + bb.utils.to_boolean(d.getVarFlag(key, 'export')) and + not bb.utils.to_boolean(d.getVarFlag(key, 'unexport'))) def exported_vars(d): k = list(exported_keys(d)) @@ -375,7 +375,7 @@ def generate_dependencies(d, ignored_vars): mod_funcs = set(bb.codeparser.modulecode_deps.keys()) keys = set(key for key in d if not key.startswith("__")) | mod_funcs - shelldeps = set(key for key in d.getVar("__exportlist", False) if d.getVarFlag(key, "export", False) and not d.getVarFlag(key, "unexport", False)) + 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"))) varflagsexcl = d.getVar('BB_SIGNATURE_EXCLUDE_FLAGS') codeparserd = d.createCopy() |