From: Vladimir 'phcoder' Serbinenko Date: Tue, 27 Apr 2010 08:37:27 +0000 (+0200) Subject: merge merge-mkimage into boottest X-Git-Tag: 1.99~629^2~90^2~3 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7fec686e6c590c22cae047234907f209a79dae2c;p=thirdparty%2Fgrub.git merge merge-mkimage into boottest --- 7fec686e6c590c22cae047234907f209a79dae2c diff --cc conf/common.rmk index 538ba9832,f9e7eb194..683aa2e66 --- a/conf/common.rmk +++ b/conf/common.rmk @@@ -718,14 -823,44 +823,50 @@@ password_pbkdf2_mod_SOURCES = commands/ password_pbkdf2_mod_CFLAGS = $(COMMON_CFLAGS) password_pbkdf2_mod_LDFLAGS = $(COMMON_LDFLAGS) + # For memdisk.mod. + pkglib_MODULES += memdisk.mod + memdisk_mod_SOURCES = disk/memdisk.c + memdisk_mod_CFLAGS = $(COMMON_CFLAGS) + memdisk_mod_LDFLAGS = $(COMMON_LDFLAGS) + + # For reboot.mod. + pkglib_MODULES += reboot.mod + reboot_mod_SOURCES = commands/reboot.c + reboot_mod_CFLAGS = $(COMMON_CFLAGS) + reboot_mod_LDFLAGS = $(COMMON_LDFLAGS) + + # For date.mod + pkglib_MODULES += date.mod + date_mod_SOURCES = commands/date.c + date_mod_CFLAGS = $(COMMON_CFLAGS) + date_mod_LDFLAGS = $(COMMON_LDFLAGS) + + # For datehook.mod + pkglib_MODULES += datehook.mod + datehook_mod_SOURCES = hook/datehook.c + datehook_mod_CFLAGS = $(COMMON_CFLAGS) + datehook_mod_LDFLAGS = $(COMMON_LDFLAGS) + + # For lsmmap.mod + pkglib_MODULES += lsmmap.mod + lsmmap_mod_SOURCES = commands/lsmmap.c + lsmmap_mod_CFLAGS = $(COMMON_CFLAGS) + lsmmap_mod_LDFLAGS = $(COMMON_LDFLAGS) + + # For boot.mod. + pkglib_MODULES += boot.mod + boot_mod_SOURCES = commands/boot.c lib/i386/pc/biosnum.c + boot_mod_CFLAGS = $(COMMON_CFLAGS) + boot_mod_LDFLAGS = $(COMMON_LDFLAGS) + bin_UTILITIES += grub-mkpasswd-pbkdf2 - grub_mkpasswd_pbkdf2_SOURCES = gnulib/progname.c util/grub-mkpasswd-pbkdf2.c lib/crypto.c lib/libgcrypt-grub/cipher/sha512.c lib/pbkdf2.c util/misc.c kern/err.c + grub_mkpasswd_pbkdf2_SOURCES = gnulib/progname.c gnulib/getdelim.c gnulib/getline.c util/grub-mkpasswd-pbkdf2.c lib/crypto.c lib/libgcrypt-grub/cipher/sha512.c lib/pbkdf2.c util/misc.c util/mm.c kern/err.c grub_mkpasswd_pbkdf2_CFLAGS += -Wno-missing-field-initializers -Wno-error -I$(srcdir)/lib/libgcrypt_wrap -DGRUB_MKPASSWD=1 +# Randomly generated +SUCCESSFUL_BOOT_STRING=3e49994fd5d82b7c9298d672d774080d +BOOTCHECK_TIMEOUT=60 + +bootcheck: $(BOOTCHECKS) + include $(srcdir)/conf/gcry.mk diff --cc conf/i386-pc.rmk index 1c1ead332,4c55f28f6..801caba28 --- a/conf/i386-pc.rmk +++ b/conf/i386-pc.rmk @@@ -369,15 -291,5 +291,15 @@@ pkglib_DATA += efiemu32.o efiemu64. endif - BOOTTARGET=bios-cd ++BOOTTARGET=cd + +bootcheck-linux16-i386: linux-initramfs.i386 $(GRUB_PAYLOADS_DIR)/linux.i386 $(srcdir)/tests/boot/linux.cfg grub-shell + timeout -s KILL $(BOOTCHECK_TIMEOUT) ./grub-shell --boot=$(BOOTTARGET) --qemu=qemu-system-i386 --files=/initrd=linux-initramfs.i386 --files=/linux=$(GRUB_PAYLOADS_DIR)/linux.i386 $(srcdir)/tests/boot/linux16.cfg | grep $(SUCCESSFUL_BOOT_STRING) > /dev/null + +bootcheck-linux16-x86_64: linux-initramfs.x86_64 $(GRUB_PAYLOADS_DIR)/linux.x86_64 $(srcdir)/tests/boot/linux.cfg grub-shell + timeout -s KILL $(BOOTCHECK_TIMEOUT) ./grub-shell --boot=$(BOOTTARGET) --qemu=qemu-system-x86_64 --files=/initrd=linux-initramfs.x86_64 --files=/linux=$(GRUB_PAYLOADS_DIR)/linux.x86_64 $(srcdir)/tests/boot/linux16.cfg | grep $(SUCCESSFUL_BOOT_STRING) > /dev/null + +BOOTCHECKS+=bootcheck-linux16-i386 bootcheck-linux16-x86_64 + include $(srcdir)/conf/i386.mk include $(srcdir)/conf/common.mk diff --cc conf/i386.rmk index 829f82f1d,3d7f42804..a3f79dd43 --- a/conf/i386.rmk +++ b/conf/i386.rmk @@@ -48,40 -44,27 +44,64 @@@ multiboot2_mod_CFLAGS = $(COMMON_CFLAGS multiboot2_mod_LDFLAGS = $(COMMON_LDFLAGS) multiboot2_mod_ASFLAGS = $(COMMON_ASFLAGS) + # For serial.mod. + pkglib_MODULES += serial.mod + serial_mod_SOURCES = term/serial.c + serial_mod_CFLAGS = $(COMMON_CFLAGS) + serial_mod_LDFLAGS = $(COMMON_LDFLAGS) + + # For pci.mod + pkglib_MODULES += pci.mod + pci_mod_SOURCES = bus/pci.c + pci_mod_CFLAGS = $(COMMON_CFLAGS) + pci_mod_LDFLAGS = $(COMMON_LDFLAGS) + + # For lspci.mod + pkglib_MODULES += lspci.mod + lspci_mod_SOURCES = commands/lspci.c + lspci_mod_CFLAGS = $(COMMON_CFLAGS) + lspci_mod_LDFLAGS = $(COMMON_LDFLAGS) + + # For play.mod. + pkglib_MODULES += play.mod + play_mod_SOURCES = commands/i386/pc/play.c + play_mod_CFLAGS = $(COMMON_CFLAGS) + play_mod_LDFLAGS = $(COMMON_LDFLAGS) + +linux.init.x86_64: $(srcdir)/tests/boot/linux.init-x86_64.S + $(TARGET_CC) -o $@ $< -m64 -nostdlib -nostdinc -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\" + +linux.init.i386: $(srcdir)/tests/boot/linux.init-i386.S + $(TARGET_CC) -o $@ $< -m32 -nostdlib -nostdinc -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\" + +kfreebsd.init.x86_64: $(srcdir)/tests/boot/kfreebsd.init-x86_64.S + $(TARGET_CC) -o $@ $< -m64 -nostdlib -nostdinc -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\" && freebsd-brandelf -t FreeBSD $@ + +kfreebsd.init.i386: $(srcdir)/tests/boot/kfreebsd.init-i386.S + $(TARGET_CC) -o $@ $< -m32 -nostdlib -nostdinc -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\" && freebsd-brandelf -t FreeBSD $@ + +linux-initramfs.%: linux.init.% Makefile + TDIR=`mktemp -d`; cp $< $$TDIR/init; (cd $$TDIR; echo ./init | cpio --quiet --dereference -o -H newc) | gzip > $@; rm -rf $$TDIR + +kfreebsd-mfsroot.%: kfreebsd.init.% Makefile + TDIR=`mktemp -d`; mkdir $$TDIR/dev; mkdir $$TDIR/sbin; cp $< $$TDIR/sbin/init; makefs -t ffs -s 30m -f 1000 -o minfree=0,version=1 $@ $$TDIR; rm -rf $$TDIR + +CLEANFILES += linux.init.i386 kfreebsd.init.i386 linux.init.x86_64 linux-initramfs.i386 linux-initramfs.x86_64 + +bootcheck-kfreebsd-i386: kfreebsd-mfsroot.i386 $(GRUB_PAYLOADS_DIR)/kfreebsd.i386 $(GRUB_PAYLOADS_DIR)/kfreebsd_env.i386 $(srcdir)/tests/boot/kfreebsd.cfg grub-shell + timeout -s KILL $(BOOTCHECK_TIMEOUT) ./grub-shell --boot=$(BOOTTARGET) --qemu=qemu-system-i386 --files=/mfsroot=kfreebsd-mfsroot.i386 --files=/kfreebsd=$(GRUB_PAYLOADS_DIR)/kfreebsd.i386 --files=/kfreebsd_env=$(GRUB_PAYLOADS_DIR)/kfreebsd_env.i386 $(srcdir)/tests/boot/kfreebsd.cfg | grep $(SUCCESSFUL_BOOT_STRING) > /dev/null + +bootcheck-kfreebsd-x86_64: kfreebsd-mfsroot.x86_64 $(GRUB_PAYLOADS_DIR)/kfreebsd.x86_64 $(GRUB_PAYLOADS_DIR)/kfreebsd_env.x86_64 $(srcdir)/tests/boot/kfreebsd.cfg grub-shell + timeout -s KILL $(BOOTCHECK_TIMEOUT) ./grub-shell --boot=$(BOOTTARGET) --qemu=qemu-system-x86_64 --files=/mfsroot=kfreebsd-mfsroot.x86_64 --files=/kfreebsd=$(GRUB_PAYLOADS_DIR)/kfreebsd.x86_64 --files=/kfreebsd_env=$(GRUB_PAYLOADS_DIR)/kfreebsd_env.x86_64 $(srcdir)/tests/boot/kfreebsd.cfg | grep $(SUCCESSFUL_BOOT_STRING) > /dev/null + +bootcheck-linux-i386: linux-initramfs.i386 $(GRUB_PAYLOADS_DIR)/linux.i386 $(srcdir)/tests/boot/linux.cfg grub-shell + timeout -s KILL $(BOOTCHECK_TIMEOUT) ./grub-shell --boot=$(BOOTTARGET) --qemu=qemu-system-i386 --files=/initrd=linux-initramfs.i386 --files=/linux=$(GRUB_PAYLOADS_DIR)/linux.i386 $(srcdir)/tests/boot/linux.cfg | grep $(SUCCESSFUL_BOOT_STRING) > /dev/null + +bootcheck-linux-x86_64: linux-initramfs.x86_64 $(GRUB_PAYLOADS_DIR)/linux.x86_64 $(srcdir)/tests/boot/linux.cfg grub-shell + timeout -s KILL $(BOOTCHECK_TIMEOUT) ./grub-shell --boot=$(BOOTTARGET) --qemu=qemu-system-x86_64 --files=/initrd=linux-initramfs.x86_64 --files=/linux=$(GRUB_PAYLOADS_DIR)/linux.x86_64 $(srcdir)/tests/boot/linux.cfg | grep $(SUCCESSFUL_BOOT_STRING) > /dev/null + - BOOTCHECKS+=bootcheck-linux-i386 bootcheck-linux-x86_64 \ ++BOOTCHECKS += bootcheck-linux-i386 bootcheck-linux-x86_64 \ + bootcheck-kfreebsd-i386 bootcheck-kfreebsd-x86_64 + +.PHONY: bootcheck-linux-i386 bootcheck-linux-x86_64 \ + bootcheck-kfreebsd-i386 bootcheck-kfreebsd-x86_64 diff --cc tests/util/grub-shell.in index ee0cded55,a41a6f6f4..5726ec0d8 --- a/tests/util/grub-shell.in +++ b/tests/util/grub-shell.in @@@ -55,9 -53,6 +55,9 @@@ Report bugs to EOF } - boot=bios-hd ++boot=hd +qemu=qemu-system-i386 + # Check the arguments. for option in "$@"; do case "$option" in @@@ -80,9 -70,9 +80,9 @@@ qemuopts="$qemuopts $qs" ;; --boot=*) dev=`echo "$option" | sed -e 's/--boot=//'` - if [ "$dev" = "bios-fd" ] ; then boot=bios-fd; - elif [ "$dev" = "bios-hd" ] ; then boot=bios-hd; - elif [ "$dev" = "bios-cd" ] ; then boot=bios-cd; - if [ "$dev" = "fd" ] ; then bootdev=a; - elif [ "$dev" = "hd" ] ; then bootdev=c; - elif [ "$dev" = "cd" ] ; then bootdev=d; ++ if [ "$dev" = "fd" ] ; then boot=fd; ++ elif [ "$dev" = "hd" ] ; then boot=hd; ++ elif [ "$dev" = "cd" ] ; then boot=cd; else echo "Unrecognized boot method \`$dev'" 1>&2 usage @@@ -129,28 -123,23 +129,26 @@@ source /boot/grub/testcase.cf halt EOF - if [ x$boot = xbios-hd ] || [ x$boot = xbios-fd ] || [ x$boot = xbios-cd ]; then - isofile=`mktemp` - grub-mkrescue --output=${isofile} --override-directory=${builddir} \ - /boot/grub/grub.cfg=${cfgfile} /boot/grub/testcase.cfg=${source} \ - ${files} >/dev/null 2>&1 - if [ x$boot = xbios-hd ]; then - device=hda - bootdev=c - fi - if [ x$boot = xbios-cd ]; then - device=cdrom - bootdev=d - fi - if [ x$boot = xbios-fd ]; then - device=fda - bootdev=a - fi - ${qemu} ${qemuopts} -nographic -serial file:/dev/stdout -monitor file:/dev/null -${device} ${isofile} -boot ${bootdev} | tr -d "\r" - rm -f ${isofile} + isofile=`mktemp` + grub-mkrescue --output=${isofile} --override-directory=${builddir} \ - /boot/grub/grub.cfg=${cfgfile} /boot/grub/testcase.cfg=${source} \ - >/dev/null 2>&1 - -hdafile=`mktemp` -cp ${isofile} ${hdafile} - -fdafile=`mktemp` -cp ${isofile} ${fdafile} - -outfile=`mktemp` -qemu-system-i386 ${qemuopts} -nographic -hda ${hdafile} -fda ${fdafile} -cdrom ${isofile} -boot ${bootdev} | tr -d "\r" >${outfile} - -cat $outfile ++ /boot/grub/grub.cfg=${cfgfile} /boot/grub/testcase.cfg=${source} \ ++ ${files} >/dev/null 2>&1 ++if [ x$boot = xhd ]; then ++ device=hda ++ bootdev=c +fi ++if [ x$boot = xcd ]; then ++ device=cdrom ++ bootdev=d ++fi ++if [ x$boot = xfd ]; then ++ device=fda ++ bootdev=a ++fi ++${qemu} ${qemuopts} -nographic -serial file:/dev/stdout -monitor file:/dev/null -${device} ${isofile} -boot ${bootdev} | tr -d "\r" ++rm -f ${isofile} -rm -f ${tmpfile} ${outfile} ${cfgfile} ${isofile} ${hdafile} ${fdafile} +rm -f ${tmpfile} ${cfgfile} exit 0