[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