* [PATCH 0/2] Fixes for PATH usage in devtool
@ 2026-01-06 16:03 Paul Barker
2026-01-06 16:03 ` [PATCH 1/2] devtool: deploy: Run pseudo with correct PATH Paul Barker
2026-01-06 16:03 ` [PATCH 2/2] devtool: deploy: Reset PATH after strip_execs Paul Barker
0 siblings, 2 replies; 3+ messages in thread
From: Paul Barker @ 2026-01-06 16:03 UTC (permalink / raw)
To: openembedded-core; +Cc: Paul Barker
These patches follow up the fix for the devtool selftest which has
already been sent [1].
[1]: https://msgid.link/20251222-devtool-deploy-selftest-v1-1-2e656331dbec@pbarker.dev/
Signed-off-by: Paul Barker <paul@pbarker.dev>
---
Paul Barker (2):
devtool: deploy: Run pseudo with correct PATH
devtool: deploy: Reset PATH after strip_execs
scripts/lib/devtool/__init__.py | 3 ++-
scripts/lib/devtool/deploy.py | 9 ++++++---
2 files changed, 8 insertions(+), 4 deletions(-)
---
base-commit: 0ed4776533145c901611d7f4f942490e33481335
change-id: 20260106-devtool-path-8a4f5b57e894
Best regards,
--
Paul Barker
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH 1/2] devtool: deploy: Run pseudo with correct PATH
2026-01-06 16:03 [PATCH 0/2] Fixes for PATH usage in devtool Paul Barker
@ 2026-01-06 16:03 ` Paul Barker
2026-01-06 16:03 ` [PATCH 2/2] devtool: deploy: Reset PATH after strip_execs Paul Barker
1 sibling, 0 replies; 3+ messages in thread
From: Paul Barker @ 2026-01-06 16:03 UTC (permalink / raw)
To: openembedded-core; +Cc: Paul Barker
When running FAKEROOTCMD (i.e. pseudo), we need to use the same PATH as
we would use if we were running inside bitbake instead of the host
environment's PATH. This ensures that we don't pick up any host
executables that may have problems with pseudo (such as the uutils
implementations of common system utilities used in Ubuntu 25.10).
Signed-off-by: Paul Barker <paul@pbarker.dev>
---
scripts/lib/devtool/__init__.py | 3 ++-
scripts/lib/devtool/deploy.py | 6 +++---
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/scripts/lib/devtool/__init__.py b/scripts/lib/devtool/__init__.py
index 969d6dc13ab1..7c8de5540c1c 100644
--- a/scripts/lib/devtool/__init__.py
+++ b/scripts/lib/devtool/__init__.py
@@ -74,12 +74,13 @@ def exec_watch(cmd, **options):
return buf, None
-def exec_fakeroot_no_d(fakerootcmd, fakerootenv, cmd, **kwargs):
+def exec_fakeroot_no_d(fakerootcmd, fakerootenv, path, cmd, **kwargs):
if not os.path.exists(fakerootcmd):
logger.error('pseudo executable %s could not be found - have you run a build yet? pseudo-native should install this and if you have run any build then that should have been built')
return 2
# Set up the appropriate environment
newenv = dict(os.environ)
+ newenv['PATH'] = path
for varvalue in fakerootenv.split():
if '=' in varvalue:
splitval = varvalue.split('=', 1)
diff --git a/scripts/lib/devtool/deploy.py b/scripts/lib/devtool/deploy.py
index a98b33c5718a..2bf693d165a0 100644
--- a/scripts/lib/devtool/deploy.py
+++ b/scripts/lib/devtool/deploy.py
@@ -186,8 +186,8 @@ def deploy_no_d(srcdir, workdir, path, strip_cmd, libdir, base_libdir, max_proce
srcdir = recipe_outdir
recipe_outdir = os.path.join(workdir, 'devtool-deploy-target-stripped')
if os.path.isdir(recipe_outdir):
- exec_fakeroot_no_d(fakerootcmd, fakerootenv, "rm -rf %s" % recipe_outdir, shell=True)
- exec_fakeroot_no_d(fakerootcmd, fakerootenv, "cp -af %s %s" % (os.path.join(srcdir, '.'), recipe_outdir), shell=True)
+ exec_fakeroot_no_d(fakerootcmd, fakerootenv, path, "rm -rf %s" % recipe_outdir, shell=True)
+ exec_fakeroot_no_d(fakerootcmd, fakerootenv, path, "cp -af %s %s" % (os.path.join(srcdir, '.'), recipe_outdir), shell=True)
os.environ['PATH'] = ':'.join([os.environ['PATH'], path or ''])
oe.package.strip_execs(args.recipename, recipe_outdir, strip_cmd, libdir, base_libdir, max_process)
@@ -266,7 +266,7 @@ def deploy_no_d(srcdir, workdir, path, strip_cmd, libdir, base_libdir, max_proce
shutil.rmtree(tmpdir)
# Now run the script
- ret = exec_fakeroot_no_d(fakerootcmd, fakerootenv, 'tar cf - . | %s %s %s %s \'sh %s %s %s %s\'' % (ssh_sshexec, ssh_port, extraoptions, args.target, tmpscript, args.recipename, destdir, tmpfilelist), cwd=recipe_outdir, shell=True)
+ ret = exec_fakeroot_no_d(fakerootcmd, fakerootenv, path, 'tar cf - . | %s %s %s %s \'sh %s %s %s %s\'' % (ssh_sshexec, ssh_port, extraoptions, args.target, tmpscript, args.recipename, destdir, tmpfilelist), cwd=recipe_outdir, shell=True)
if ret != 0:
raise DevtoolError('Deploy failed - rerun with -s to get a complete '
'error message')
--
2.43.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH 2/2] devtool: deploy: Reset PATH after strip_execs
2026-01-06 16:03 [PATCH 0/2] Fixes for PATH usage in devtool Paul Barker
2026-01-06 16:03 ` [PATCH 1/2] devtool: deploy: Run pseudo with correct PATH Paul Barker
@ 2026-01-06 16:03 ` Paul Barker
1 sibling, 0 replies; 3+ messages in thread
From: Paul Barker @ 2026-01-06 16:03 UTC (permalink / raw)
To: openembedded-core; +Cc: Paul Barker
We need to modify os.environ so that strip_execs() finds the correct
binaries to run. We shouldn't leave this modification in place for the
rest of the program execution though.
Signed-off-by: Paul Barker <paul@pbarker.dev>
---
scripts/lib/devtool/deploy.py | 3 +++
1 file changed, 3 insertions(+)
diff --git a/scripts/lib/devtool/deploy.py b/scripts/lib/devtool/deploy.py
index 2bf693d165a0..270e9104b25b 100644
--- a/scripts/lib/devtool/deploy.py
+++ b/scripts/lib/devtool/deploy.py
@@ -188,8 +188,11 @@ def deploy_no_d(srcdir, workdir, path, strip_cmd, libdir, base_libdir, max_proce
if os.path.isdir(recipe_outdir):
exec_fakeroot_no_d(fakerootcmd, fakerootenv, path, "rm -rf %s" % recipe_outdir, shell=True)
exec_fakeroot_no_d(fakerootcmd, fakerootenv, path, "cp -af %s %s" % (os.path.join(srcdir, '.'), recipe_outdir), shell=True)
+
+ oldpath = os.environ['PATH']
os.environ['PATH'] = ':'.join([os.environ['PATH'], path or ''])
oe.package.strip_execs(args.recipename, recipe_outdir, strip_cmd, libdir, base_libdir, max_process)
+ os.environ['PATH'] = oldpath
filelist = []
inodes = set({})
--
2.43.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-01-06 16:03 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-06 16:03 [PATCH 0/2] Fixes for PATH usage in devtool Paul Barker
2026-01-06 16:03 ` [PATCH 1/2] devtool: deploy: Run pseudo with correct PATH Paul Barker
2026-01-06 16:03 ` [PATCH 2/2] devtool: deploy: Reset PATH after strip_execs Paul Barker
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox