diff options
author | Jonathan Bauer | 2020-05-19 13:23:50 +0200 |
---|---|---|
committer | Jonathan Bauer | 2020-05-19 13:23:50 +0200 |
commit | ea4c31e1734747c38bca22b4c4784fc0de22139d (patch) | |
tree | c8b0f4de999cb4dd247d5ae2b8ae927474217170 /build-initramfs.sh | |
parent | patches: backport workaround for dnbd3 in centos (diff) | |
download | systemd-init-ea4c31e1734747c38bca22b4c4784fc0de22139d.tar.gz systemd-init-ea4c31e1734747c38bca22b4c4784fc0de22139d.tar.xz systemd-init-ea4c31e1734747c38bca22b4c4784fc0de22139d.zip |
build-initramfs.sh: support CentOS-7 again
Diffstat (limited to 'build-initramfs.sh')
-rwxr-xr-x | build-initramfs.sh | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/build-initramfs.sh b/build-initramfs.sh index dcf52636..2b31f55b 100755 --- a/build-initramfs.sh +++ b/build-initramfs.sh @@ -34,6 +34,14 @@ use_systemd_in_initramfs='no' declare -rg _repo_dir="${_root_dir}/systemd-init" declare -rg _dracut_dir="${_root_dir}/dracut" +# Autodetect the kmod version present on the system to decide which dracut version to get +# * v47 requires kmod >= 23 (Available in Ubuntu 18.04) +# * v46 works with kmod == 20 (CentOS 7.5 only provides kmod v20) +declare -g _dracut_version="046" +if [ "$(pkg-config --modversion libkmod)" -ge 23 ]; then + _dracut_version="047" +fi + declare -A core_repo=( [handler]="git" [path]="$_repo_dir" @@ -44,7 +52,7 @@ declare -A core_repo=( declare -A core_dracut=( [handler]="http" [path]="$_dracut_dir" - [url]="https://www.kernel.org/pub/linux/utils/boot/dracut/dracut-047.tar.gz" + [url]="https://www.kernel.org/pub/linux/utils/boot/dracut/dracut-${_dracut_version}.tar.gz" ) declare -A module_dnbd3=( @@ -90,6 +98,19 @@ declare -A override bootstrap() { for module in "${!core_@}" "${!module_@}"; do declare -n _ref="$module" + if [ "$?" -ne 0 ]; then + echo "Only bash >= 4.3 supports namerefs." \ + "You are running ${BASH_VERSION}." \ + "Falling back to using evil eval..." + eval 'declare -A _ref=(' \ + '[handler]=${'$module'[handler]}' \ + '[path]=${'$module'[path]}' \ + '[url]=${'$module'[url]}' \ + '[branch]=${'$module'[branch]}' \ + '[commit]=${'$module'[commit]}' \ + ')' + # phew that was ugly.... + fi if [ -n "$(ls -A "${_ref[path]}" 2> /dev/null)" ]; then echo "'${_ref[path]}' not empty, skipping..." continue |