Hi RP,

On 1/15/21 4:45 PM, Richard Purdie wrote:
On Fri, 2021-01-15 at 11:23 +0800, Yu, Mingli wrote:
From: Mingli Yu <mingli...@windriver.com>

When multilib enabled, there comes below error for packages which
inherit useradd bbclass randomly when build eSDK.
  $ bitbake image-name -c populate_sdk_ext
  Exception: subprocess.CalledProcessError: Command 
'/prj/tmp-glibc/work/intel_x86_64-wrs-linux/wrlinux-image-std/1.0-r5/lib32-recipe-sysroot/usr/bin/postinst-useradd-lib32-avahi'
 returned non-zero exit status 1.
  Subprocess output:
  
/prj/tmp-glibc/work/intel_x86_64-wrs-linux/wrlinux-image-std/1.0-r5/recipe-sysroot-native/usr/sbin/useradd
  Running useradd commands...
  NOTE: lib32-avahi: Performing useradd with [--root 
/prj/tmp-glibc/work/intel_x86_64-wrs-linux/wrlinux-image-std/1.0-r5/recipe-sysroot
 --system --home /run/avahi-daemon                               
--no-create-home --shell /bin/false                               --user-group 
avahi]
  useradd: Warning: missing or non-executable shell '/bin/false'
  abort()ing pseudo client by server request. See 
https://wiki.yoctoproject.org/wiki/Pseudo_Abort for more details on this.
  Check logfile: 
/prj/tmp-glibc/work/intel_x86_64-wrs-linux/wrlinux-image-std/1.0-r5/pseudo//pseudo.log
  ERROR: lib32-avahi: useradd command did not succeed.
  ERROR: Logfile of failure stored in: 
/prj/tmp-glibc/work/intel_x86_64-wrs-linux/wrlinux-image-std/1.0-r5/temp/log.do_sdk_depends.20567

  $ cat  
/prj/tmp-glibc/work/intel_x86_64-wrs-linux/wrlinux-image-std/1.0-r5/pseudo//pseudo.log
  [snip]
  path mismatch [1 link]: ino 26553244 db 
'/prj/tmp-glibc/work/intel_x86_64-wrs-linux/wrlinux-image-std/1.0-r5/recipe-sysroot/etc/group'
req 
'/prj/tmp-glibc/work/intel_x86_64-wrs-linux/wrlinux-image-std/1.0-r5/recipe-sysroot/etc/group.33605'.
  [snip]

  Check the PSEUDO_IGNORE_PATHS in [1], the recipe-sysroot part is
  
/prj/tmp-glibc/work/corei7-32-wrsmllib32-linux/lib32-avahi/0.8-r0/recipe-sysroot.

  Use ${RECIPE_SYSROOT} for PSEUDO_IGNORE_PATHS to guarantee the
  recipe-syroot part to be 
/prj/tmp-glibc/work/intel_x86_64-wrs-linux/wrlinux-image-std/1.0-r5/recipe-sysroot
  to fix the above issue.

  [1] 
/prj/tmp-glibc/work/intel_x86_64-wrs-linux/wrlinux-image-std/1.0-r5/lib32-recipe-sysroot/usr/bin/postinst-useradd-lib32-avahi

Signed-off-by: Mingli Yu <mingli...@windriver.com>
---
  meta/conf/bitbake.conf | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
index 96c1c62b10..1dc08344ca 100644
--- a/meta/conf/bitbake.conf
+++ b/meta/conf/bitbake.conf
@@ -686,7 +686,7 @@ SRC_URI = ""
  PSEUDO_LOCALSTATEDIR ?= "${WORKDIR}/pseudo/"
  PSEUDO_PASSWD ?= "${STAGING_DIR_TARGET}:${PSEUDO_SYSROOT}"
  PSEUDO_SYSROOT = "${COMPONENTS_DIR}/${BUILD_ARCH}/pseudo-native"
