[PATCH] update_udev_hwdb: fix the fail to postinstall intercept update_udev_hwdb

[email protected]
Newsgroups org.yoctoproject.lists.poky
Message-ID <[email protected]>
when multilib enabled, the lib32 udevadm will be installed to oe-sdk-hardcoded-buildpath/sysroots/armv8a-poky-linux/bin/, it will fail when run update_udev_hwdb for 64 bit script:
|qemu-aarch64: /xxxxxx/oe-sdk-hardcoded-buildpath/sysroots/armv8a-poky-linux/bin/udevadm: Invalid ELF image for this architecture

the update_udev_hwdb fail to re-run udevadm with same arch qemuwrapper if run ${binprefix}qemuwrapper fail, because the binprefix is empty when run in 64 bit script

error:
NOTE: Running intercept scripts:
NOTE: > Executing update_udev_hwdb-lib32 intercept ...
+ [ True = False -a lib32-qemuwrapper-cross != nativesdk-qemuwrapper-cross ]
+ qemu-arm -r 3.2.0 -E LD_LIBRARY_PATH=/mnt/fileroot/jinrong.liao/yocto/test/build-av400-lib32-popular-sdk/tmp/work/mesona5_av400_lib32-poky-linux/amlogic-sbr-yocto/1.0-r0/sdk/image/usr/local/oe-sdk-hardcoded-buildpath/sysroots/armv8a-poky-linux/usr/lib:/mnt/fileroot/jinrong.liao/yocto/test/build-av400-lib32-  popular-sdk/tmp/work/mesona5_av400_lib32-poky-linux/amlogic-sbr-yocto/1.0-r0/sdk/image/usr/local/oe-sdk-hardcoded-buildpath/sysroots/armv8a-poky-linux/lib -L /mnt/fileroot/jinrong.liao/yocto/test/build-av400-lib32-popular-sdk/tmp/work/mesona5_av400_lib32-poky-linux/amlogic-sbr-yocto/1.0-r0/sdk/image/usr/local/ oe-sdk-hardcoded-buildpath/sysroots/armv8a-poky-linux /mnt/fileroot/jinrong.liao/yocto/test/build-av400-lib32-popular-sdk/tmp/work/mesona5_av400_lib32-poky-linux/amlogic-sbr-yocto/1.0-r0/sdk/image/usr/local/oe-sdk-hardcoded-buildpath/sysroots/armv8a-poky-linux/bin/udevadm hwdb --update --root /mnt/fileroot/    jinrong.liao/yocto/test/build-av400-lib32-popular-sdk/tmp/work/mesona5_av400_lib32-poky-linux/amlogic-sbr-yocto/1.0-r0/sdk/image/usr/local/oe-sdk-hardcoded-buildpath/sysroots/armv8a-poky-linux --usr

NOTE: > Executing update_gio_module_cache intercept ...
NOTE: + [ True = False -a qemuwrapper-cross != nativesdk-qemuwrapper-cross ]
+ qemu-aarch64 -r 3.14 -E LD_LIBRARY_PATH=/mnt/fileroot/jinrong.liao/yocto/test/build-av400-lib32-popular-sdk/tmp/work/mesona5_av400_lib32-poky-linux/amlogic-sbr-yocto/1.0-r0/sdk/image/usr/local/oe-sdk-hardcoded-buildpath/sysroots/armv8a-poky-linux/usr/lib64:/mnt/fileroot/jinrong.liao/yocto/test/build-av400-   lib32-popular-sdk/tmp/work/mesona5_av400_lib32-poky-linux/amlogic-sbr-yocto/1.0-r0/sdk/image/usr/local/oe-sdk-hardcoded-buildpath/sysroots/armv8a-poky-linux/lib64 -L /mnt/fileroot/jinrong.liao/yocto/test/build-av400-lib32-popular-sdk/tmp/work/mesona5_av400_lib32-poky-linux/amlogic-sbr-yocto/1.0-r0/sdk/image/   usr/local/oe-sdk-hardcoded-buildpath/sysroots/armv8a-poky-linux /mnt/fileroot/jinrong.liao/yocto/test/build-av400-lib32-popular-sdk/tmp/work/mesona5_av400_lib32-poky-linux/amlogic-sbr-yocto/1.0-r0/sdk/image/usr/local/oe-sdk-hardcoded-buildpath/sysroots/armv8a-poky-linux/usr/libexec/gio-querymodules /mnt/       fileroot/jinrong.liao/yocto/test/build-av400-lib32-popular-sdk/tmp/work/mesona5_av400_lib32-poky-linux/amlogic-sbr-yocto/1.0-r0/sdk/image/usr/local/oe-sdk-hardcoded-buildpath/sysroots/armv8a-poky-linux/usr/lib64/gio/modules/

