aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenda Xu <heroxbd@gmail.com>2024-04-08 23:52:24 +0000
committerGitHub <noreply@github.com>2024-04-08 23:52:24 +0000
commit162cc80b8144698b44b5b168dc1853341277de10 (patch)
treecc09cef77f61defb772642d3ddb9300ef3dee5a5
parentf07389d3ad48ba21480dedcd79b75fe0a31e27bc (diff)
downloadsrc-162cc80b8144698b44b5b168dc1853341277de10.tar.gz
src-162cc80b8144698b44b5b168dc1853341277de10.zip
etc/init.d: decide which variant to use at build time.
Let Debian use the sysv-rc variant of the script, even when OpenRC is installed. Unlike on Gentoo, OpenRC on Debian consumes both the sysv-rc scripts and OpenRC ones. ZFS initscripts on Debian should be the sysv-rc version to provide most compatibility and to integrate with the rest of initscripts for dependency tracking. Restrict the substitution in the Makefile to the dedicated list. This construct is inspired by Mo Zhou's detection of the execution shell and follows the strategy of Peter in 6ef28c526ba7. As of 2024, the initscripts are mostly relevant on Debian, Gentoo and their derivatives. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Benda Xu <orv@debian.org> Issue #8063 Issue #8204 Issue #8359 Closes #15977
-rw-r--r--config/Substfiles.am1
-rw-r--r--config/zfs-build.m48
-rw-r--r--etc/init.d/README.md6
-rwxr-xr-xetc/init.d/zfs-import.in2
-rwxr-xr-xetc/init.d/zfs-load-key.in2
-rwxr-xr-xetc/init.d/zfs-mount.in2
-rwxr-xr-xetc/init.d/zfs-share.in3
-rwxr-xr-xetc/init.d/zfs-zed.in3
8 files changed, 14 insertions, 13 deletions
diff --git a/config/Substfiles.am b/config/Substfiles.am
index 38e870b2f501..18422bf64301 100644
--- a/config/Substfiles.am
+++ b/config/Substfiles.am
@@ -18,6 +18,7 @@ subst_sed_cmd = \
-e 's|@ASAN_ENABLED[@]|$(ASAN_ENABLED)|g' \
-e 's|@DEFAULT_INIT_NFS_SERVER[@]|$(DEFAULT_INIT_NFS_SERVER)|g' \
-e 's|@DEFAULT_INIT_SHELL[@]|$(DEFAULT_INIT_SHELL)|g' \
+ -e 's|@IS_SYSV_RC[@]|$(IS_SYSV_RC)|g' \
-e 's|@LIBFETCH_DYNAMIC[@]|$(LIBFETCH_DYNAMIC)|g' \
-e 's|@LIBFETCH_SONAME[@]|$(LIBFETCH_SONAME)|g' \
-e 's|@PYTHON[@]|$(PYTHON)|g' \
diff --git a/config/zfs-build.m4 b/config/zfs-build.m4
index 5f36569fe25b..bb5a85d815d1 100644
--- a/config/zfs-build.m4
+++ b/config/zfs-build.m4
@@ -578,13 +578,15 @@ AC_DEFUN([ZFS_AC_DEFAULT_PACKAGE], [
AC_MSG_CHECKING([default shell])
case "$VENDOR" in
- gentoo) DEFAULT_INIT_SHELL="/sbin/openrc-run";;
- alpine) DEFAULT_INIT_SHELL="/sbin/openrc-run";;
- *) DEFAULT_INIT_SHELL="/bin/sh" ;;
+ gentoo|alpine) DEFAULT_INIT_SHELL=/sbin/openrc-run
+ IS_SYSV_RC=false ;;
+ *) DEFAULT_INIT_SHELL=/bin/sh
+ IS_SYSV_RC=true ;;
esac
AC_MSG_RESULT([$DEFAULT_INIT_SHELL])
AC_SUBST(DEFAULT_INIT_SHELL)
+ AC_SUBST(IS_SYSV_RC)
AC_MSG_CHECKING([default nfs server init script])
AS_IF([test "$VENDOR" = "debian"],
diff --git a/etc/init.d/README.md b/etc/init.d/README.md
index 2de05042ce63..da780fdc1222 100644
--- a/etc/init.d/README.md
+++ b/etc/init.d/README.md
@@ -7,11 +7,7 @@ DESCRIPTION
They have been tested successfully on:
- * Debian GNU/Linux Wheezy
- * Debian GNU/Linux Jessie
- * Ubuntu Trusty
- * CentOS 6.0
- * CentOS 6.6
+ * Debian GNU/Linux Bookworm
* Gentoo
SUPPORT
diff --git a/etc/init.d/zfs-import.in b/etc/init.d/zfs-import.in
index a9a0604f81ac..ff169eb96d86 100755
--- a/etc/init.d/zfs-import.in
+++ b/etc/init.d/zfs-import.in
@@ -307,7 +307,7 @@ do_start()
# ----------------------------------------------------
-if [ ! -e /sbin/openrc-run ]
+if @IS_SYSV_RC@
then
case "$1" in
start)
diff --git a/etc/init.d/zfs-load-key.in b/etc/init.d/zfs-load-key.in
index 53c7766b793a..27dfeeb0bcc5 100755
--- a/etc/init.d/zfs-load-key.in
+++ b/etc/init.d/zfs-load-key.in
@@ -104,7 +104,7 @@ do_stop()
# ----------------------------------------------------
-if [ ! -e /sbin/openrc-run ]
+if @IS_SYSV_RC@
then
case "$1" in
start)
diff --git a/etc/init.d/zfs-mount.in b/etc/init.d/zfs-mount.in
index a0825f19fcdd..6a3ca5f86908 100755
--- a/etc/init.d/zfs-mount.in
+++ b/etc/init.d/zfs-mount.in
@@ -114,7 +114,7 @@ do_stop()
# ----------------------------------------------------
-if [ ! -e /sbin/openrc-run ]
+if @IS_SYSV_RC@
then
case "$1" in
start)
diff --git a/etc/init.d/zfs-share.in b/etc/init.d/zfs-share.in
index 88978071cbf6..06c59c620b75 100755
--- a/etc/init.d/zfs-share.in
+++ b/etc/init.d/zfs-share.in
@@ -57,7 +57,8 @@ do_stop()
# ----------------------------------------------------
-if [ ! -e /sbin/openrc-run ]; then
+if @IS_SYSV_RC@
+then
case "$1" in
start)
do_start
diff --git a/etc/init.d/zfs-zed.in b/etc/init.d/zfs-zed.in
index e9cf8867403c..3d40600cea5d 100755
--- a/etc/init.d/zfs-zed.in
+++ b/etc/init.d/zfs-zed.in
@@ -93,7 +93,8 @@ do_reload()
# ----------------------------------------------------
-if [ ! -e /sbin/openrc-run ]; then
+if @IS_SYSV_RC@
+then
case "$1" in
start)
do_start