| Message ID | 20260720195834.2496647-1-amery@apptly.co |
|---|---|
| State | New |
| Headers | show |
| Series | [2.18] bitbake-worker: Evaluate exported_vars() before emptying the environment | expand |
diff --git a/bin/bitbake-worker b/bin/bitbake-worker index aa14ef191..0db1531e0 100755 --- a/bin/bitbake-worker +++ b/bin/bitbake-worker @@ -290,7 +290,7 @@ def fork_off_task(cfg, data, databuilder, workerdata, extraconfigdata, runtask): # exported_vars() returns a generator which *cannot* be passed to os.environ.update() # successfully. We also need to unset anything from the environment which shouldn't be there - exports = bb.data.exported_vars(the_data) + exports = list(bb.data.exported_vars(the_data)) bb.utils.empty_environment() for e, v in exports:
exported_vars() returns a lazy generator. It was bound before empty_environment() cleared the process environment and only iterated afterwards, so any datastore expansion deferred until iteration ran with PATH already wiped. Recipes whose exported variables expand a command during that loop hit this. A gitver-style PV such as "${@get_git_pv(d, ...)}" runs git while PATH is empty, so the git wrapper on PATH is bypassed and the real git runs directly. Under pseudo this fakes uid 0 against a repository owned by the real user, and git aborts with "detected dubious ownership", failing do_package intermittently (only on reparse, when the value is re-expanded rather than served from cache). Materialise the generator into a list before emptying the environment so every expansion happens while PATH is still intact. Signed-off-by: Alejandro Mery <amery@apptly.co> --- bin/bitbake-worker | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)