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
Regards
Changqing
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#236712):
https://lists.openembedded.org/g/openembedded-core/message/236712
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]]
-=-=-=-=-=-=-=-=-=-=-=-