]> granicus.if.org Git - zfs/commitdiff
contrib/initramfs: switch to automake
authorLOLi <loli10K@users.noreply.github.com>
Tue, 7 Nov 2017 22:53:57 +0000 (23:53 +0100)
committerTony Hutter <hutter2@llnl.gov>
Fri, 22 Feb 2019 17:47:33 +0000 (09:47 -0800)
Use automake to build initramfs scripts and hooks.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: loli10K <ezomori.nozomu@gmail.com>
Closes #6761

configure.ac
contrib/initramfs/Makefile.am
contrib/initramfs/hooks/.gitignore [new file with mode: 0644]
contrib/initramfs/hooks/Makefile.am [new file with mode: 0644]
contrib/initramfs/hooks/zfs.in [moved from contrib/initramfs/hooks/zfs with 80% similarity]
contrib/initramfs/scripts/.gitignore [new file with mode: 0644]
contrib/initramfs/scripts/Makefile.am [new file with mode: 0644]
contrib/initramfs/scripts/local-top/Makefile.am [new file with mode: 0644]
contrib/initramfs/scripts/zfs.in [moved from contrib/initramfs/scripts/zfs with 99% similarity]

index 42cfc1a3d7a167051364e2973a9a36a3970e8c7e..4a7830e1092857fadc1b0e4d696b0b39cd6c9729 100644 (file)
@@ -122,6 +122,9 @@ AC_CONFIG_FILES([
        contrib/dracut/02zfsexpandknowledge/Makefile
        contrib/dracut/90zfs/Makefile
        contrib/initramfs/Makefile
+       contrib/initramfs/hooks/Makefile
+       contrib/initramfs/scripts/Makefile
+       contrib/initramfs/scripts/local-top/Makefile
        module/Makefile
        module/avl/Makefile
        module/nvpair/Makefile
index b2294082180e52c9c326b301b13fff515c285b3e..87ec7a86f5acbd34e3dc2e9e0de4f3224c42049d 100644 (file)
@@ -3,12 +3,11 @@ initrddir = $(datarootdir)/initramfs-tools
 initrd_SCRIPTS = \
        conf.d/zfs conf-hooks.d/zfs hooks/zfs scripts/zfs scripts/local-top/zfs
 
+SUBDIRS = hooks scripts
+
 EXTRA_DIST = \
        $(top_srcdir)/contrib/initramfs/conf.d/zfs \
        $(top_srcdir)/contrib/initramfs/conf-hooks.d/zfs \
-       $(top_srcdir)/contrib/initramfs/hooks/zfs \
-       $(top_srcdir)/contrib/initramfs/scripts/zfs \
-       $(top_srcdir)/contrib/initramfs/scripts/local-top/zfs \
        $(top_srcdir)/contrib/initramfs/README.initramfs.markdown
 
 install-initrdSCRIPTS: $(EXTRA_DIST)
diff --git a/contrib/initramfs/hooks/.gitignore b/contrib/initramfs/hooks/.gitignore
new file mode 100644 (file)
index 0000000..73304bc
--- /dev/null
@@ -0,0 +1 @@
+zfs
diff --git a/contrib/initramfs/hooks/Makefile.am b/contrib/initramfs/hooks/Makefile.am
new file mode 100644 (file)
index 0000000..0c42643
--- /dev/null
@@ -0,0 +1,20 @@
+hooksdir = $(datarootdir)/initramfs-tools/hooks
+
+hooks_SCRIPTS = \
+       zfs
+
+EXTRA_DIST = \
+       $(top_srcdir)/contrib/initramfs/hooks/zfs.in
+
+$(hooks_SCRIPTS):%:%.in
+       -$(SED) -e 's,@sbindir\@,$(sbindir),g' \
+               -e 's,@sysconfdir\@,$(sysconfdir),g' \
+               -e 's,@udevdir\@,$(udevdir),g' \
+               -e 's,@udevruledir\@,$(udevruledir),g' \
+               $< >'$@'
+
+clean-local::
+       -$(RM) $(hooks_SCRIPTS)
+
+distclean-local::
+       -$(RM) $(hooks_SCRIPTS)
similarity index 80%
rename from contrib/initramfs/hooks/zfs
rename to contrib/initramfs/hooks/zfs.in
index 31db67c25bbab769668d18f62cf390e1ebcf7437..b34cad1e8520348a271cd8e8ce9f70d9068570a4 100755 (executable)
@@ -8,11 +8,15 @@ PREREQ="zdev"
 
 # These prerequisites are provided by the zfsutils package. The zdb utility is
 # not strictly required, but it can be useful at the initramfs recovery prompt.
-COPY_EXEC_LIST="/sbin/zdb /sbin/zpool /sbin/zfs /sbin/mount.zfs"
-COPY_EXEC_LIST="$COPY_EXEC_LIST /usr/bin/dirname /lib/udev/vdev_id"
-COPY_FILE_LIST="/etc/hostid /etc/zfs/zpool.cache /etc/default/zfs"
-COPY_FILE_LIST="$COPY_FILE_LIST /etc/zfs/zfs-functions /etc/zfs/vdev_id.conf"
-COPY_FILE_LIST="$COPY_FILE_LIST /lib/udev/rules.d/69-vdev.rules"
+# The mount helper mount.zfs must be installed in /sbin because this path is
+# hardcoded in the mount(8) for security reasons.
+COPY_EXEC_LIST="@sbindir@/zdb @sbindir@/zpool @sbindir@/zfs /sbin/mount.zfs"
+COPY_EXEC_LIST="$COPY_EXEC_LIST @udevdir@/vdev_id"
+COPY_FILE_LIST="/etc/hostid @sysconfdir@/zfs/zpool.cache"
+COPY_FILE_LIST="$COPY_FILE_LIST @sysconfdir@/default/zfs"
+COPY_FILE_LIST="$COPY_FILE_LIST @sysconfdir@/zfs/zfs-functions"
+COPY_FILE_LIST="$COPY_FILE_LIST @sysconfdir@/zfs/vdev_id.conf"
+COPY_FILE_LIST="$COPY_FILE_LIST @udevruledir@/69-vdev.rules"
 
 # These prerequisites are provided by the base system.
 COPY_EXEC_LIST="$COPY_EXEC_LIST /usr/bin/dirname /bin/hostname /sbin/blkid"
@@ -83,7 +87,7 @@ else
 fi
 
 for ii in zfs zfs.conf spl spl.conf
-do  
+do
        if [ -f "/etc/modprobe.d/$ii" ]; then
                if [ ! -d "$DESTDIR/etc/modprobe.d" ]; then
                        mkdir -p $DESTDIR/etc/modprobe.d
diff --git a/contrib/initramfs/scripts/.gitignore b/contrib/initramfs/scripts/.gitignore
new file mode 100644 (file)
index 0000000..73304bc
--- /dev/null
@@ -0,0 +1 @@
+zfs
diff --git a/contrib/initramfs/scripts/Makefile.am b/contrib/initramfs/scripts/Makefile.am
new file mode 100644 (file)
index 0000000..7b65429
--- /dev/null
@@ -0,0 +1,20 @@
+scriptsdir = $(datarootdir)/initramfs-tools/scripts
+
+scripts_SCRIPTS = \
+       zfs
+
+SUBDIRS = local-top
+
+EXTRA_DIST = \
+       $(top_srcdir)/contrib/initramfs/scripts/zfs.in
+
+$(scripts_SCRIPTS):%:%.in
+       -$(SED) -e 's,@sbindir\@,$(sbindir),g' \
+               -e 's,@sysconfdir\@,$(sysconfdir),g' \
+               $< >'$@'
+
+clean-local::
+       -$(RM) $(scripts_SCRIPTS)
+
+distclean-local::
+       -$(RM) $(scripts_SCRIPTS)
diff --git a/contrib/initramfs/scripts/local-top/Makefile.am b/contrib/initramfs/scripts/local-top/Makefile.am
new file mode 100644 (file)
index 0000000..88aa2d4
--- /dev/null
@@ -0,0 +1,3 @@
+localtopdir = $(datarootdir)/initramfs-tools/scripts/local-top
+
+EXTRA_DIST = zfs
similarity index 99%
rename from contrib/initramfs/scripts/zfs
rename to contrib/initramfs/scripts/zfs.in
index dacd71d21044982cbb6d36b6b2426fc8597aefa0..30eb0eeac38d64d0eb00bcfb11aafc472e98903d 100644 (file)
@@ -11,9 +11,9 @@
 
 # Paths to what we need - in the initrd, these paths are hardcoded,
 # so override the defines in zfs-functions.
-ZFS="/sbin/zfs"
-ZPOOL="/sbin/zpool"
-ZPOOL_CACHE="/etc/zfs/zpool.cache"
+ZFS="@sbindir@/zfs"
+ZPOOL="@sbindir@/zpool"
+ZPOOL_CACHE="@sysconfdir@/zfs/zpool.cache"
 export ZFS ZPOOL ZPOOL_CACHE
 
 # This runs any scripts that should run before we start importing
@@ -616,7 +616,7 @@ setup_snapshot_booting()
        # Separate the full snapshot ('$snap') into it's filesystem and
        # snapshot names. Would have been nice with a split() function..
        rootfs="${snap%%@*}"
-       snapname="${snap##*@}"  
+       snapname="${snap##*@}"
        ZFS_BOOTFS="${rootfs}_${snapname}"
 
        if ! grep -qiE '(^|[^\\](\\\\)* )(rollback)=(on|yes|1)( |$)' /proc/cmdline