-PSEUDO_IGNORE_PATHS = 
"/usr/,/etc/,/lib,/dev/,/run/,${T},${WORKDIR}/recipe-sysroot,${SSTATE_DIR},${STAMPS_DIR},${WORKDIR}/pkgdata-sysroot,${TMPDIR}/sstate-control,${DEPLOY_DIR},${WORKDIR}/deploy-,${TMPDIR}/buildstats,${WORKDIR}/sstate-build-package_,${WORKDIR}/sstate-install-package_,${WORKDIR}/sstate-build-image_complete,${TMPDIR}/sysroots-components,${BUILDHISTORY_DIR},${TMPDIR}/pkgdata,${TOPDIR}/cache,${COREBASE}/scripts,${CCACHE_DIR}"
+PSEUDO_IGNORE_PATHS = 
"/usr/,/etc/,/lib,/dev/,/run/,${T},${RECIPE_SYSROOT},${SSTATE_DIR},${STAMPS_DIR},${WORKDIR}/pkgdata-sysroot,${TMPDIR}/sstate-control,${DEPLOY_DIR},${WORKDIR}/deploy-,${TMPDIR}/buildstats,${WORKDIR}/sstate-build-package_,${WORKDIR}/sstate-install-package_,${WORKDIR}/sstate-build-image_complete,${TMPDIR}/sysroots-components,${BUILDHISTORY_DIR},${TMPDIR}/pkgdata,${TOPDIR}/cache,${COREBASE}/scripts,${CCACHE_DIR}"

This isn't correct since we're aiming to ignore both WORKDIR/recipe-

Will send out V2 to also ignore ${RECIPE_SYSROOT_NATIVE} altogether.

sysroot and WORKDIR/recipe-sysroot-native which the above does since
the paths can be thought of to end with "*".

I'm also confused by your mention of corei7-32-wrsmllib32-linux above
in:

/prj/tmp-glibc/work/corei7-32-wrsmllib32-linux/lib32-avahi/0.8-r0/recipe-sysroot.

since I thought you were working in:

/prj/tmp-glibc/work/intel_x86_64-wrs-linux/wrlinux-image-std

?

Steps to reproduce:
Add below logic to enable multilib and also install some package which inherit useradd bbclass.
require conf/multilib.conf
MULTILIBS ?= "multilib:lib32"
DEFAULTTUNE_virtclass-multilib-lib32 ?= "core2-32"
IMAGE_INSTALL_append += " bind lib32-bind openssh lib32-openssh dhcpcd lib32-dhcpcd postfix lib32-postfix nfs-utils lib32-nfs-utils cronie lib32-cronie dbus lib32-dbus systemd lib32-systemd rpcbind lib32-rpcbind"

And it fails when build extend sdk randomly.
$ bitbake core-image-minimal -c populate_sdk_ext
Exception: subprocess.CalledProcessError: Command '/prj/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0-r5/lib32-recipe-sysroot/usr/bin/postinst-useradd-lib32-avahi' returned non-zero exit status 1.
>>   Subprocess output:
>> /prj/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0-r5/recipe-sysroot-native/usr/sbin/useradd
>>   Running useradd commands...
>> NOTE: lib32-avahi: Performing useradd with [--root /prj/tmp/qemux86_64-poky-linux/core-image-minimal/1.0-r5/recipe-sysroot --system --home /run/avahi-daemon --no-create-home --shell /bin/false --user-group avahi]
>>   useradd: Warning: missing or non-executable shell '/bin/false'
>> abort()ing pseudo client by server request. See https://wiki.yoctoproject.org/wiki/Pseudo_Abort for more details on this. >> Check logfile: /prj/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0-r5/pseudo//pseudo.log
>>   ERROR: lib32-avahi: useradd command did not succeed.
>> ERROR: Logfile of failure stored in: /prj/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0-r5/temp/log.do_sdk_depends.30554


Check the PSEUDO_IGNORE_PATHS in /prj/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0-r0/lib32-recipe-sysroot/usr/bin/postinst-useradd-lib32-avahi, and the recipe sysroot part is /prj/tmp/work/core2-32-pokymllib32-linux/lib32-avahi/0.8-r0/recipe-sysroot. And meanwhile check PSEUDO_IGNORE_PATHS in /prj/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0-r0/recipe-sysroot/usr/bin/postinst-useradd-avahi, the recipe sysroot part is /prj/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0-r0/recipe-sysroot.

So set ${RECIPE_SYSROOT} for PSEUDO_IGNORE_PATHS to fix the recipe sysroot part is incorrect in multilib env.

Thanks,


Cheers,

Richard








-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#147016): 
https://lists.openembedded.org/g/openembedded-core/message/147016
Mute This Topic: https://lists.openembedded.org/mt/79694117/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to