guix-install.sh: Add unique requirement for sysv init system
This improves the installer's ability to detect that all requirements are present regardless of init system. It also avoids performing the requirement check twice (printing excessively to the console) and provides a framework for adding new init system specific requirements if it's needed in the future. * etc/guix-install.sh (add_init_sys_require): Create. (SYSV_INIT_REQUIRE): Create. (main_install): Reorder installer steps so all requirements are checked in one pass. Change-Id: Ic541c1b90499d504642b7ab4ae595501b1a37b0d Signed-off-by: Ludovic Courtès <ludo@gnu.org>master
parent
3e87b207ce
commit
40c6f70839
|
@ -15,6 +15,7 @@
|
||||||
# Copyright © 2020 David A. Redick <david.a.redick@gmail.com>
|
# Copyright © 2020 David A. Redick <david.a.redick@gmail.com>
|
||||||
# Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
|
# Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
|
||||||
# Copyright © 2024 Tomas Volf <~@wolfsden.cz>
|
# Copyright © 2024 Tomas Volf <~@wolfsden.cz>
|
||||||
|
# Copyright © 2024 Richard Sent <richard@freakingpenguin.com>
|
||||||
#
|
#
|
||||||
# This file is part of GNU Guix.
|
# This file is part of GNU Guix.
|
||||||
#
|
#
|
||||||
|
@ -81,6 +82,12 @@ REQUIRE=(
|
||||||
"xz"
|
"xz"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Add variables using form FOO_INIT_REQUIRE when init system FOO dependencies
|
||||||
|
# should be checked.
|
||||||
|
SYSV_INIT_REQUIRE=(
|
||||||
|
"daemonize"
|
||||||
|
)
|
||||||
|
|
||||||
PAS=$'[ \033[32;1mPASS\033[0m ] '
|
PAS=$'[ \033[32;1mPASS\033[0m ] '
|
||||||
ERR=$'[ \033[31;1mFAIL\033[0m ] '
|
ERR=$'[ \033[31;1mFAIL\033[0m ] '
|
||||||
WAR=$'[ \033[33;1mWARN\033[0m ] '
|
WAR=$'[ \033[33;1mWARN\033[0m ] '
|
||||||
|
@ -148,6 +155,18 @@ chk_require()
|
||||||
_msg "${PAS}verification of required commands completed"
|
_msg "${PAS}verification of required commands completed"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
add_init_sys_require()
|
||||||
|
{ # Add the elements of FOO_INIT_SYS to REQUIRE
|
||||||
|
local init_require="${INIT_SYS}_REQUIRE[@]"
|
||||||
|
if [[ ! -z "$init_require" ]]; then
|
||||||
|
# Have to add piecemeal because ${!foo[@]} performs direct array key
|
||||||
|
# expansion, not indirect plain array expansion.
|
||||||
|
for r in "${!init_require}"; do
|
||||||
|
REQUIRE+=("$r")
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
chk_gpg_keyring()
|
chk_gpg_keyring()
|
||||||
{ # Check whether the Guix release signing public key is present.
|
{ # Check whether the Guix release signing public key is present.
|
||||||
_debug "--- [ ${FUNCNAME[0]} ] ---"
|
_debug "--- [ ${FUNCNAME[0]} ] ---"
|
||||||
|
@ -794,9 +813,10 @@ main_install()
|
||||||
_msg "Starting installation ($(date))"
|
_msg "Starting installation ($(date))"
|
||||||
|
|
||||||
chk_term
|
chk_term
|
||||||
|
chk_init_sys
|
||||||
|
add_init_sys_require
|
||||||
chk_require "${REQUIRE[@]}"
|
chk_require "${REQUIRE[@]}"
|
||||||
chk_gpg_keyring
|
chk_gpg_keyring
|
||||||
chk_init_sys
|
|
||||||
chk_sys_arch
|
chk_sys_arch
|
||||||
chk_sys_nscd
|
chk_sys_nscd
|
||||||
|
|
||||||
|
|
Reference in New Issue