On Mon, 2026-05-11 at 16:47 +0800, Changqing Li wrote:
> On 5/11/26 16:09, Paul Barker wrote:
> > 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.
> 
> Hi, Paul
> 
> Thanks for help.  You are right.  And I tried to patch pseudo locally to 
> make renameat2/renameat only ignore
> 
> when both oldpath and newpath are not in PSEUDO_INCLUDE_PATHS, and do a 
> simple test,  at least
> 
> bitbake postfix works well without pseudo abort.   After tidy up the 
> patch,  I  can send the patch to upstream pseudo
> 
> for review.

Hi Changqing,

If you have a patch for pseudo which fixes this, that would be very
welcome!

Thanks,

-- 
Paul Barker

Attachment: signature.asc
Description: This is a digitally signed message part

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