While working on oe-selftest issues on Ubuntu 25.10, I ended with a strange behavior of pseudo on this distro. Quick reproduce step: PSEUDO_PREFIX=/home/mathieu/projects/swat/gits/build-2510/tmp/sysroots-components/x86_64/pseudo-native/usr /home/mathieu/projects/swat/gits/build-2510/tmp/sysroots-components/x86_64/pseudo-native/usr/bin/pseudo ls -l couldn't allocate absolute path for 'null'. total 388 -rw-r--r-- 1 1000 1000 395938 Dec 12 10:44 log So the command is running correctly, but we have an extra error line. Enabling all debug logging options, I get: 740: pae: '/usr/lib/cargo/bin/coreutils', + 'locales', is_dir 1 740: paes: append_element gave us '/usr/lib/cargo/bin/coreutils/locales', current '' 740: element to add: 'ls' 740: pae: '/usr/lib/cargo/bin/coreutils/locales', + 'ls', is_dir 0 740: paes: append_element gave us '/usr/lib/cargo/bin/coreutils/locales/ls', current '' 740: <nil> + /usr/lib/cargo/bin/coreutils/locales/ls => </usr/lib/cargo/bin/coreutils/locales/ls> 740: base_path[follow]: <nil></>/usr/lib/cargo/bin/coreutils/locales/ls => /usr/lib/cargo/bin/coreutils/locales/ls 740: root_path [statx, 14487]: '/usr/lib/cargo/bin/coreutils/locales/ls' from '/usr/lib/cargo/bin/coreutils/locales/ls' 740: statx - yielded lock, restored signals 740: wrapper completed: statx returns -1 (errno: 2) 740: wrapper called: statx 740: statx - signals blocked, obtaining lock 740: couldn't allocate absolute path for 'null'. 740: root_path [statx, 14487]: '<nil>' from '<nil>' 740: statx - yielded lock, restored signals 740: wrapper completed: statx returns -1 (errno: 14) So it look the ls binary is trying to open /usr/lib/cargo/bin/coreutils/locales/ls, and this file does not exist. If I create the said file, I no longer have any issue: $ sudo mkdir /usr/lib/cargo/bin/coreutils/locales/ $ sudo touch /usr/lib/cargo/bin/coreutils/locales/ls $ PSEUDO_PREFIX=/home/mathieu/projects/swat/gits/build-2510/tmp/sysroots-components/x86_64/pseudo-native/usr /home/mathieu/projects/swat/gits/build-2510/tmp/sysroots-components/x86_64/pseudo-native/usr/bin/pseudo ls -l total 388 -rw-r--r-- 1 1000 1000 395938 Dec 12 10:44 log Of course the ls binary is from uutils: $ ls --version ls (uutils coreutils) 0.2.2 So, is that a bug of pseudo? Maybe not. But it looks like this error will be shown on a lot of uutils commands when they are run in pseudo, not only ls: I feel like we should somehow avoid getting this message.
And of course I forgot to link the initial entry... https://bugzilla.yoctoproject.org/show_bug.cgi?id=16091
This is actually a duplicate of https://bugzilla.yoctoproject.org/show_bug.cgi?id=16075 *** This bug has been marked as a duplicate of bug 16075 ***
>>> So, is that a bug of pseudo? Maybe not. Yes, it is.
OK, so now we should understand why devtool is using ls from the host instead of buildtools
oe-selftest-debian ubuntu2510-vk-1 mathieu/master-next completed at 2025-12-18 15:55:15+00:00 https://autobuilder.yoctoproject.org/valkyrie/#/builders/35/builds/2855/steps/15/logs/stdio
The test_devtool_deploy_target case runs pseudo outside of bitbake, so it's using an unmodified PATH: https://git.openembedded.org/openembedded-core/tree/meta/lib/oeqa/selftest/cases/devtool.py#n1850.
But the actual cause is that pseudo isn't checking the path given to the statx() call. The Rust coreutils code make the call with a NULL value specifically to check whether the system call can be made. But the pseudo maintainer reckons this is a bug in coreutils (which it is not) and doesn't seem to want to change pseudo to handle this. See: https://bugzilla.yoctoproject.org/show_bug.cgi?id=16075#c6
@Gordon Lack: To clarify what we discussed on the bug triage call yesterday: Bug #16075 will continue to track the issue of what to do with a NULL path being passed to statx() running under pseudo. This bug will track the selftest case failure. We should not actually see the uutils implementation of ls being used here. So the test case should be fixed to use the correct PATH. Both of these issues need resolving.
Patch sent to the list: d-core/20251222-devtool-deploy-selftest-v1-1-2e656331dbec@pbarker.dev/T/#u I reproduced the issue on Ubuntu 25.10 and confirmed that this patch fixes it.
Not sure what happened to my link, let's try again: https://lore.kernel.org/openembedded-core/20251222-devtool-deploy-selftest-v1-1-2e656331dbec@pbarker.dev/T/#u
We should have a look if there are other instances of runCmd in the selftest suite where we should be using the same PATH as we'd use inside bitbake. We may want to set os.environ['PATH'] on entry to devtool or selftest to ensure that we're using HOSTTOOLS everywhere that we should be.
oe-selftest-debian ubuntu2510-vk-1 mathieu/master-next&contrib/mathieu/master-next completed at 2025-12-23 10:03:00+00:00 https://autobuilder.yoctoproject.org/valkyrie/#/builders/35/builds/2892/steps/15/logs/stdio
This should be fixed by selftest: devtool: Set PATH when running pseudo https://lore.kernel.org/openembedded-core/20251222-devtool-deploy-selftest-v1-1-2e656331dbec@pbarker.dev/ I've also followed up with: devtool: deploy: Run pseudo with correct PATH https://lore.kernel.org/openembedded-core/20260106-devtool-path-v1-1-23fd7a493fe8@pbarker.dev/ devtool: deploy: Reset PATH after strip_execs https://lore.kernel.org/openembedded-core/20260106-devtool-path-v1-2-23fd7a493fe8@pbarker.dev/ This covers usage of pseudo in devtool and selftest, and we can't change the PATH more generally as these tools rely on calling tools that wouldn't be on the bitbake PATH. So, I think we can call this resolved once the above patches are merged.
Fix merged to master in https://git.openembedded.org/openembedded-core/commit/?id=8a264cb75ab456c22568b135c473064553e5321b.
>> This bug will track the selftest case failure. We should not actually see the uutils implementation of ls being used here. So the test case should be fixed to use the correct PATH. If pseudo were fixed (it *is* bugged) then it would work with the Rust uutils anyway.
This hit a whinlatter 5.3.1 release build: oe-selftest-debian ubuntu2510-vk-1 whinlatter https://autobuilder.yoctoproject.org/valkyrie/#/builders/35/builds/2963 https://autobuilder.yoctoproject.org/valkyrie/#/builders/35/builds/3000 The errors (to help me find this next time): stdio: ERROR: Actual rootfs size (1934451 kB) is larger than allowed size 79872 kB stdio: ERROR: Actual rootfs size (1934451 kB) is larger than allowed size 79872 kB 2026-01-04 21:37:09,954 - oe-selftest - INFO - RESULTS - devtool.DevtoolDeployTargetTests.test_devtool_deploy_target: FAILED (171.21s) 2026-01-04 21:37:09,954 - oe-selftest - INFO - RESULTS - wic.Wic.test_grub_install_pcbios: FAILED (51.73s) Most likely, I need to backport to whinlatter: * [PATCH] selftest: devtool: Set PATH when running pseudo - Paul Barker https://lore.kernel.org/openembedded-core/20251222-devtool-deploy-selftest-v1-1-2e656331dbec@pbarker.dev/ * [PATCH 1/2] devtool: deploy: Run pseudo with correct PATH - Paul Barker https://lore.kernel.org/openembedded-core/20260106-devtool-path-v1-1-23fd7a493fe8@pbarker.dev/ * [PATCH 2/2] devtool: deploy: Reset PATH after strip_execs - Paul Barker https://lore.kernel.org/openembedded-core/20260106-devtool-path-v1-2-23fd7a493fe8@pbarker.dev/
Hi Yoann, backporting the first patch ("selftest: devtool: Set PATH when running pseudo") should be enough to silence this error. That is present on master so can be backported. Please go ahead and test that, if it succeeds we can respin as 5.3.1-rc2. The other two patches for devtool are not yet on master so shouldn't be backported yet.
(In reply to Paul Barker from comment #17) > Hi Yoann, backporting the first patch ("selftest: devtool: Set PATH when > running pseudo") should be enough to silence this error. That is present on > master so can be backported. Please go ahead and test that, if it succeeds > we can respin as 5.3.1-rc2. > > The other two patches for devtool are not yet on master so shouldn't be > backported yet. 5.3.1 had already started QA from the 5.3.1-rc2 build[0]. So we won't respin. I've noted to import these patches (first one certain, "to be confirmed" for the other 2) for the next whinlatter builds/tests/patchs merge. [0]: https://lists.yoctoproject.org/g/qa-build-notification/topic/117234373#msg641
Stable build hit: whinlatter oe-selftest-debian ubuntu2510-vk-1 https://autobuilder.yoctoproject.org/valkyrie/#/builders/35/builds/3000
Yoann, please close once https://git.openembedded.org/openembedded-core/commit/?id=8a264cb75ab456c22568b135c473064553e5321b has been merged to the relevant stable branch(es).
Backport fix merged on Whinlatter: selftest: devtool: Set PATH when running pseudo https://git.openembedded.org/openembedded-core/commit/?h=whinlatter&id=3961d1958902276fe12dc28afaba02344271c2c2 AB does not run the other stable branches on Ubuntu 25.10 so the above fix is enough to close this but I will think/ask about merging this on the other stable branches.