#!/usr/bin/env sh # SPDX-License-Identifier: GPL-3.0-or-later # SPDX-FileCopyrightText: 2014,2015,2020,2021,2023 Leah Rowe [ "x${DEBUG+set}" = 'xset' ] && set -v set -u -e elfdir="elf/grub" grubcfgsdir="config/grub" layoutdir="/boot/grub/layouts" . "include/err.sh" . "${grubcfgsdir}/modules.list" main() { handle_dependencies build_keymap_configs build_grub_payload } handle_dependencies() { [ -d "grub/" ] || \ ./update project repo grub || \ err "handle_dependencies: cannot fetch grub" [ -f "grub/grub-mkstandalone" ] || \ ./build grub utils || \ err "handle_dependencies: cannot build grub utils" [ -d "${elfdir}" ] || \ mkdir -p "${elfdir}" || \ err "handle_dependencies: cannot mkdir ${elfdir}" rm -f "${elfdir}/"* || \ err "handle_dependencies: cannot rm inside: ${elfdir}/" } build_keymap_configs() { for keylayoutfile in "${grubcfgsdir}/keymap/"*.gkb; do [ -f "${keylayoutfile}" ] || continue keymap="${keylayoutfile##${grubcfgsdir}/keymap/}" keymap="${keymap%.gkb}" printf "keymap %s\n" "${keymap}" > \ "${elfdir}/keymap_${keymap}.cfg" || \ err "mk_keymap: can't make ${elfdir}/keymap_${keymap}.cfg" done } build_grub_payload() { grub/grub-mkstandalone \ --grub-mkimage="grub/grub-mkimage" \ -O i386-coreboot \ -o "${elfdir}/grub.elf" \ -d grub/grub-core/ \ --fonts= --themes= --locales= \ --modules="${grub_modules}" \ --install-modules="${grub_install_modules}" \ "${layoutdir}/colemak.gkb=${grubcfgsdir}/keymap/colemak.gkb" \ "${layoutdir}/deqwertz.gkb=${grubcfgsdir}/keymap/deqwertz.gkb" \ "${layoutdir}/esqwerty.gkb=${grubcfgsdir}/keymap/esqwerty.gkb" \ "${layoutdir}/frazerty.gkb=${grubcfgsdir}/keymap/frazerty.gkb" \ "${layoutdir}/frdvbepo.gkb=${grubcfgsdir}/keymap/frdvbepo.gkb" \ "${layoutdir}/itqwerty.gkb=${grubcfgsdir}/keymap/itqwerty.gkb" \ "${layoutdir}/svenska.gkb=${grubcfgsdir}/keymap/svenska.gkb" \ "${layoutdir}/trqwerty.gkb=${grubcfgsdir}/keymap/trqwerty.gkb" \ "${layoutdir}/ukdvorak.gkb=${grubcfgsdir}/keymap/ukdvorak.gkb" \ "${layoutdir}/ukqwerty.gkb=${grubcfgsdir}/keymap/ukqwerty.gkb" \ "${layoutdir}/usdvorak.gkb=${grubcfgsdir}/keymap/usdvorak.gkb" \ "${layoutdir}/usqwerty.gkb=${grubcfgsdir}/keymap/usqwerty.gkb" \ "/boot/grub/grub.cfg=${grubcfgsdir}/config/grub_memdisk.cfg" \ "/boot/grub/grub_default.cfg=${grubcfgsdir}/config/grub.cfg" || \ err "build_grub_elf: cannot build grub payload (grub-mkstandalone)" } main $@