From: Darik Horn Date: Fri, 17 Jun 2011 15:02:36 +0000 (-0500) Subject: Fix autoconf variable substitution in udev rules. X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=commitdiff_plain;ds=sidebyside;h=b9f27ee76582fa7826ca930889f8c281430c6b7a;p=zfs.git Fix autoconf variable substitution in udev rules. Change the variable substitution in the udev rule templates according to the method described in the Autoconf manual; Chapter 4.7.2: Installation Directory Variables. The udev rules are improperly generated if the bindir parameter overrides the prefix parameter during configure. For example: # ./configure --prefix=/usr/local --bindir=/opt/zfs/bin The udev helper is installed as /opt/zfs/bin/zpool_id, but the corresponding udev rule has a different path: # /usr/local/etc/udev/rules.d/60-zpool.rules ENV{DEVTYPE}=="disk", IMPORT{program}="/usr/local/bin/zpool_id -d %p" The @bindir@ variable expands to "${exec_prefix}/bin", so it cannot be used instead of @prefix@ directly. This also applies to the zvol_id helper. Closes #283. --- diff --git a/configure.ac b/configure.ac index b578341..a188fa7 100644 --- a/configure.ac +++ b/configure.ac @@ -60,8 +60,6 @@ AC_CONFIG_FILES([ etc/Makefile etc/udev/Makefile etc/udev/rules.d/Makefile - etc/udev/rules.d/60-zpool.rules - etc/udev/rules.d/60-zvol.rules etc/init.d/Makefile etc/zfs/Makefile man/Makefile diff --git a/etc/udev/rules.d/60-zpool.rules.in b/etc/udev/rules.d/60-zpool.rules.in index fc1a1d1..6e5a727 100644 --- a/etc/udev/rules.d/60-zpool.rules.in +++ b/etc/udev/rules.d/60-zpool.rules.in @@ -2,7 +2,7 @@ # /etc/udev/rules.d/60-zpool.rules # -ENV{DEVTYPE}=="disk", IMPORT{program}="@prefix@/bin/zpool_id -d %p" +ENV{DEVTYPE}=="disk", IMPORT{program}="@bindir@/zpool_id -d %p" KERNEL=="*[!0-9]", ENV{SUBSYSTEM}=="block", ENV{ID_ZPOOL}=="?*", SYMLINK+="$env{ID_ZPOOL_PATH}" KERNEL=="*[0-9]", ENV{SUBSYSTEM}=="block", ENV{ID_ZPOOL}=="?*", SYMLINK+="$env{ID_ZPOOL_PATH}-part%n" diff --git a/etc/udev/rules.d/60-zvol.rules.in b/etc/udev/rules.d/60-zvol.rules.in index 06f5f93..e71e5be 100644 --- a/etc/udev/rules.d/60-zvol.rules.in +++ b/etc/udev/rules.d/60-zvol.rules.in @@ -3,4 +3,4 @@ # persistent disk links: /dev/zvol/dataset_name # also creates compatibilty symlink of /dev/dataset_name -KERNEL=="zd*" SUBSYSTEM=="block" ACTION=="add|change" PROGRAM="@prefix@/bin/zvol_id $tempnode" SYMLINK+="zvol/%c %c" +KERNEL=="zd*" SUBSYSTEM=="block" ACTION=="add|change" PROGRAM="@bindir@/zvol_id $tempnode" SYMLINK+="zvol/%c %c" diff --git a/etc/udev/rules.d/Makefile.am b/etc/udev/rules.d/Makefile.am index 1a7a1e3..9929c45 100644 --- a/etc/udev/rules.d/Makefile.am +++ b/etc/udev/rules.d/Makefile.am @@ -4,7 +4,12 @@ pkgsysconf_DATA = \ 60-zpool.rules \ 60-zvol.rules -EXTRA_DIST = 60-zpool.rules.in 60-zvol.rules.in +EXTRA_DIST = \ + 60-zpool.rules.in \ + 60-zvol.rules.in + +$(pkgsysconf_DATA): + -$(SED) -e 's,@bindir\@,$(bindir),g' '$@.in' >'$@' distclean-local:: -$(RM) $(pkgsysconf_DATA)