Skip to contentSkip to conversation

alsa-utils: Fix error when removing unwanted udev rules

PATCH Superseded Mike Crowe 3 participants 6 messages May 1, 2018 – May 2, 2018

lore
Share & tools
lore

Mike Crowe

author
#0 lore raw

PATCH 1/1 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.

Cc Phil Blundell <[email protected]>
Cc Peter Kjellerstedt <[email protected]>
---
 meta/recipes-multimedia/alsa/alsa-utils_1.1.5.bb | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
meta/recipes-multimedia/alsa/alsa-utils_1.1.5.bb +4 -4
index f2231f34f0..5561b4de3f 100644
@@ -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
-		# 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
 	fi
 }
Signature · 1 line
2.11.0
#1 lore raw
Quoted 19 lines · Mike Crowe

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.

Quoted 8 lines

Tested both with and without usrmerge in DISTRO_FEATURES.

Cc Phil Blundell <[email protected]>
Cc Peter Kjellerstedt <[email protected]>
---
 meta/recipes-multimedia/alsa/alsa-utils_1.1.5.bb | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

Looks good to me.

Signature · 4 lines
Tanu

https://liberapay.com/tanuk
https://www.patreon.com/tanuk
#2 lore raw
In reply to Mike Crowe
Quoted 53 lines

-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Mike Crowe
Sent: den 1 maj 2018 13:37
To: [email protected]
Cc: Mike Crowe <[email protected]>; Peter Kjellerstedt <[email protected]>
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.

Cc Phil Blundell <[email protected]>
Cc Peter Kjellerstedt <[email protected]>
---
 meta/recipes-multimedia/alsa/alsa-utils_1.1.5.bb | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
meta/recipes-multimedia/alsa/alsa-utils_1.1.5.bb +1 -1
index f2231f34f0..5561b4de3f 100644
@@ -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 \

meta/recipes-multimedia/alsa/alsa-utils_1.1.5.bb do_install() { · line 104

Quoted 3 lines
meta/recipes-multimedia/alsa/alsa-utils_1.1.5.bb +0 -0
@@ -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.

meta/recipes-multimedia/alsa/alsa-utils_1.1.5.bb do_install() { · line 107

Quoted 6 lines
meta/recipes-multimedia/alsa/alsa-utils_1.1.5.bb +3 -3
-		# 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).

Quoted 4 lines
meta/recipes-multimedia/alsa/alsa-utils_1.1.5.bb +0 -1
 	fi
 }
--

2.11.0

//Peter

author
#3 lore raw

PATCH v2 1/1 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 without doing any harm if udev is enabled.

Tested both with and without usrmerge in DISTRO_FEATURES and with and without udev in PACKAGECONFIG.

Cc Phil Blundell <[email protected]>
Cc Peter Kjellerstedt <[email protected]>
---
 meta/recipes-multimedia/alsa/alsa-utils_1.1.5.bb | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)
meta/recipes-multimedia/alsa/alsa-utils_1.1.5.bb +5 -6
index f2231f34f0..33215bf159 100644
@@ -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 \
@@ -101,9 +101,8 @@ do_install() {
 	rm ${D}${sbindir}/alsa-info.sh
 	rm -f ${D}${sbindir}/alsabat-test.sh
 
-	if ${@bb.utils.contains('PACKAGECONFIG', 'udev', 'false', 'true', d)}; then
-		# 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}
-	fi
+	# If udev is disabled, we told configure to install the rules
+	# in /unwanted, so we can remove them now. If udev is enabled,
+	# then /unwanted won't exist and this will have no effect.
+	rm -rf ${D}/unwanted
 }
Signature · 1 line
2.11.0
#4 lore raw
Quoted 65 lines

-----Original Message-----
From: Mike Crowe [mailto:[email protected]]
Sent: den 2 maj 2018 15:38
To: [email protected]
Cc: Mike Crowe <[email protected]>; Phil Blundell <[email protected]>; Peter Kjellerstedt <[email protected]>
Subject: [PATCHv2] 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 without doing any harm if udev is enabled.

Tested both with and without usrmerge in DISTRO_FEATURES and with and without udev in PACKAGECONFIG.

Cc Phil Blundell <[email protected]>
Cc Peter Kjellerstedt <[email protected]>
---
 meta/recipes-multimedia/alsa/alsa-utils_1.1.5.bb | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)
meta/recipes-multimedia/alsa/alsa-utils_1.1.5.bb +1 -1
index f2231f34f0..33215bf159 100644
@@ -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 \

meta/recipes-multimedia/alsa/alsa-utils_1.1.5.bb +4 -6
@@ -101,9 +101,8 @@ do_install() {
 	rm ${D}${sbindir}/alsa-info.sh
 	rm -f ${D}${sbindir}/alsabat-test.sh
 
-	if ${@bb.utils.contains('PACKAGECONFIG', 'udev', 'false', 'true', d)}; then
-		# 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}
-	fi
+	# If udev is disabled, we told configure to install the rules
+	# in /unwanted, so we can remove them now. If udev is enabled,
+	# then /unwanted won't exist and this will have no effect.
+	rm -rf ${D}/unwanted
 }
--
Quoted 1 line

2.11.0

//Peter

author
#5 lore raw
In reply to Peter Kjellerstedt
Quoted 4 lines · Peter Kjellerstedt
Quoted 1 line

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.

I had wondered about doing that myself, but had decided to make as few changes as possible.

Quoted 9 lines

meta/recipes-multimedia/alsa/alsa-utils_1.1.5.bb do_install() { · line 107

Quoted 6 lines
meta/recipes-multimedia/alsa/alsa-utils_1.1.5.bb +3 -3
-		# 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).

I'd spotted that, and had thought that I'd sorted it out. It turns out that I ended up making it even worse with a mixture of spaces and tabs. :(

Hopefully v2 is better.

Thanks.

Mike.