#! /bin/sh set -e # Copyright (C) 1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012 Free Software Foundation, Inc. # # GRUB 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. # # GRUB 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 GRUB. If not, see . prefix="@prefix@" exec_prefix="@exec_prefix@" datarootdir="@datarootdir@" bindir="@bindir@" libdir="@libdir@" PACKAGE_NAME=@PACKAGE_NAME@ PACKAGE_TARNAME=@PACKAGE_TARNAME@ PACKAGE_VERSION=@PACKAGE_VERSION@ datadir="@datadir@" if [ "x$pkgdatadir" = x ]; then pkgdatadir="${datadir}/@PACKAGE@" fi self=`basename $0` export TEXTDOMAIN=@PACKAGE@ export TEXTDOMAINDIR="@localedir@" . "${pkgdatadir}/grub-mkconfig_lib" modules= pkglib_DATA="moddep.lst command.lst fs.lst partmap.lst parttool.lst \ handler.lst video.lst crypto.lst terminal.lst" grub_mkimage="${bindir}/@grub_mkimage@" grub_compress_file () { if [ -f "$1" ] ; then if [ "$compressor" != "" ] ; then "$compressor" $compressor_opts "$1" > "$2" else cp -f "$1" "$2" fi else gettext_printf "Skipping file \`%s': not a plain file\n" "$1" 1>&2 fi } grub_install_files () { grub_install_files_source_directory="$1" grub_install_files_target_directory="$2" grub_install_files_platform="$3" mkdir -p "${grub_install_files_target_directory}"/"${grub_install_files_platform}" for file in "${grub_install_files_target_directory}"/*.mod \ "${grub_install_files_target_directory}"/*.lst \ "${grub_install_files_target_directory}"/*.img \ "${grub_install_files_target_directory}"/efiemu??.o \ "${grub_install_files_target_directory}"/"${grub_install_files_platform}"/*.mod \ "${grub_install_files_target_directory}"/"${grub_install_files_platform}"/*.lst \ "${grub_install_files_target_directory}"/"${grub_install_files_platform}"/*.img \ "${grub_install_files_target_directory}"/"${grub_install_files_platform}"/efiemu??.o; do if test -f "$file" && [ "`basename $file`" != menu.lst ]; then rm -f "$file" || exit 1 fi done if [ x"$install_modules" = xall ]; then for file in "${grub_install_files_source_directory}/"*.mod; do grub_compress_file "$file" "${grub_install_files_target_directory}"/"${grub_install_files_platform}/$(basename "$file")" done else modules1= modules2="$install_modules" while [ x"$modules2" != x ]; do modules3= for x in $modules2; do modules3="$modules3 $(grep "^$x:" "${grub_install_files_source_directory}/moddep.lst" | sed 's,^[^:]*:,,')" done modules1="$modules1 $modules2" modules2="$modules3" done for file in $(echo "$modules1" | sed 's, ,\n,g' |sort -u); do grub_compress_file "${grub_install_files_source_directory}/$file.mod" "${grub_install_files_target_directory}"/"${grub_install_files_platform}/$file.mod" done fi for file in ${pkglib_DATA} efiemu32.o efiemu64.o; do if test -f "${grub_install_files_source_directory}/${file}"; then grub_compress_file "${grub_install_files_source_directory}/${file}" "${grub_install_files_target_directory}"/"${grub_install_files_platform}/${file}" fi done # Copy gettext files mkdir -p "${grub_install_files_target_directory}"/locale for file in "${grub_install_files_target_directory}"/locale/*.mo; do if test -f "$file"; then rm -f "$file" || exit 1 fi done if [ x"$install_locales" = xall ]; then for file in "${grub_install_files_source_directory}"/po/*.mo; do if test -f "$file"; then grub_compress_file "$file" "${grub_install_files_target_directory}"/locale/"$(basename "$file")" fi done for dir in "${localedir}"/*; do if test -f "$dir/LC_MESSAGES/@PACKAGE@.mo" && ! test -f "${grub_install_files_target_directory}"/locale/"${dir##*/}.mo"; then grub_compress_file "$dir/LC_MESSAGES/@PACKAGE@.mo" "${grub_install_files_target_directory}"/locale/"${dir##*/}.mo" fi done else for locale in $install_locales; do if test -f "${grub_install_files_source_directory}"/po/$locale.mo; then grub_compress_file "${grub_install_files_source_directory}"/po/locale.mo "${grub_install_files_target_directory}"/locale/$locale.mo elif test -f "${localedir}/$locale/LC_MESSAGES/@PACKAGE@.mo"; then grub_compress_file "${localedir}/$locale/LC_MESSAGES/@PACKAGE@.mo" "${grub_install_files_target_directory}"/locale/$locale.mo fi done fi for theme in ${install_themes} ; do if test -f "${pkgdatadir}"/themes/"${theme}"/theme.txt; then mkdir -p "${grub_install_files_target_directory}"/themes/"${theme}" for file in "${pkgdatadir}"/themes/"${theme}"/*; do grub_compress_file "$file" "${grub_install_files_target_directory}"/themes/"${theme}"/"$(basename "$file")" done fi done for font in ${install_fonts} ; do if test -f "${pkgdatadir}"/"$font".pf2; then mkdir -p "${grub_install_files_target_directory}"/fonts grub_compress_file "${pkgdatadir}"/"$font".pf2 "${grub_install_files_target_directory}"/fonts/"$font".pf2 fi done } grub_print_install_files_help () { print_option_help "--modules=$(gettext "MODULES")" "$(gettext "pre-load specified modules MODULES")" print_option_help "--install-modules=$(gettext "MODULES")" "$(gettext "install only MODULES and their dependencies [default=all]")" print_option_help "--themes=THEMES" "$(gettext_printf "install THEMES [default=%s]" "starfield")" print_option_help "--fonts=FONTS" "$(gettext_printf "install FONTS [default=%s]" "unicode")" print_option_help "--locales=LOCALES" "$(gettext_printf "install only LOCALES [default=all]")" print_option_help "--compress[=no,xz,gz,lzo]" "$(gettext "compress GRUB files [optional]")" # TRANSLATORS: platform here isn't identifier. It can be translated. dir_msg="$(gettext_printf "use images and modules under DIR [default=%s/]" "${libdir}/@PACKAGE@")" print_option_help "-d, --directory=$(gettext "DIR")" "$dir_msg" print_option_help "--grub-mkimage=$(gettext "FILE")" "$(gettext "use FILE as grub-mkimage")" print_option_help "-v, --version" "$(gettext "print the version information and exit")" } install_modules=all install_themes=starfield install_fonts=unicode install_locales=all compress=no grub_decompression_module="" compressor="" compressor_opts="" source_directory="" argument () { opt=$1 shift if test $# -eq 0; then gettext_printf "%s: option requires an argument -- \`%s'\n" "$0" "$opt" 1>&2 exit 1 fi echo $1 } grub_parse_compress () { compress="$1" case x"$compress" in xno) ;; xgz) compressor=`which gzip || true` grub_decompression_module="gzio" compressor_opts="--best --stdout";; xxz) compressor=`which xz || true` grub_decompression_module="xzio gcry_crc" compressor_opts="--lzma2=dict=128KiB --check=none --stdout";; xlzo) compressor=`which lzop || true` grub_decompression_module="lzopio adler32 gcry_crc" compressor_opts="-9 -c";; *) gettext_printf "Unrecognized compression \`%s'\n" "$compress" 1>&2 usage exit 1 esac } grub_process_install_options () { option=$1 shift grub_process_install_options_consumed=0 case "$option" in --install-modules) install_modules=`argument $option "$@"`; grub_process_install_options_consumed=2; return ;; --install-modules=*) install_modules=`echo "$option" | sed 's/--install-modules=//'`; grub_process_install_options_consumed=1; return ;; --themes) install_themes=`argument $option "$@"`; grub_process_install_options_consumed=2; return ;; --themes=*) install_themes=`echo "$option" | sed 's/--themes=//'`; grub_process_install_options_consumed=1; return ;; --fonts) install_fonts=`argument $option "$@"`; grub_process_install_options_consumed=2; return ;; --fonts=*) install_fonts=`echo "$option" | sed 's/--fonts=//'`; grub_process_install_options_consumed=1; return ;; --locales) install_locales=`argument $option "$@"`; grub_process_install_options_consumed=2; return ;; --locales=*) install_locales=`echo "$option" | sed 's/--locales=//'`; grub_process_install_options_consumed=1; return ;; --compress) grub_parse_compress `argument $option "$@"`; grub_process_install_options_consumed=2; return ;; --compress=*) grub_parse_compress `echo "${option}" | sed 's/--compress=//'`; grub_process_install_options_consumed=1; return ;; --directory | -d) source_directory=`argument $option "$@"`; grub_process_install_options_consumed=2 ;; --directory=*) source_directory=`echo "$option" | sed 's/--directory=//'` grub_process_install_options_consumed=1;; # For backwards compatibility --override-directory) source_directory=`argument $option "$@"`; grub_process_install_options_consumed=2 ;; --override-directory=*) source_directory=`echo "$option" | sed 's/--override-directory=//'` grub_process_install_options_consumed=1;; --grub-mkimage) grub_mkimage=`argument $option "$@"`; grub_process_install_options_consumed=2 ;; --grub-mkimage=*) grub_mkimage=`echo "$option" | sed 's/--grub-mkimage=//'`;grub_process_install_options_consumed=1 ;; --modules) modules=`argument $option "$@"`; grub_process_install_options_consumed=2;; --modules=*) modules=`echo "$option" | sed 's/--modules=//'` grub_process_install_options_consumed=1;; -v | --version) echo "$self (${PACKAGE_NAME}) ${PACKAGE_VERSION}" exit 0 ;; esac } export grub_decompression_module