On Sun, 2026-05-10 at 16:37 +0100, Paul Barker wrote:
> On Sat, 2026-05-09 at 09:41 +0800, Changqing Li wrote:
> > 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.
>
> Hi Changqing,
>
> I looked into this as the chmod behaviour differences you described
> didn't sound like an issue to me.
>
> I think the actual issue is that files moved (instead of copied) into
> ${D} are not tracked by pseudo. For postfix, when using GNU coreutils
> this issue is hidden because chmod always sets the permissions of the
> file, which pseudo observes. When using uutils on Ubuntu 26.04, chmod
> may not set the permissions if they are already correct, so pseudo
> doesn't observe anything it can add to its database.
>
> A simple recipe can reproduce this issue on Debian 13 (where uutils is
> not used) as well as Ubuntu 26.04:
>
> LICENSE = "MIT"
> LIC_FILES_CHKSUM =
> "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
>
> do_compile() {
> echo hello > ${B}/hello.txt
> }
>
> do_install() {
> mv ${B}/hello.txt ${D}/hello.txt
> ln ${D}/hello.txt ${D}/hello2.txt
> }
>
> FILES:${PN} += "/hello2.txt /hello.txt"
>
> Building this recipe fails with the same pseudo abort which you are
> seeing. If we use "cp" instead of "mv" in do_install then this works as
> expected.
>
> I'll discuss this with Mark and see how we want to handle it.The recipe above also causes a pseudo abort on the initial Scarthgap release (tag yocto-5.0) so this isn't a new issue, recent changes in pseudo are not responsible. Best regards, -- Paul Barker
signature.asc
Description: This is a digitally signed message part
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#236783): https://lists.openembedded.org/g/openembedded-core/message/236783 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]] -=-=-=-=-=-=-=-=-=-=-=-