NOTE: > Executing update_gio_module_cache-lib32 intercept ...
NOTE: + [ True = False -a lib32-qemuwrapper-cross != nativesdk-qemuwrapper-cross ]
+ qemu-arm -r 3.2.0 -E LD_LIBRARY_PATH=/mnt/fileroot/jinrong.liao/yocto/test/build-av400-lib32-popular-sdk/tmp/work/mesona5_av400_lib32-poky-linux/amlogic-sbr-yocto/1.0-r0/sdk/image/usr/local/oe-sdk-hardcoded-buildpath/sysroots/armv8a-poky-linux/usr/lib:/mnt/fileroot/jinrong.liao/yocto/test/build-av400-lib32-  popular-sdk/tmp/work/mesona5_av400_lib32-poky-linux/amlogic-sbr-yocto/1.0-r0/sdk/image/usr/local/oe-sdk-hardcoded-buildpath/sysroots/armv8a-poky-linux/lib -L /mnt/fileroot/jinrong.liao/yocto/test/build-av400-lib32-popular-sdk/tmp/work/mesona5_av400_lib32-poky-linux/amlogic-sbr-yocto/1.0-r0/sdk/image/usr/local/ oe-sdk-hardcoded-buildpath/sysroots/armv8a-poky-linux /mnt/fileroot/jinrong.liao/yocto/test/build-av400-lib32-popular-sdk/tmp/work/mesona5_av400_lib32-poky-linux/amlogic-sbr-yocto/1.0-r0/sdk/image/usr/local/oe-sdk-hardcoded-buildpath/sysroots/armv8a-poky-linux/usr/libexec/lib32-gio-querymodules /mnt/fileroot/  jinrong.liao/yocto/test/build-av400-lib32-popular-sdk/tmp/work/mesona5_av400_lib32-poky-linux/amlogic-sbr-yocto/1.0-r0/sdk/image/usr/local/oe-sdk-hardcoded-buildpath/sysroots/armv8a-poky-linux/usr/lib/gio/modules/

