Skip to content

Commit

Permalink
fix(i18n): handle symlinked keymap
Browse files Browse the repository at this point in the history
handle keymaps that are symlinks to others, for example:

KEYMAP=de-nodeadkeys in vconsole.conf is:

lrwxrwxrwx 1 root root 20 17. Mai 2023  /usr/share/kbd/keymaps/xkb/de-nodeadkeys.map.gz -> at-nodeadkeys.map.gz
  • Loading branch information
tblume committed Feb 9, 2024
1 parent 4980bad commit 619de72
Showing 1 changed file with 15 additions and 2 deletions.
17 changes: 15 additions & 2 deletions modules.d/10i18n/module-setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ install() {
MAPNAME=${1%.map*}

mapfile -t -d '' MAPS < <(
find "${dracutsysrootdir}${kbddir}"/keymaps/ -type f \( -name "${MAPNAME}" -o -name "${MAPNAME}.map*" \) -print0
find "${dracutsysrootdir}${kbddir}"/keymaps/ -type f,l \( -name "${MAPNAME}" -o -name "${MAPNAME}.map*" \) -print0
)
fi

Expand Down Expand Up @@ -160,6 +160,7 @@ install() {
install_local_i18n() {
local map
local maplink
# shellcheck disable=SC2086
eval "$(gather_vars ${i18n_vars})"
Expand Down Expand Up @@ -216,7 +217,19 @@ install() {
done
for keymap in "${!KEYMAPS[@]}"; do
inst_opt_decompress "${keymap}"
if [[ -L ${keymap} ]]; then
maplink=$(readlink -f "${keymap}")
# skip symlinked directories
[[ -d ${maplink} ]] && continue
inst_opt_decompress "${maplink}"
# create new symlink to decompressed keymap
maplink=${maplink%.gz}
keymap=${keymap%.gz}
ln -srn "${initdir}${maplink#"$dracutsysrootdir"}" "${initdir}${keymap#"$dracutsysrootdir"}"
else
inst_opt_decompress "${keymap}"
fi
done
inst_opt_decompress "${kbddir}"/consolefonts/"${DEFAULT_FONT}".*
Expand Down

0 comments on commit 619de72

Please sign in to comment.