[alsa-devel] udev rules prefix

Ivailo Monev xakepa10 at gmail.com
Thu Nov 14 14:24:49 CET 2013


On 11/14/13 09:42, Takashi Iwai wrote:
> At Thu, 14 Nov 2013 12:08:47 +0000,
> Ivailo Monev wrote:
>> On 11/14/13 02:48, David Henningsson wrote:
>>> On 11/13/2013 09:36 PM, Ivailo wrote:
>>>> Hello,
>>>>
>>>> the default prefix for alsa-utils is /usr however the udev rules directory
>>>> is /lib/udev/rules.d thus on setups with separate partition for /usr the
>>>> binaries, from /usr/bin and /usr/sbin, will likely not be available during
>>>> the boot process and the udev rule will fail to restore the state.
>>>>
>>>> I suggest that the udev rules directory follows the prefix or append /usr
>>>> to it to resolve this.
>>>>
>>>> Cheers!
>>> Hi,
>>>
>>> ALSA merely follows what udev dictates, so I think your
>>> question/suggestion is better redirected on the udev (now systemd)
>>> mailinglist. Or potentially that of your distro.
>>>
>> Actually, you are not following what udev dictates (unless I'm missing
>> something).
>> By default, systemd (and more importantly udev) will be installed with
>> /usr prefix
>> (which is wrong in it self because it blindly assumes that /usr has been
>> mounted
>> via initrd/initramfs where separate /usr partition is in use but let's
>> not talk about
>> this here).
>>
>>
>> On 11/14/13 06:45, Takashi Iwai wrote:
>>> At Wed, 13 Nov 2013 20:36:48 +0000,
>>> Ivailo wrote:
>>>> Hello,
>>>>
>>>> the default prefix for alsa-utils is /usr however the udev rules directory
>>>> is /lib/udev/rules.d thus on setups with separate partition for /usr the
>>>> binaries, from /usr/bin and /usr/sbin, will likely not be available during
>>>> the boot process and the udev rule will fail to restore the state.
>>> Not true.  /lib must be always present at boot even if /usr isn't
>>> mounted.  That's the reason why /lib/udev was chosen as default in the
>>> past.
>>>
>>>
>>> Takashi
>> You got me wrong, I know that /lib should be available on early boot
>> (unless it's a
>> symlink, like in Arch Linux) but the point is that since the alsa-utils
>> binaries are
>> installed in /usr so should be the udev rules otherwise during boot
>> without /usr
>> being mounted you will see error message about /usr/sbin/alsactl.
> Theoretically yes, but this has been rather less problems than
> creating a non-existing /usr/lib/udev in the past.  That's the very
> reason of hard-coded /lib/udev.  Changing the default behavior is
> often worse unless you really do it carefully with consideration of
> compatibility with old systems.
>
> So, if you want to change the default, don't hard code again.  Make
> configure to guess the right place.  A patch achieving it is welcome.
>
>
> Takashi
Ok, here is the patch:

 From 74faeceb26c4730d6150e726792f6eb1f257b03e Mon Sep 17 00:00:00 2001
From: Ivailo Monev <xakepa10 at gmail.com>
Date: Thu, 14 Nov 2013 13:13:43 +0000
Subject: [PATCH 1/1] detect udevdir via pkg-config

---
  configure.in | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/configure.in b/configure.in
index 3ae3209..74b891e 100644
--- a/configure.in
+++ b/configure.in
@@ -121,7 +121,7 @@ AM_CONDITIONAL(USE_XMLTO, test x"$xmlto" = xyes)
  AC_ARG_WITH(
          [udev-rules-dir],
          AS_HELP_STRING([--with-udev-rules-dir],[Directory where to 
install udev rules to (defaults to /lib/udev/rules.d)]),
-        [udevrulesdir=$withval], [udevrulesdir="/lib/udev/rules.d"])
+        [udevrulesdir=$withval], [udevrulesdir=$($PKG_CONFIG udev 
--variable=udevdir)"/rules.d"])
  AC_SUBST(udevrulesdir)

  dnl Checks for header files.
-- 
1.8.3.4

However, since udev must reside on root (/) in the first place
the alsa-utils rules will still be installed in /lib/udev/rules.d. So
this patch will improve the current rules placement but will
not solve the separate /usr issue I'm talking about. I know
that hard coding paths is not a good idea in general but the
way I see it it's the best option and this patch should not be
used. I'm providing it just in case you don't agree with me on
using /usr/lib/udev/rules.d as default rules placement directory.


More information about the Alsa-devel mailing list