[OE-core] [PATCH 1/1] udev-hwdb: fix postinstall scripts failures when multilib enabled
Kang Kai
Kai.Kang at windriver.com
Tue Oct 23 06:43:37 UTC 2018
On 2018/10/22 下午11:11, Kang Kai wrote:
> On 2018/10/18 下午11:28, kai.kang at windriver.com wrote:
>> From: Kai Kang <kai.kang at windriver.com>
>>
>> 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 <kai.kang at windriver.com>
>> ---
>> 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 7ed932141d..44e972ebce 100644
>> --- a/meta/recipes-core/systemd/systemd_239.bb
>> +++ b/meta/recipes-core/systemd/systemd_239.bb
>> @@ -284,6 +284,10 @@ do_install() {
>> chown polkitd:root ${D}${datadir}/polkit-1/rules.d
>> fi
>> fi
>> +
>> + # duplicate udevadm for postinst script
>> + install -d ${D}${libexecdir}
>> + ln ${D}${base_bindir}/udevadm ${D}${libexecdir}/${MLPREFIX}udevadm
>> }
>> @@ -542,6 +546,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 \
>> "
>> @@ -580,13 +585,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
>
> Hi Richard,
>
> It seems check for 'qemu-usermode' should not be removed. And it also
> need to check for other intercept scripts.
I just realize that intercept scripts have been handled well in
lib/oe/package_manager.py. So please ignore my last reply.
Sorry for the inconvenience.
--Kai
>
> So please ignore this patch and I'll send V2.
>
> Regards,
> Kai
>
>
>> - ${@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
>
>
--
Regards,
Neil | Kai Kang
More information about the Openembedded-core
mailing list