| Message ID | 2e0afe1da33fbe353182ba63760d7d3e5420dbff.1770968514.git.yoann.congal@smile.fr |
|---|---|
| State | RFC |
| Delegated to: | Yoann Congal |
| Headers | show |
| Series | [whinlatter,01/19] linux-yocto/6.12: update to v6.12.69 | expand |
On Fri Feb 13, 2026 at 9:08 AM CET, Yoann Congal wrote: > From: Paul Barker <paul@pbarker.dev> > > 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> > Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> > Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> > (cherry picked from commit 1551136333876ab8a63e96430a498dcfa580265c) > Signed-off-by: Yoann Congal <yoann.congal@smile.fr> > --- > 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 969d6dc13ab..7c8de5540c1 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): As a heads-up, this changes the exec_fakeroot_no_d() API. But, I discussed this with Paul: * We think this is an internal API (behind the more public deploy_no_d()) * And, if this breaks existing code, the change to adapt is trivial. Regards, > 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 a98b33c5718..2bf693d165a 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')
diff --git a/scripts/lib/devtool/__init__.py b/scripts/lib/devtool/__init__.py index 969d6dc13ab..7c8de5540c1 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 a98b33c5718..2bf693d165a 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')