From 5ecbb293c64ee88257e1e21fa155cf75fdd8cbd8 Mon Sep 17 00:00:00 2001 From: Richard Laager Date: Thu, 6 Feb 2020 09:28:20 -0800 Subject: [PATCH] Fix zfs-functions packaging bug 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: #9443 Co-authored-by: Tony Hutter Signed-off-by: Richard Laager --- configure.ac | 1 + contrib/initramfs/Makefile.am | 11 ----------- etc/Makefile.am | 4 ++-- etc/default/.gitignore | 1 + etc/default/Makefile.am | 12 ++++++++++++ etc/{init.d => default}/zfs.in | 0 etc/init.d/.gitignore | 1 - etc/init.d/Makefile.am | 16 +++++----------- etc/init.d/README.md | 2 +- etc/zfs/.gitignore | 1 + etc/zfs/Makefile.am | 26 +++++++++++++++++++++++++- etc/{init.d => zfs}/zfs-functions.in | 0 12 files changed, 48 insertions(+), 27 deletions(-) create mode 100644 etc/default/.gitignore create mode 100644 etc/default/Makefile.am rename etc/{init.d => default}/zfs.in (100%) create mode 100644 etc/zfs/.gitignore rename etc/{init.d => zfs}/zfs-functions.in (100%) diff --git a/configure.ac b/configure.ac index 1160897f31..eeb0a3843a 100644 --- a/configure.ac +++ b/configure.ac @@ -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 diff --git a/contrib/initramfs/Makefile.am b/contrib/initramfs/Makefile.am index 52bdeb2afe..849b1d83cc 100644 --- a/contrib/initramfs/Makefile.am +++ b/contrib/initramfs/Makefile.am @@ -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; \ @@ -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/ diff --git a/etc/Makefile.am b/etc/Makefile.am index 28b955106e..67ef94a201 100644 --- a/etc/Makefile.am +++ b/etc/Makefile.am @@ -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 diff --git a/etc/default/.gitignore b/etc/default/.gitignore new file mode 100644 index 0000000000..73304bc2cd --- /dev/null +++ b/etc/default/.gitignore @@ -0,0 +1 @@ +zfs diff --git a/etc/default/Makefile.am b/etc/default/Makefile.am new file mode 100644 index 0000000000..f35abd8e51 --- /dev/null +++ b/etc/default/Makefile.am @@ -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) diff --git a/etc/init.d/zfs.in b/etc/default/zfs.in similarity index 100% rename from etc/init.d/zfs.in rename to etc/default/zfs.in diff --git a/etc/init.d/.gitignore b/etc/init.d/.gitignore index 3f16b08ecc..43a673d553 100644 --- a/etc/init.d/.gitignore +++ b/etc/init.d/.gitignore @@ -1,4 +1,3 @@ -zfs-functions zfs-import zfs-mount zfs-share diff --git a/etc/init.d/Makefile.am b/etc/init.d/Makefile.am index 953c31fd5e..19fa76a2ba 100644 --- a/etc/init.d/Makefile.am +++ b/etc/init.d/Makefile.am @@ -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 \ @@ -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' \ @@ -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) diff --git a/etc/init.d/README.md b/etc/init.d/README.md index 89edb1da31..ad7c053aac 100644 --- a/etc/init.d/README.md +++ b/etc/init.d/README.md @@ -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 diff --git a/etc/zfs/.gitignore b/etc/zfs/.gitignore new file mode 100644 index 0000000000..1b2d752deb --- /dev/null +++ b/etc/zfs/.gitignore @@ -0,0 +1 @@ +zfs-functions diff --git a/etc/zfs/Makefile.am b/etc/zfs/Makefile.am index 52f6634df6..81567a4fa0 100644 --- a/etc/zfs/Makefile.am +++ b/etc/zfs/Makefile.am @@ -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) diff --git a/etc/init.d/zfs-functions.in b/etc/zfs/zfs-functions.in similarity index 100% rename from etc/init.d/zfs-functions.in rename to etc/zfs/zfs-functions.in