#!/usr/bin/env bash # Copyright (C) 2016 Paul Kocialkowski # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . arguments() { project_arguments_targets "${project}" "$@" } usage() { project_usage_actions "${project}" project_usage_arguments "${project}" "$@" } download() { local repository="${project}" project_download_git "${project}" "${repository}" 'https://git.savannah.gnu.org/r/grub.git' "$@" } download_check() { local repository="${project}" project_download_check_git "${project}" "${repository}" "$@" } extract() { project_extract "${project}" "$@" } extract_check() { project_extract_check "${project}" "$@" } update() { local repository="${project}" project_update_git "${project}" "${repository}" "$@" } update_check() { local repository="${project}" project_update_check_git "${project}" "${repository}" "$@" } build() { local repository="${project}" project_sources_directory_missing_empty_error "${project}" "${repository}" "$@" if git_project_check "${repository}"; then git_project_checkout "${project}" "${repository}" "$@" fi local project_path="$(project_path "${project}")" local sources_path="$(project_sources_path "${project}" "${repository}" "$@")" local build_path="$(project_build_path "${project}" "$@")" local -a grub_keymaps mapfile -t grub_install_modules < "${project_path}/${CONFIGS}/grub-install-modules" mapfile -t grub_load_modules < "${project_path}/${CONFIGS}/grub-load-modules" for keymap in "${project_path}/${CONFIGS}/keymap"/*; do if [[ -f "${keymap}" ]]; then grub_keymaps+=("/boot/grub/layouts/${keymap##*/}=${keymap}") fi done mkdir -p "${build_path}" ( cd "${sources_path}" # Compile GRUB first ./autogen.sh ./configure --with-platform=coreboot make -j"${TASKS}" # Now compile GRUB ELF executable ./grub-mkstandalone \ --grub-mkimage=./grub-mkimage \ --fonts='' \ --themes='' \ --locales='' \ --modules="${grub_load_modules[*]}" \ --install-modules="${grub_install_modules[*]}" \ --directory=grub-core \ -O i386-coreboot \ -o grub.elf \ /boot/grub/grub.cfg="${project_path}/${CONFIGS}/grub.cfg" \ "${grub_keymaps[@]}" # Copy the ELF to its build directory cp grub.elf "${build_path}" # Tidy up make clean ) } build_check() { project_build_check "${project}" "$@" } install() { project_install "${project}" "$@" } install_check() { project_install_check "${project}" "$@" } release() { local repository="${project}" project_release_install_archive "${project}" "${IMAGES}" "$@" project_release_sources_git "${project}" "${repository}" "$@" } release_check() { local repository="${project}" project_release_install_archive_check "${project}" "${IMAGES}" "$@" project_release_check_sources_git "${project}" "${repository}" "$@" } clean() { project_clean "${project}" "$@" }