[alsa-devel] udev rules prefix

Takashi Iwai tiwai at suse.de
Thu Nov 14 11:51:26 CET 2013


At Thu, 14 Nov 2013 13:24:49 +0000,
Ivailo Monev wrote:
> 
> 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)

This pkg-config option isn't always available.  Make sure to have a
proper fallback to /lib/udev/rules.d.  Also, update the help text,
too.


thanks,

Takashi


More information about the Alsa-devel mailing list