summaryrefslogtreecommitdiffstats
path: root/builder
diff options
context:
space:
mode:
Diffstat (limited to 'builder')
-rwxr-xr-xbuilder/build-initramfs.sh44
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