diff options
Diffstat (limited to 'builder')
| -rwxr-xr-x | builder/build-initramfs.sh | 44 |
1 files changed, 26 insertions, 18 deletions
diff --git a/builder/build-initramfs.sh b/builder/build-initramfs.sh index b023bff6..cd0ac8d6 100755 --- a/builder/build-initramfs.sh +++ b/builder/build-initramfs.sh @@ -84,7 +84,7 @@ declare -A optional_dependencies=( ['make gcc cmake']='dynamically compile needed resources against current or given kernel' \ [chroot]='build against a distribution other than this program runs in') declare -A core_shared_library_pattern_dependencies=( - ['TODO libz']='compile dnbd3 for given or current kernel') + [libz]='compile dnbd3 for given or current kernel') declare -A optional_shared_library_pattern_dependencies=() declare -A core_package_dependencies=() declare -A optional_package_dependencies=( @@ -249,28 +249,29 @@ dependency_check() { # Check for given dependencies with given dependency checker and log # corresponding messages. local result=0 - eval "local _dependencies=\"\${!${1}_${2}[@]}\"" - echo - echo $1 $2 $3 - echo - for dependency_group in $_dependencies; do + eval 'for dependency_group in "${!'$1'_'$2'[@]}"; do # NOTE: If "dependency_check_result" would be marked as local it is # empty later. dependency_check_result="$($3 $dependency_group)" || \ local return_code=$? - echo $return_code if [[ $return_code == 1 ]]; then - echo -n "$dependency_check_result" + echo "$dependency_check_result" + return $return_code elif [[ $return_code == 2 ]]; then while read dependency; do - eval "local reason=\${${1}${2}[\$dependency_group]}" - logging.critical "Missing $1 dependency \"$dependency\" needed for $reason." + eval "local reason=\${${1}_${2}[\"\$dependency_group\"]}" + local message="Missing $1 $4 dependency \"$dependency\" needed to $reason." + if [[ $1 == core ]]; then + logging.critical "$message" + else + logging.warn "$message" + fi done <<< $dependency_check_result - result=1 + result=2 fi return_code=0 - done + done' return $result } initialize_dracut() { @@ -320,22 +321,29 @@ cleanup() { # region controller -#dependency_check core dependencies utils_dependency_check +dependency_check core dependencies utils_dependency_check program || \ + result=$? dependency_check core shared_library_pattern_dependencies \ - utils_dependency_check_shared_library -dependency_check core package_dependencies utils_dependency_check_pkgconfig + utils_dependency_check_shared_library 'shared library' || result=$? +dependency_check core package_dependencies utils_dependency_check_pkgconfig \ + package || result=$? +# NOTE: We only want to run additional tests if dependencies are missing. Not +# if dependencies are missing to run the dependency checker itself. +[[ $result == 1 ]] && exit 0 logging.set_commands_level debug +logging.set_level debug if ! parse_command_line "$@"; then print_help_message "$0" exit 1 fi -dependency_check optional dependencies utils_dependency_check +dependency_check optional dependencies utils_dependency_check program || true dependency_check optional shared_library_pattern_dependencies \ - utils_dependency_check_shared_library -dependency_check optional package_dependencies utils_dependency_check_pkgconfig + utils_dependency_check_shared_library 'shared library' || true +dependency_check optional package_dependencies \ + utils_dependency_check_pkgconfig package || true exit 0 ## region handle delegated operations to specified target |
