[PATCH] update_udev_hwdb: fix the fail to postinstall intercept update_udev_hwdb
| 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