Skip to content

Commit

Permalink
Fix autoconf variable substitution in udev rules.
Browse files Browse the repository at this point in the history
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 openzfs#283.
  • Loading branch information
dajhorn authored and behlendorf committed Jun 17, 2011
1 parent e130330 commit b9f27ee
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 5 deletions.
2 changes: 0 additions & 2 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion etc/udev/rules.d/60-zpool.rules.in
Original file line number Diff line number Diff line change
Expand Up @@ -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"
2 changes: 1 addition & 1 deletion etc/udev/rules.d/60-zvol.rules.in
Original file line number Diff line number Diff line change
Expand Up @@ -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"
7 changes: 6 additions & 1 deletion etc/udev/rules.d/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -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' '[email protected]' >'$@'

distclean-local::
-$(RM) $(pkgsysconf_DATA)

0 comments on commit b9f27ee

Please sign in to comment.