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

Kang Kai Kai.Kang at windriver.com
Mon Oct 22 15:11:34 UTC 2018


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.

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