NOTE: > Executing update_udev_hwdb intercept ...
NOTE: Exit code 255. Output:
+ [ True = False -a qemuwrapper-cross != nativesdk-qemuwrapper-cross ]
+ qemu-aarch64 -r 3.14 -E LD_LIBRARY_PATH=/mnt/fileroot/jinrong.liao/yocto/test/build-av400-lib32-popular-sdk/tmp/work/mesona5_av400_lib32-poky-linux/amlogic-sbr-yocto/1.0-r0/sdk/image/usr/local/oe-sdk-hardcoded-buildpath/sysroots/armv8a-poky-linux/usr/lib64:/mnt/fileroot/jinrong.liao/yocto/test/build-av400-   lib32-popular-sdk/tmp/work/mesona5_av400_lib32-poky-linux/amlogic-sbr-yocto/1.0-r0/sdk/image/usr/local/oe-sdk-hardcoded-buildpath/sysroots/armv8a-poky-linux/lib64 -L /mnt/fileroot/jinrong.liao/yocto/test/build-av400-lib32-popular-sdk/tmp/work/mesona5_av400_lib32-poky-linux/amlogic-sbr-yocto/1.0-r0/sdk/image/   usr/local/oe-sdk-hardcoded-buildpath/sysroots/armv8a-poky-linux /mnt/fileroot/jinrong.liao/yocto/test/build-av400-lib32-popular-sdk/tmp/work/mesona5_av400_lib32-poky-linux/amlogic-sbr-yocto/1.0-r0/sdk/image/usr/local/oe-sdk-hardcoded-buildpath/sysroots/armv8a-poky-linux/bin/udevadm hwdb --update --root /mnt/   fileroot/jinrong.liao/yocto/test/build-av400-lib32-popular-sdk/tmp/work/mesona5_av400_lib32-poky-linux/amlogic-sbr-yocto/1.0-r0/sdk/image/usr/local/oe-sdk-hardcoded-buildpath/sysroots/armv8a-poky-linux --usr
qemu-aarch64: /mnt/fileroot/jinrong.liao/yocto/test/build-av400-lib32-popular-sdk/tmp/work/mesona5_av400_lib32-poky-linux/amlogic-sbr-yocto/1.0-r0/sdk/image/usr/local/oe-sdk-hardcoded-buildpath/sysroots/armv8a-poky-linux/bin/udevadm: Invalid ELF image for this architecture
+ [ True = False -a qemuwrapper-cross != nativesdk-qemuwrapper-cross ]
+ qemu-aarch64 -r 3.14 -E LD_LIBRARY_PATH=/mnt/fileroot/jinrong.liao/yocto/test/build-av400-lib32-popular-sdk/tmp/work/mesona5_av400_lib32-poky-linux/amlogic-sbr-yocto/1.0-r0/sdk/image/usr/local/oe-sdk-hardcoded-buildpath/sysroots/armv8a-poky-linux/usr/lib64:/mnt/fileroot/jinrong.liao/yocto/test/build-av400-   lib32-popular-sdk/tmp/work/mesona5_av400_lib32-poky-linux/amlogic-sbr-yocto/1.0-r0/sdk/image/usr/local/oe-sdk-hardcoded-buildpath/sysroots/armv8a-poky-linux/lib64 -L /mnt/fileroot/jinrong.liao/yocto/test/build-av400-lib32-popular-sdk/tmp/work/mesona5_av400_lib32-poky-linux/amlogic-sbr-yocto/1.0-r0/sdk/image/   usr/local/oe-sdk-hardcoded-buildpath/sysroots/armv8a-poky-linux /mnt/fileroot/jinrong.liao/yocto/test/build-av400-lib32-popular-sdk/tmp/work/mesona5_av400_lib32-poky-linux/amlogic-sbr-yocto/1.0-r0/sdk/image/usr/local/oe-sdk-hardcoded-buildpath/sysroots/armv8a-poky-linux/bin/udevadm hwdb --update --root /mnt/   fileroot/jinrong.liao/yocto/test/build-av400-lib32-popular-sdk/tmp/work/mesona5_av400_lib32-poky-linux/amlogic-sbr-yocto/1.0-r0/sdk/image/usr/local/oe-sdk-hardcoded-buildpath/sysroots/armv8a-poky-linux --usr
qemu-aarch64: /mnt/fileroot/jinrong.liao/yocto/test/build-av400-lib32-popular-sdk/tmp/work/mesona5_av400_lib32-poky-linux/amlogic-sbr-yocto/1.0-r0/sdk/image/usr/local/oe-sdk-hardcoded-buildpath/sysroots/armv8a-poky-linux/bin/udevadm: Invalid ELF image for this architecture

