[OE-core] [PATCH 1/1] udev-hwdb: fix postinstall scripts failures when multilib enabled

Kang Kai Kai.Kang at windriver.com
Fri Oct 26 07:52:22 UTC 2018


On 2018/10/24 上午5:17, richard.purdie at linuxfoundation.org wrote:
> On Tue, 2018-10-23 at 14:43 +0800, Kang Kai wrote:
>> 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.
> I'm now confused, which version of this patch do we need?

Sorry for missing your comment and made you inconvenient.

I received some inner comments that remove check 'qemu-usermode' may 
cause problem. I was convinced and it has been merged to master-next 
already,
so I sent a reply that 'will send V2'. But after build without machine 
feature  'qemu-usermode', it turns out that the guardian of 
'qemu-usermode' has been
handled well by package_manager.py. Then I sent the last reply and not 
V2 patch sent.

Regards,
Kai


>
> Cheers,
>
> Richard
>
>

-- 
Regards,
Neil | Kai Kang




More information about the Openembedded-core mailing list