You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Follow-up to #1219 / PR #1231, raised by CodeRabbit review there.
Problem
PR #1231 forwards the caller CLI's PATH per request and applies it to bare-name tool spawns on the build path (the five sites #1219 enumerated). The deploy path has the same class of exposure and was deliberately left out of that PR to keep it reviewable:
BuildParams.caller_path is populated in the deploy handler, but only for the pre-deploy build. The Deployer trait API, deployer construction, and Deployer::deploy do not receive caller_path.
The skip_build deploy path never constructs BuildParams at all, so caller_path currently has no carrier there.
Scope
Thread caller_path from the daemon DeployRequest (field already exists after fix(daemon): forward the caller CLI's PATH per request for bare-name tool spawns #1231) into deployer construction — likely a field on the deploy context/config struct rather than a Deployer::deploy signature change, whichever is less invasive given the trait's implementors.
Apply fbuild_core::subprocess::bare_name_path_overlay (added in fix(daemon): forward the caller CLI's PATH per request for bare-name tool spawns #1231) at deploy-time spawns that can run a bare name — audit fbuild-deploy for run_command/run_command_no_timeout calls with env: None where the program can be a bare fallback name. Provisioned absolute-path tools stay untouched (the helper no-ops for them).
Cover both the normal deploy path and skip_build.
Acceptance
A deploy whose esptool provisioning fails resolves the bare-name fallback against the requesting CLI's PATH, not the daemon's.
skip_build deploys carry caller_path the same way.
Regression tests at the deployer-construction level for both paths.
Defaults chosen by the drafting agent are listed inline — edit as needed.
Follow-up to #1219 / PR #1231, raised by CodeRabbit review there.
Problem
PR #1231 forwards the caller CLI's PATH per request and applies it to bare-name tool spawns on the build path (the five sites #1219 enumerated). The deploy path has the same class of exposure and was deliberately left out of that PR to keep it reviewable:
BuildParams.caller_pathis populated in the deploy handler, but only for the pre-deploy build. TheDeployertrait API, deployer construction, andDeployer::deploydo not receivecaller_path.fbuild-deploypassenv: Noneto the subprocess runners, so any bare-name fallback (e.g. the documented "falling back to esptool on PATH" path in esp32 deploy, see Orphaned mkdir install-locks deadlock after daemon crash; stale daemon endpoint survives 'daemon stop'; esptool provisioning failure kills daemon #1213 part 3) resolves against the daemon's spawn-time PATH — the exact staleness daemon binds tool resolution to spawn-time PATH for up to 12h — bare-name esptool/python/objcopy spawns resolve nondeterministically #1219 fixed for builds.skip_builddeploy path never constructsBuildParamsat all, socaller_pathcurrently has no carrier there.Scope
caller_pathfrom the daemonDeployRequest(field already exists after fix(daemon): forward the caller CLI's PATH per request for bare-name tool spawns #1231) into deployer construction — likely a field on the deploy context/config struct rather than aDeployer::deploysignature change, whichever is less invasive given the trait's implementors.fbuild_core::subprocess::bare_name_path_overlay(added in fix(daemon): forward the caller CLI's PATH per request for bare-name tool spawns #1231) at deploy-time spawns that can run a bare name — auditfbuild-deployforrun_command/run_command_no_timeoutcalls withenv: Nonewhere the program can be a bare fallback name. Provisioned absolute-path tools stay untouched (the helper no-ops for them).skip_build.Acceptance
skip_builddeploys carrycaller_paththe same way.Defaults chosen by the drafting agent are listed inline — edit as needed.