ERROR: The postinstall intercept hook 'update_udev_hwdb' failed, details in /mnt/fileroot/jinrong.liao/yocto/test/build-av400-lib32-popular-sdk/tmp/work/mesona5_av400_lib32-poky-linux/amlogic-sbr-yocto/1.0-r0/temp/log.do_populate_sdk
0001-update_udev_hwdb-fix-the-fail-to-postinstall-interce.patch (application/octet-stream, 2.9 KB)
From 9e82b4b81a2484292a183a5c3c7bdd0d9caf0e0b Mon Sep 17 00:00:00 2001
From: "jinrong.liao" <[email protected]>
Date: Fri, 24 Nov 2023 10:12:05 +0800
Subject: [PATCH] update_udev_hwdb: fix the fail to postinstall intercept
 update_udev_hwdb [1/1]

when multilib enabled, the lib32 udevadm will be installed to
oe-sdk-hardcoded-buildpath/sysroots/armv8a-poky-linux/bin/, it will fail
when run update_udev_hwdb for 64 bit script:
|qemu-aarch64: /xxxxxx/oe-sdk-hardcoded-buildpath/sysroots/armv8a-poky-linux/bin/udevadm: Invalid ELF image for this architecture

the update_udev_hwdb fail to re-run udevadm with same arch qemuwrapper
if run ${binprefix}qemuwrapper fail, because the binprefix is empty when
run in 64 bit script

related change:
commit 09d2ca20cbe0857a04014f8a362f03d1480f1748
Author: Kai Kang <[email protected]>
Date:   Fri Apr 15 22:38:03 2022 +0800

    update_udev_hwdb: fix multilib issue with systemd

    It duplicates udevadm in systemd recipe to make it could run
    update_udev_hwdb with multilib enabled. Since systemd last update,
    it deploys a shared library libsystemd-shared-250.so in /lib/systemd/.
    The library will be overwritten when multilib enabled. Then if both
    udev-hwdb and lib32-udev-hwdb are installed, it fails to run the
    multilib version postinstall intercept update_udev_hwdb:

    | /path/to/build/tmp-glibc/work/intel_x86_64-wrs-linux/wrlinux-image-small/1.0-r1/rootfs/usr/libexec/lib32-udevadm:
        error while loading shared libraries: libsystemd-shared-250.so: wrong ELF class: ELFCLASS64

    `udevadm hwdb --update` just concatenates .hwdb files in dirs
    /etc/udev/hwdb.d and /lib/udev/hwdb.d. The output file hwdb.bin is
    identical with the one created by lib32-udevadm. So do NOT duplicate
    lib32-udevadm in systemd and eudev. And update intercept script
    update_udev_hwdb that re-run udevadm with same arch qemuwrapper if run
    ${binprefix}qemuwrapper failed.

    (From OE-Core rev: 74fe1b5af064f644a7d555b61527bb7d02cc30b8)

Change-Id: I3bee94347f796c6ce6ae3c699c3d493c7bd74ee0
Signed-off-by: jinrong.liao <[email protected]>
---
 scripts/postinst-intercepts/update_udev_hwdb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/postinst-intercepts/update_udev_hwdb b/scripts/postinst-intercepts/update_udev_hwdb
index 8b3f5de791..5404ccd6a5 100644
--- a/scripts/postinst-intercepts/update_udev_hwdb
+++ b/scripts/postinst-intercepts/update_udev_hwdb
@@ -20,6 +20,6 @@ case "${PREFERRED_PROVIDER_udev}" in
 esac
 
 rm -f $D${UDEVLIBDIR}/udev/hwdb.bin
-PSEUDO_UNLOAD=1 ${binprefix}qemuwrapper -L $D $D${UDEVADM} hwdb --update --root $D ${UDEV_EXTRA_ARGS} ||
+PSEUDO_UNLOAD=1 lib32-qemuwrapper -L $D $D${UDEVADM} hwdb --update --root $D ${UDEV_EXTRA_ARGS} ||
 	PSEUDO_UNLOAD=1 qemuwrapper -L $D $D${UDEVADM} hwdb --update --root $D ${UDEV_EXTRA_ARGS}
 chown root:root $D${UDEVLIBDIR}/udev/hwdb.bin
-- 
2.34.1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.