On 5/8/26 22:58, Paul Barker via lists.openembedded.org wrote:
CAUTION: This email comes from a non Wind River email account!
Do not click links or open attachments unless you recognize the sender and know 
the content is safe.

On Fri, 2026-05-08 at 13:19 +0000, Changqing Li via
lists.openembedded.org wrote:
Hi,

I am trying to build project on ubuntu 26.04.  "bitbake postfix"  failed  at 
do_package since pseudo abort,   after doing  some search, it is caused by ubtunu26.04's 
new change,  Ubuntu has officially begun transitioning its core system utilities from the 
traditional GNU Coreutils (written in C) to uutils (a Rust-based rewrite).   I would like 
to seek some help,  could you give some advices about how we should handle this?  Thanks.

Here is how  it happened:
* ‎  In do_install stage:
There are  2 files target to installed under ${D}: (there are other files 
following this pattern)
${D}/usr/libexec/postfix/smtp:     which is  mv from file under {S}, and then 
chmod
${D}/usr/libexec/postfix/lmtp:      hardlink to ${D}/usr/libexec/postfix/smtp

With the old gnu coreutils:
when install smtp,   mv will call renameat2, which will finally calling real 
syscall since the oldpath is under {S} which is not in PSEUDO_INCLUDE_PATHS.
then chmod call fchmodat,   then fchmodat wrapper will save an entry with uid 0 
in files.db.   install lmtp will also insert an entry with uid 0 in files.db

With the new rust coreutils:
when install smtp,    the behavior of chmod is different,   statx get current 
mode,  rust chmod check the current mode  is the same as the target mode, then
fchmodat is never called, then smtp is not saved in files.db,  and this will 
also make install lmtp insert an entry with real uid like 25610  in files.db 
since smtp is not found in files.db

* ‎  in do_package stage:

Exception: subprocess.CalledProcessError: Command 'tar --exclude=./sysroot-only 
-cf - -C /yocto/build/tmp/work/x86-64-v3-oe-linux/postfix/3.10.8/image -p -S . 
| tar -xf - -C /yocto/build/tmp/work/x86-64-v3-oe-linux/postfix/3.10.8/package' 
returned non-zero exit status 2.

Subprocess output:
abort()ing pseudo client by server request. See 
https://wiki.yoctoproject.org/wiki/Pseudo_Abort for more details on this.
Check logfile: 
/buildarea1/cli10/yocto/build/tmp/work/x86-64-v3-oe-linux/postfix/3.10.8/pseudo//pseudo.log

tar command may  call stat  for ${D}/usr/libexec/postfix/smtp,   since the  we 
have a same inode entry in files.db for lmtp, above error reported.


The key  issue is ${D}/usr/libexec/postfix/smtp is not inserted in files.db in 
do_install stage,  which will cause wrong uid for lmtp and  psedo abort in 
do_package stage.
I think we cannot change behavior of rust coreutils.   I am wondering even we 
patch postfix to not use hardlink, the pseudo abort issue may disappear,  but 
since
chmod not call fchmodat,   we don't insert entries for these files,   maybe the 
uid etc is wrong in final image.

[1] https://github.com/uutils/coreutils/blob/main/src/uu/chmod/src/chmod.rs
[2] https://github.com/coreutils/coreutils/blob/master/src/chmod.c
[3] https://lists.openembedded.org/g/openembedded-devel/topic/119211397    // 
patch for build postfix with linux kernel 7.x
Hi Changqing,

The tar command failing with exit status 2 should be resolved by recent
changes in pseudo. Which Yocto Project version are you using?

I use the latest master branch with pseudo 1.9.6. And this issue only can reproduce with ubuntu26.04 with uutils installed.

ubuntu24.04 with gnu-coreutils  works well.

//Changqing



Thanks,

--
Paul Barker




-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#236750): 
https://lists.openembedded.org/g/openembedded-core/message/236750
Mute This Topic: https://lists.openembedded.org/mt/119214074/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to