Skip to content

Commit

Permalink
Fix zfs-functions packaging bug
Browse files Browse the repository at this point in the history
This fixes a bug where the generated zfs-functions was being included
along with original zfs-functions.in in the make dist tarball.  This
caused an unfortunate series of events during build/packaging that
resulted in the RPM-installed /etc/zfs/zfs-functions listing the
paths as:

ZFS="/usr/local/sbin/zfs"
ZED="/usr/local/sbin/zed"
ZPOOL="/usr/local/sbin/zpool"

When they should have been:

ZFS="/sbin/zfs"
ZED="/sbin/zed"
ZPOOL="/sbin/zpool"

This affects init.d (non-systemd) distros like CentOS 6.

/etc/default/zfs and /etc/zfs/zfs-functions are also used by the
initramfs, so they need to be built even when init.d support is not.
They have been moved to the (new) etc/default and (existing) etc/zfs
source directories, respectively.

Fixes: openzfs#9443

Co-authored-by: Tony Hutter <[email protected]>
Signed-off-by: Richard Laager <[email protected]>
  • Loading branch information
2 people authored and behlendorf committed Mar 10, 2020
1 parent 01243e7 commit 5ecbb29
Show file tree
Hide file tree
Showing 12 changed files with 48 additions and 27 deletions.
1 change: 1 addition & 0 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ AC_CONFIG_FILES([
contrib/pyzfs/setup.py
contrib/zcp/Makefile
etc/Makefile
etc/default/Makefile
etc/init.d/Makefile
etc/modules-load.d/Makefile
etc/sudoers.d/Makefile
Expand Down
11 changes: 0 additions & 11 deletions contrib/initramfs/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,10 @@ initrd_SCRIPTS = \
SUBDIRS = hooks scripts

EXTRA_DIST = \
$(top_srcdir)/etc/init.d/zfs \
$(top_srcdir)/etc/init.d/zfs-functions \
$(top_srcdir)/contrib/initramfs/conf.d/zfs \
$(top_srcdir)/contrib/initramfs/conf-hooks.d/zfs \
$(top_srcdir)/contrib/initramfs/README.initramfs.markdown

$(top_srcdir)/etc/init.d/zfs $(top_srcdir)/etc/init.d/zfs-functions:
$(MAKE) -C $(top_srcdir)/etc/init.d zfs zfs-functions

install-initrdSCRIPTS: $(EXTRA_DIST)
for d in conf.d conf-hooks.d scripts/local-top; do \
$(MKDIR_P) $(DESTDIR)$(initrddir)/$$d; \
Expand All @@ -26,9 +21,3 @@ install-initrdSCRIPTS: $(EXTRA_DIST)
cp $(top_builddir)/contrib/initramfs/$$d/zfs \
$(DESTDIR)$(initrddir)/$$d/; \
done
$(MKDIR_P) $(DESTDIR)$(DEFAULT_INITCONF_DIR); \
cp $(top_builddir)/etc/init.d/zfs \
$(DESTDIR)$(DEFAULT_INITCONF_DIR)/; \
$(MKDIR_P) $(DESTDIR)$(sysconfdir)/zfs; \
cp $(top_builddir)/etc/init.d/zfs-functions \
$(DESTDIR)$(sysconfdir)/zfs/
4 changes: 2 additions & 2 deletions etc/Makefile.am
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
SUBDIRS = zfs sudoers.d $(ZFS_INIT_SYSTEMD) $(ZFS_INIT_SYSV) $(ZFS_MODULE_LOAD)
DIST_SUBDIRS = init.d zfs systemd modules-load.d sudoers.d
SUBDIRS = default zfs sudoers.d $(ZFS_INIT_SYSTEMD) $(ZFS_INIT_SYSV) $(ZFS_MODULE_LOAD)
DIST_SUBDIRS = default init.d zfs systemd modules-load.d sudoers.d
1 change: 1 addition & 0 deletions etc/default/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
zfs
12 changes: 12 additions & 0 deletions etc/default/Makefile.am
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
initconfdir = $(DEFAULT_INITCONF_DIR)
initconf_SCRIPTS = zfs

EXTRA_DIST = \
$(top_srcdir)/etc/default/zfs.in

$(initconf_SCRIPTS):%:%.in Makefile
$(SED) \
-e 's,@sysconfdir\@,$(sysconfdir),g' \
$< >'$@'

CLEANFILES = $(initconf_SCRIPTS)
File renamed without changes.
1 change: 0 additions & 1 deletion etc/init.d/.gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
zfs-functions
zfs-import
zfs-mount
zfs-share
Expand Down
16 changes: 5 additions & 11 deletions etc/init.d/Makefile.am
Original file line number Diff line number Diff line change
@@ -1,21 +1,15 @@
initdir = $(DEFAULT_INIT_DIR)
init_SCRIPTS = zfs-import zfs-mount zfs-share zfs-zed

initcommondir = $(sysconfdir)/zfs
initcommon_SCRIPTS = zfs-functions

initconfdir = $(DEFAULT_INITCONF_DIR)
initconf_SCRIPTS = zfs

EXTRA_DIST = \
$(top_srcdir)/etc/init.d/zfs-functions.in \
$(top_srcdir)/etc/init.d/zfs-share.in \
$(top_srcdir)/etc/init.d/zfs-import.in \
$(top_srcdir)/etc/init.d/zfs-mount.in \
$(top_srcdir)/etc/init.d/zfs-zed.in \
$(top_srcdir)/etc/init.d/zfs.in
$(top_srcdir)/etc/init.d/zfs-zed.in

$(init_SCRIPTS) $(initconf_SCRIPTS) $(initcommon_SCRIPTS):%:%.in Makefile
$(init_SCRIPTS):%:%.in Makefile
-(if [ -e /etc/debian_version ]; then \
NFS_SRV=nfs-kernel-server; \
else \
Expand All @@ -26,7 +20,8 @@ $(init_SCRIPTS) $(initconf_SCRIPTS) $(initcommon_SCRIPTS):%:%.in Makefile
else \
SHELL=/bin/sh; \
fi; \
$(SED) -e 's,@bindir\@,$(bindir),g' \
$(SED) \
-e 's,@bindir\@,$(bindir),g' \
-e 's,@sbindir\@,$(sbindir),g' \
-e 's,@udevdir\@,$(udevdir),g' \
-e 's,@udevruledir\@,$(udevruledir),g' \
Expand All @@ -37,7 +32,6 @@ $(init_SCRIPTS) $(initconf_SCRIPTS) $(initcommon_SCRIPTS):%:%.in Makefile
-e "s,@SHELL\@,$$SHELL,g" \
-e "s,@NFS_SRV\@,$$NFS_SRV,g" \
$< >'$@'; \
[ '$@' = 'zfs-functions' -o '$@' = 'zfs' ] || \
chmod +x '$@')

CLEANFILES = $(init_SCRIPTS) $(initcommon_SCRIPTS) $(initconf_SCRIPTS)
CLEANFILES = $(init_SCRIPTS)
2 changes: 1 addition & 1 deletion etc/init.d/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ SUPPORT

If you're making your own distribution and you want the scripts to
work on that, the biggest problem you'll (probably) have is the part
at the beginning of the "zfs-functions.in" file which sets up the
at the beginning of the "zfs-functions" file which sets up the
logging output.

INSTALLING INIT SCRIPT LINKS
Expand Down
1 change: 1 addition & 0 deletions etc/zfs/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
zfs-functions
26 changes: 25 additions & 1 deletion etc/zfs/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,29 @@ pkgsysconf_DATA = \
vdev_id.conf.sas_switch.example \
vdev_id.conf.multipath.example \
vdev_id.conf.scsi.example
pkgsysconf_SCRIPTS = \
zfs-functions

EXTRA_DIST = $(pkgsysconf_DATA)
EXTRA_DIST = $(pkgsysconf_DATA) \
zfs-functions.in

$(pkgsysconf_SCRIPTS):%:%.in Makefile
-(if [ -e /etc/debian_version ]; then \
NFS_SRV=nfs-kernel-server; \
else \
NFS_SRV=nfs; \
fi; \
if [ -e /sbin/openrc-run ]; then \
SHELL=/sbin/openrc-run; \
else \
SHELL=/bin/sh; \
fi; \
$(SED) \
-e 's,@sbindir\@,$(sbindir),g' \
-e 's,@sysconfdir\@,$(sysconfdir),g' \
-e 's,@initconfdir\@,$(initconfdir),g' \
$< >'$@'; \
[ '$@' = 'zfs-functions' ] || \
chmod +x '$@')

CLEANFILES = $(pkgsysconf_SCRIPTS)
File renamed without changes.

0 comments on commit 5ecbb29

Please sign in to comment.