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 6ef28c526b.

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
This commit is contained in:
Benda Xu 2024-04-09 07:52:24 +08:00 committed by Tony Hutter
parent baaac31655
commit 6732e223bf
8 changed files with 14 additions and 13 deletions

View File

@ -18,6 +18,7 @@ subst_sed_cmd = \
-e 's|@ASAN_ENABLED[@]|$(ASAN_ENABLED)|g' \ -e 's|@ASAN_ENABLED[@]|$(ASAN_ENABLED)|g' \
-e 's|@DEFAULT_INIT_NFS_SERVER[@]|$(DEFAULT_INIT_NFS_SERVER)|g' \ -e 's|@DEFAULT_INIT_NFS_SERVER[@]|$(DEFAULT_INIT_NFS_SERVER)|g' \
-e 's|@DEFAULT_INIT_SHELL[@]|$(DEFAULT_INIT_SHELL)|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_DYNAMIC[@]|$(LIBFETCH_DYNAMIC)|g' \
-e 's|@LIBFETCH_SONAME[@]|$(LIBFETCH_SONAME)|g' \ -e 's|@LIBFETCH_SONAME[@]|$(LIBFETCH_SONAME)|g' \
-e 's|@PYTHON[@]|$(PYTHON)|g' \ -e 's|@PYTHON[@]|$(PYTHON)|g' \

View File

@ -578,13 +578,15 @@ AC_DEFUN([ZFS_AC_DEFAULT_PACKAGE], [
AC_MSG_CHECKING([default shell]) AC_MSG_CHECKING([default shell])
case "$VENDOR" in case "$VENDOR" in
gentoo) DEFAULT_INIT_SHELL="/sbin/openrc-run";; gentoo|alpine) DEFAULT_INIT_SHELL=/sbin/openrc-run
alpine) DEFAULT_INIT_SHELL="/sbin/openrc-run";; IS_SYSV_RC=false ;;
*) DEFAULT_INIT_SHELL="/bin/sh" ;; *) DEFAULT_INIT_SHELL=/bin/sh
IS_SYSV_RC=true ;;
esac esac
AC_MSG_RESULT([$DEFAULT_INIT_SHELL]) AC_MSG_RESULT([$DEFAULT_INIT_SHELL])
AC_SUBST(DEFAULT_INIT_SHELL) AC_SUBST(DEFAULT_INIT_SHELL)
AC_SUBST(IS_SYSV_RC)
AC_MSG_CHECKING([default nfs server init script]) AC_MSG_CHECKING([default nfs server init script])
AS_IF([test "$VENDOR" = "debian"], AS_IF([test "$VENDOR" = "debian"],

View File

@ -7,11 +7,7 @@ DESCRIPTION
They have been tested successfully on: They have been tested successfully on:
* Debian GNU/Linux Wheezy * Debian GNU/Linux Bookworm
* Debian GNU/Linux Jessie
* Ubuntu Trusty
* CentOS 6.0
* CentOS 6.6
* Gentoo * Gentoo
SUPPORT SUPPORT

View File

@ -307,7 +307,7 @@ do_start()
# ---------------------------------------------------- # ----------------------------------------------------
if [ ! -e /sbin/openrc-run ] if @IS_SYSV_RC@
then then
case "$1" in case "$1" in
start) start)

View File

@ -104,7 +104,7 @@ do_stop()
# ---------------------------------------------------- # ----------------------------------------------------
if [ ! -e /sbin/openrc-run ] if @IS_SYSV_RC@
then then
case "$1" in case "$1" in
start) start)

View File

@ -114,7 +114,7 @@ do_stop()
# ---------------------------------------------------- # ----------------------------------------------------
if [ ! -e /sbin/openrc-run ] if @IS_SYSV_RC@
then then
case "$1" in case "$1" in
start) start)

View File

@ -57,7 +57,8 @@ do_stop()
# ---------------------------------------------------- # ----------------------------------------------------
if [ ! -e /sbin/openrc-run ]; then if @IS_SYSV_RC@
then
case "$1" in case "$1" in
start) start)
do_start do_start

View File

@ -93,7 +93,8 @@ do_reload()
# ---------------------------------------------------- # ----------------------------------------------------
if [ ! -e /sbin/openrc-run ]; then if @IS_SYSV_RC@
then
case "$1" in case "$1" in
start) start)
do_start do_start