123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- #! @BUILD_SHEBANG@
- set -e
- # Compares GRUB script output with BASH output.
- # Copyright (C) 2009,2010 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 <http://www.gnu.org/licenses/>.
- # Initialize some variables.
- prefix="@prefix@"
- exec_prefix="@exec_prefix@"
- datarootdir="@datarootdir@"
- builddir="@builddir@"
- PACKAGE_NAME=@PACKAGE_NAME@
- PACKAGE_TARNAME=@PACKAGE_TARNAME@
- PACKAGE_VERSION=@PACKAGE_VERSION@
- # Force build directory components
- PATH="${builddir}:$PATH"
- export PATH
- # Usage: usage
- # Print the usage.
- usage () {
- cat <<EOF
- Usage: $0 [OPTION] [SOURCE]
- Compares GRUB script output with BASH shell output.
- -h, --help print this message and exit
- -v, --version print the version information and exit
- --modules=MODULES pre-load specified modules MODULES
- --qemu-opts=OPTIONS extra options to pass to Qemu instance
- $0 compares GRUB script output with BASH shell output and prints their
- differences.
- Report bugs to <bug-grub@gnu.org>.
- EOF
- }
- # Check the arguments.
- for option in "$@"; do
- case "$option" in
- -h | --help)
- usage
- exit 0 ;;
- -v | --version)
- echo "$0 (GNU GRUB ${PACKAGE_VERSION})"
- exit 0 ;;
- --modules=*)
- ms=`echo "$option" | sed -e 's/--modules=//'`
- modules="$modules,$ms" ;;
- --qemu-opts=*)
- qs=`echo "$option" | sed -e 's/--qemu-opts=//'`
- qemuopts="$qemuopts $qs" ;;
- -*)
- echo "Unrecognized option \`$option'" 1>&2
- usage
- exit 1
- ;;
- *)
- if [ "x${source}" != x ] ; then
- echo "too many parameters at the end" 1>&2
- usage
- exit 1
- fi
- source="${option}" ;;
- esac
- done
- if [ "x${source}" = x ] ; then
- tmpfile=`mktemp "${TMPDIR:-/tmp}/tmp.XXXXXXXXXX"` || exit 1
- while read REPLY; do
- echo $REPLY >> "${tmpfile}"
- done
- source="${tmpfile}"
- fi
- outfile1=`mktemp "${TMPDIR:-/tmp}/tmp.XXXXXXXXXX"` || exit 1
- "@builddir@/grub-shell" --qemu-opts="${qemuopts}" --modules=${modules} "${source}" >"${outfile1}"
- outfile2=`mktemp "${TMPDIR:-/tmp}/tmp.XXXXXXXXXX"` || exit 1
- bash "${source}" >"${outfile2}"
- if ! diff -q "${outfile1}" "${outfile2}" >/dev/null
- then
- echo "${source}: GRUB and BASH outputs did not match (see diff -u ${outfile1} ${outfile2})"
- status=1
- else
- rm -f "${outfile1}" "${outfile2}"
- fi
- exit $status
|