diff options
| author | Kai Kang <kai.kang@windriver.com> | 2022-04-15 22:38:03 +0800 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2022-04-28 17:07:18 +0100 |
| commit | 09d2ca20cbe0857a04014f8a362f03d1480f1748 (patch) | |
| tree | e7250cf9e71d10ce96f6610ae932762739adc971 | |
| parent | 9c2e7b1261e3b6bf4a5789eb11c59e936a2559c1 (diff) | |
| download | poky-09d2ca20cbe0857a04014f8a362f03d1480f1748.tar.gz | |
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)
Signed-off-by: Kai Kang <kai.kang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 3dba872a42c2be7d0865a30118984ab013850292)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
| -rw-r--r-- | meta/recipes-core/systemd/systemd_250.4.bb | 5 | ||||
| -rw-r--r-- | meta/recipes-core/udev/eudev_3.2.10.bb | 4 | ||||
| -rw-r--r-- | scripts/postinst-intercepts/update_udev_hwdb | 5 |
3 files changed, 4 insertions, 10 deletions
diff --git a/meta/recipes-core/systemd/systemd_250.4.bb b/meta/recipes-core/systemd/systemd_250.4.bb index 2b346113b5..15e2185dff 100644 --- a/meta/recipes-core/systemd/systemd_250.4.bb +++ b/meta/recipes-core/systemd/systemd_250.4.bb | |||
| @@ -337,10 +337,6 @@ do_install() { | |||
| 337 | # create link for existing udev rules | 337 | # create link for existing udev rules |
| 338 | ln -s ${base_bindir}/udevadm ${D}${base_sbindir}/udevadm | 338 | ln -s ${base_bindir}/udevadm ${D}${base_sbindir}/udevadm |
| 339 | 339 | ||
| 340 | # duplicate udevadm for postinst script | ||
| 341 | install -d ${D}${libexecdir} | ||
| 342 | ln ${D}${base_bindir}/udevadm ${D}${libexecdir}/${MLPREFIX}udevadm | ||
| 343 | |||
| 344 | # install default policy for presets | 340 | # install default policy for presets |
| 345 | # https://www.freedesktop.org/wiki/Software/systemd/Preset/#howto | 341 | # https://www.freedesktop.org/wiki/Software/systemd/Preset/#howto |
| 346 | install -Dm 0644 ${WORKDIR}/99-default.preset ${D}${systemd_unitdir}/system-preset/99-default.preset | 342 | install -Dm 0644 ${WORKDIR}/99-default.preset ${D}${systemd_unitdir}/system-preset/99-default.preset |
| @@ -718,7 +714,6 @@ FILES:udev += "${base_sbindir}/udevd \ | |||
| 718 | ${base_bindir}/systemd-hwdb \ | 714 | ${base_bindir}/systemd-hwdb \ |
| 719 | ${base_bindir}/udevadm \ | 715 | ${base_bindir}/udevadm \ |
| 720 | ${base_sbindir}/udevadm \ | 716 | ${base_sbindir}/udevadm \ |
| 721 | ${libexecdir}/${MLPREFIX}udevadm \ | ||
| 722 | ${datadir}/bash-completion/completions/udevadm \ | 717 | ${datadir}/bash-completion/completions/udevadm \ |
| 723 | ${systemd_system_unitdir}/systemd-hwdb-update.service \ | 718 | ${systemd_system_unitdir}/systemd-hwdb-update.service \ |
| 724 | " | 719 | " |
diff --git a/meta/recipes-core/udev/eudev_3.2.10.bb b/meta/recipes-core/udev/eudev_3.2.10.bb index dec16be046..ccc66ae131 100644 --- a/meta/recipes-core/udev/eudev_3.2.10.bb +++ b/meta/recipes-core/udev/eudev_3.2.10.bb | |||
| @@ -51,10 +51,6 @@ do_install:append() { | |||
| 51 | 51 | ||
| 52 | # hid2hci has moved to bluez4. removed in udev as of version 169 | 52 | # hid2hci has moved to bluez4. removed in udev as of version 169 |
| 53 | rm -f ${D}${base_libdir}/udev/hid2hci | 53 | rm -f ${D}${base_libdir}/udev/hid2hci |
| 54 | |||
| 55 | # duplicate udevadm for postinst script | ||
| 56 | install -d ${D}${libexecdir} | ||
| 57 | ln ${D}${bindir}/udevadm ${D}${libexecdir}/${MLPREFIX}udevadm | ||
| 58 | } | 54 | } |
| 59 | 55 | ||
| 60 | do_install:prepend:class-target () { | 56 | do_install:prepend:class-target () { |
diff --git a/scripts/postinst-intercepts/update_udev_hwdb b/scripts/postinst-intercepts/update_udev_hwdb index 8076b8ae6f..8b3f5de791 100644 --- a/scripts/postinst-intercepts/update_udev_hwdb +++ b/scripts/postinst-intercepts/update_udev_hwdb | |||
| @@ -9,14 +9,17 @@ case "${PREFERRED_PROVIDER_udev}" in | |||
| 9 | systemd) | 9 | systemd) |
| 10 | UDEV_EXTRA_ARGS="--usr" | 10 | UDEV_EXTRA_ARGS="--usr" |
| 11 | UDEVLIBDIR="${rootlibexecdir}" | 11 | UDEVLIBDIR="${rootlibexecdir}" |
| 12 | UDEVADM="${base_bindir}/udevadm" | ||
| 12 | ;; | 13 | ;; |
| 13 | 14 | ||
| 14 | *) | 15 | *) |
| 15 | UDEV_EXTRA_ARGS="" | 16 | UDEV_EXTRA_ARGS="" |
| 16 | UDEVLIBDIR="${sysconfdir}" | 17 | UDEVLIBDIR="${sysconfdir}" |
| 18 | UDEVADM="${bindir}/udevadm" | ||
| 17 | ;; | 19 | ;; |
| 18 | esac | 20 | esac |
| 19 | 21 | ||
| 20 | rm -f $D${UDEVLIBDIR}/udev/hwdb.bin | 22 | rm -f $D${UDEVLIBDIR}/udev/hwdb.bin |
| 21 | PSEUDO_UNLOAD=1 ${binprefix}qemuwrapper -L $D $D${libexecdir}/${binprefix}udevadm hwdb --update --root $D ${UDEV_EXTRA_ARGS} | 23 | PSEUDO_UNLOAD=1 ${binprefix}qemuwrapper -L $D $D${UDEVADM} hwdb --update --root $D ${UDEV_EXTRA_ARGS} || |
| 24 | PSEUDO_UNLOAD=1 qemuwrapper -L $D $D${UDEVADM} hwdb --update --root $D ${UDEV_EXTRA_ARGS} | ||
| 22 | chown root:root $D${UDEVLIBDIR}/udev/hwdb.bin | 25 | chown root:root $D${UDEVLIBDIR}/udev/hwdb.bin |
