* tests/util/grub-shell.in: Trim firmware output on EFI.

This commit is contained in:
Vladimir 'phcoder' Serbinenko 2012-06-07 16:33:17 +02:00
parent cede3ca325
commit 08a14e0b71
2 changed files with 33 additions and 4 deletions

View file

@ -1,3 +1,7 @@
2012-06-07 Vladimir Serbinenko <phcoder@gmail.com>
* tests/util/grub-shell.in: Trim firmware output on EFI.
2012-06-07 Vladimir Serbinenko <phcoder@gmail.com> 2012-06-07 Vladimir Serbinenko <phcoder@gmail.com>
* grub-core/Makefile.core.def (vga_text): Disable on muliboot * grub-core/Makefile.core.def (vga_text): Disable on muliboot

View file

@ -32,6 +32,8 @@ PACKAGE_VERSION=@PACKAGE_VERSION@
PATH="${builddir}:$PATH" PATH="${builddir}:$PATH"
export PATH export PATH
trim=0
# Usage: usage # Usage: usage
# Print the usage. # Print the usage.
usage () { usage () {
@ -46,6 +48,7 @@ Run GRUB script in a Qemu instance.
--qemu=FILE Name of qemu binary --qemu=FILE Name of qemu binary
--qemu-opts=OPTIONS extra options to pass to Qemu instance --qemu-opts=OPTIONS extra options to pass to Qemu instance
--files=FILES add files to the image --files=FILES add files to the image
--trim trim firmware output
$0 runs input GRUB script or SOURCE file in a Qemu instance and prints $0 runs input GRUB script or SOURCE file in a Qemu instance and prints
its output. its output.
@ -97,11 +100,15 @@ case "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" in
i386-efi) i386-efi)
qemu=qemu-system-i386 qemu=qemu-system-i386
boot=cd boot=cd
console=console;; console=console
trim=1
;;
x86_64-efi) x86_64-efi)
qemu=qemu-system-x86_64 qemu=qemu-system-x86_64
boot=cd boot=cd
console=console;; console=console
trim=1
;;
*) *)
boot=hd boot=hd
qemu=qemu-system-i386 qemu=qemu-system-i386
@ -117,6 +124,9 @@ for option in "$@"; do
-v | --version) -v | --version)
echo "$0 (GNU GRUB ${PACKAGE_VERSION})" echo "$0 (GNU GRUB ${PACKAGE_VERSION})"
exit 0 ;; exit 0 ;;
--trim)
trim=1
;;
--modules=*) --modules=*)
ms=`echo "$option" | sed -e 's/--modules=//' -e 's/,/ /g'` ms=`echo "$option" | sed -e 's/--modules=//' -e 's/,/ /g'`
modules="$modules $ms" ;; modules="$modules $ms" ;;
@ -175,6 +185,12 @@ terminal_input serial
terminal_output serial terminal_output serial
EOF EOF
trim_head=664cbea8-132f-4770-8aa4-1696d59ac35c
if [ $trim = 1 ]; then
echo "echo $trim_head" >>${cfgfile}
fi
rom_directory=`mktemp -d "${TMPDIR:-/tmp}/tmp.XXXXXXXXXX"` || exit 1 rom_directory=`mktemp -d "${TMPDIR:-/tmp}/tmp.XXXXXXXXXX"` || exit 1
for mod in ${modules} for mod in ${modules}
@ -232,14 +248,23 @@ if [ x$boot = xcoreboot ]; then
device=cdrom device=cdrom
fi fi
do_trim ()
{
if [ $trim = 1 ]; then
awk '{ if (have_head == 1) print $0; } /664cbea8-132f-4770-8aa4-1696d59ac35c/ { have_head=1; }'
else
cat
fi
}
if [ x$boot = xnet ]; then if [ x$boot = xnet ]; then
netdir=`mktemp -d "${TMPDIR:-/tmp}/tmp.XXXXXXXXXX"` || exit 1 netdir=`mktemp -d "${TMPDIR:-/tmp}/tmp.XXXXXXXXXX"` || exit 1
pkgdatadir="@builddir@" sh "@builddir@/grub-mknetdir" "--grub-mkimage=${builddir}/grub-mkimage" "--directory=${builddir}/grub-core" "--net-directory=$netdir" pkgdatadir="@builddir@" sh "@builddir@/grub-mknetdir" "--grub-mkimage=${builddir}/grub-mkimage" "--directory=${builddir}/grub-core" "--net-directory=$netdir"
cp "${cfgfile}" "$netdir/boot/grub/grub.cfg" cp "${cfgfile}" "$netdir/boot/grub/grub.cfg"
cp "${source}" "$netdir/boot/grub/testcase.cfg" cp "${source}" "$netdir/boot/grub/testcase.cfg"
"${qemu}" ${qemuopts} -nographic -serial file:/dev/stdout -monitor file:/dev/null -boot n -net "user,tftp=$netdir,bootfile=/boot/grub/${grub_modinfo_target_cpu}-${grub_modinfo_platform}/core.0" -net nic | cat | tr -d "\r" "${qemu}" ${qemuopts} -nographic -serial file:/dev/stdout -monitor file:/dev/null -boot n -net "user,tftp=$netdir,bootfile=/boot/grub/${grub_modinfo_target_cpu}-${grub_modinfo_platform}/core.0" -net nic | cat | tr -d "\r" | do_trim
else else
"${qemu}" ${qemuopts} -nographic -serial file:/dev/stdout -monitor file:/dev/null -${device} ${isofile} ${bootdev} | cat | tr -d "\r" "${qemu}" ${qemuopts} -nographic -serial file:/dev/stdout -monitor file:/dev/null -${device} ${isofile} ${bootdev} | cat | tr -d "\r" | do_trim
fi fi
rm -f "${isofile}" "${imgfile}" rm -f "${isofile}" "${imgfile}"
rm -rf "${rom_directory}" rm -rf "${rom_directory}"