From d6b737a31a8842cdc770b05e28503c81a691d10d Mon Sep 17 00:00:00 2001 From: Kai Kang Date: Thu, 18 Oct 2018 04:18:05 -0400 Subject: udev-hwdb: fix postinstall scripts failures when multilib enabled When multilib is enabled and both udev-hwdb and ${MLPREFIX}udev-hwdb are installed to image, it fails to run one of their postinstall scripts that they both call ${base_bindir}/udevadm with same user mode qemu. Duplicate udevadm and add postinst-intercept update_udev_hwdb to fix the failures. Signed-off-by: Kai Kang Signed-off-by: Richard Purdie --- meta/recipes-core/systemd/systemd_239.bb | 13 ++++++------- meta/recipes-core/udev/eudev_3.2.5.bb | 11 +++++------ scripts/postinst-intercepts/update_udev_hwdb | 6 ++++++ 3 files changed, 17 insertions(+), 13 deletions(-) create mode 100644 scripts/postinst-intercepts/update_udev_hwdb diff --git a/meta/recipes-core/systemd/systemd_239.bb b/meta/recipes-core/systemd/systemd_239.bb index bc16407e09..acdce5cee7 100644 --- a/meta/recipes-core/systemd/systemd_239.bb +++ b/meta/recipes-core/systemd/systemd_239.bb @@ -282,6 +282,10 @@ do_install() { rm -f ${D}${sysconfdir}/systemd/logind.conf rm -f ${D}${sysconfdir}/systemd/system.conf rm -f ${D}${sysconfdir}/systemd/user.conf + + # duplicate udevadm for postinst script + install -d ${D}${libexecdir} + ln ${D}${base_bindir}/udevadm ${D}${libexecdir}/${MLPREFIX}udevadm } @@ -532,6 +536,7 @@ FILES_udev += "${base_sbindir}/udevd \ ${systemd_unitdir}/system/*udev* \ ${systemd_unitdir}/system/*.wants/*udev* \ ${base_bindir}/udevadm \ + ${libexecdir}/${MLPREFIX}udevadm \ ${datadir}/bash-completion/completions/udevadm \ " @@ -570,13 +575,7 @@ pkg_prerm_${PN} () { PACKAGE_WRITE_DEPS += "qemu-native" pkg_postinst_udev-hwdb () { if test -n "$D"; then - if ${@bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', 'true','false', d)}; then - ${@qemu_run_binary(d, '$D', '${base_bindir}/udevadm')} hwdb --update \ - --root $D - chown root:root $D${sysconfdir}/udev/hwdb.bin - else - $INTERCEPT_DIR/postinst_intercept delay_to_first_boot ${PKG} mlprefix=${MLPREFIX} - fi + $INTERCEPT_DIR/postinst_intercept update_udev_hwdb ${PKG} mlprefix=${MLPREFIX} binprefix=${MLPREFIX} else udevadm hwdb --update fi diff --git a/meta/recipes-core/udev/eudev_3.2.5.bb b/meta/recipes-core/udev/eudev_3.2.5.bb index efd62c6495..592dd8f22a 100644 --- a/meta/recipes-core/udev/eudev_3.2.5.bb +++ b/meta/recipes-core/udev/eudev_3.2.5.bb @@ -50,6 +50,10 @@ do_install_append() { # hid2hci has moved to bluez4. removed in udev as of version 169 rm -f ${D}${base_libdir}/udev/hid2hci + + # duplicate udevadm for postinst script + install -d ${D}${libexecdir} + ln ${D}${bindir}/udevadm ${D}${libexecdir}/${MLPREFIX}udevadm } do_install_prepend_class-target () { @@ -81,12 +85,7 @@ RPROVIDES_eudev-hwdb += "udev-hwdb" PACKAGE_WRITE_DEPS += "qemu-native" pkg_postinst_eudev-hwdb () { if test -n "$D"; then - if ${@bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', 'true','false', d)}; then - ${@qemu_run_binary(d, '$D', '${bindir}/udevadm')} hwdb --update --root $D - chown root:root $D${sysconfdir}/udev/hwdb.bin - else - $INTERCEPT_DIR/postinst_intercept delay_to_first_boot ${PKG} mlprefix=${MLPREFIX} - fi + $INTERCEPT_DIR/postinst_intercept update_udev_hwdb ${PKG} mlprefix=${MLPREFIX} binprefix=${MLPREFIX} else udevadm hwdb --update fi diff --git a/scripts/postinst-intercepts/update_udev_hwdb b/scripts/postinst-intercepts/update_udev_hwdb new file mode 100644 index 0000000000..b5cce0a09d --- /dev/null +++ b/scripts/postinst-intercepts/update_udev_hwdb @@ -0,0 +1,6 @@ +#!/bin/sh + +set -e + +PSEUDO_UNLOAD=1 ${binprefix}qemuwrapper -L $D $D${libexecdir}/${binprefix}udevadm hwdb --update --root $D +chown root:root $D${sysconfdir}/udev/hwdb.bin -- cgit 1.2.3-korg