[OE-core] [PATCH] alsa-utils: Fix error when removing unwanted udev rules

Peter Kjellerstedt peter.kjellerstedt at axis.com
Wed May 2 08:39:27 UTC 2018


> -----Original Message-----
> From: openembedded-core-bounces at lists.openembedded.org
> [mailto:openembedded-core-bounces at lists.openembedded.org] On Behalf Of
> Mike Crowe
> Sent: den 1 maj 2018 13:37
> To: openembedded-core at lists.openembedded.org
> Cc: Mike Crowe <mac at mcrowe.com>; Peter Kjellerstedt
> <peter.kjellerstedt at axis.com>
> Subject: [OE-core] [PATCH] alsa-utils: Fix error when removing unwanted
> udev rules
> 
> If alsa-utils configure is not passed a --with-udev-rules-dir option then
> it defaults to using /lib/udev/rules.d. This meant that the hard-coded use
> of ${D}/lib in do_install in 262e69c9c7acf0beb7bb6b96299e3c993c906434
> worked correctly to remove the unwanted rules.
> 
> Subsequently, 0a4372705a030ca54ed420cdfec33d46ab93499c changed do_install
> to use ${nonarch_base_libdir}, claiming to fix this in the usrmerge case.
> 
> This means that if udev is not present in PACKAGECONFIG and usrmerge is
> present in DISTRO_FEATURES then the alsa-utils build system will install
> the rules in ${D}/lib/udev/rules.d but do_install will attempt to remove
> ${D}/usr/lib, resulting in something like:
> 
>  rmdir: failed to remove '.../tmp-glibc/work/i586-oe-linux/alsa-utils/1.1.5-r0/image/usr/lib': No such file or directory
> 
> To fix this, let's just tell configure to install the rules in a specific
> known location when udev is disabled. This location can then easily be
> cleaned up in do_install.
> 
> Tested both with and without usrmerge in DISTRO_FEATURES.
> 
> Signed-off-by: Mike Crowe <mac at mcrowe.com>
> Cc: Phil Blundell <pb at pbcl.net>
> Cc: Peter Kjellerstedt <peter.kjellerstedt at axis.com>
> ---
>  meta/recipes-multimedia/alsa/alsa-utils_1.1.5.bb | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/meta/recipes-multimedia/alsa/alsa-utils_1.1.5.bb b/meta/recipes-multimedia/alsa/alsa-utils_1.1.5.bb
> index f2231f34f0..5561b4de3f 100644
> --- a/meta/recipes-multimedia/alsa/alsa-utils_1.1.5.bb
> +++ b/meta/recipes-multimedia/alsa/alsa-utils_1.1.5.bb
> @@ -16,7 +16,7 @@ PACKAGECONFIG ??= "udev"
>  # or no alsabat at all.
>  PACKAGECONFIG[bat] = "--enable-bat,--disable-bat,fftwf"
> 
> -PACKAGECONFIG[udev] = "--with-udev-rules-dir=`pkg-config --variable=udevdir udev`/rules.d,,udev"
> +PACKAGECONFIG[udev] = "--with-udev-rules-dir=`pkg-config --variable=udevdir udev`/rules.d,--with-udev-rules-dir=/unwanted/rules.d,udev"
>  PACKAGECONFIG[manpages] = "--enable-xmlto, --disable-xmlto, xmlto-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native"
> 
>  SRC_URI = "ftp://ftp.alsa-project.org/pub/utils/alsa-utils-${PV}.tar.bz2 \
> @@ -102,8 +102,8 @@ do_install() {
>  	rm -f ${D}${sbindir}/alsabat-test.sh
> 
>  	if ${@bb.utils.contains('PACKAGECONFIG', 'udev', 'false', 'true', d)}; then

I suggest that you remove the if-statement since the /unwanted directory 
shall always be removed if it exists so there is no need to test for it.

> -		# This is where alsa-utils will install its rules if we don't tell it anything else.
> -		rm -rf ${D}${nonarch_base_libdir}/udev
> -		rmdir --ignore-fail-on-non-empty ${D}${nonarch_base_libdir}
> +        	# If udev is disabled, we told configure to install the rules in /unwanted, so
> +        	# we can get rid of them now.
> +        	rm -rf ${D}/unwanted

Correct the indentation (the rest of the function is indented using tabs).

>  	fi
>  }
> --
> 2.11.0

//Peter




More information about the Openembedded-core mailing list