=== added file 'ChangeLog.fixes' --- ChangeLog.fixes 1970-01-01 00:00:00 +0000 +++ ChangeLog.fixes 2010-05-23 14:40:00 +0000 @@ -0,0 +1,69 @@ +2010-05-23 Grégoire Sutre + + * util/grub-install.in: Save the basename of $0 in $self, and use the + latter in informational messages. Use the same format for --version + as the binary programs. + * util/grub-mkconfig.in: Likewise. + * util/grub-mkrescue.in: Likewise. + * util/grub-reboot.in: Likewise. + * util/grub-set-default.in: Likewise. + * util/i386/efi/grub-install.in: Likewise. + * util/ieee1275/grub-install.in: Likewise. + * util/powerpc/ieee1275/grub-mkrescue.in: Likewise. + +2010-05-22 Grégoire Sutre + + * configure.ac: Add `.' to the directories searched for unifont. + * util/grub-mkconfig_lib.in (prepare_grub_to_access_device): Load + partmap modules. + * util/grub.d/00_header.in: Extra sanity checks for locale support. + * util/grub.d/10_netbsd.in: Added a comment. + +2010-05-22 Grégoire Sutre + + * Makefile.in: apply file name transformation to .mo files. + * util/grub-install.in: Likewise. + * util/i386/efi/grub-install.in: Likewise. + +2010-05-21 Grégoire Sutre + + * util/grub-install.in: Remove the dependency on grub-mkconfig_lib. + * util/grub-mkconfig.in: New option --root-directory=DIR. + (GRUB_DIR): Export new variable. + * util/grub-mkconfig_lib.in: Let grub-probe use ${GRUB_DIR}/device.map. + * util/grub.d/00_header.in: Use GRUB_DIR passed by grub-mkconfig. + +2010-05-21 Grégoire Sutre + + * Makefile.in: Apply program name transformation to generated info file. + +2010-05-21 Grégoire Sutre + + * configure.ac: Set and subsitute pkgdatadir, pkglibrootdir and + defaultbootdir. + * Makefile.in: Use pkgdatadir, pkglibrootdir and defaultbootdir. + * util/grub-install.in: Likewise. + * util/grub-mkconfig.in: Likewise. + * util/grub-mkconfig_lib.in: Likewise. + * util/grub-mkrescue.in: Likewise. + * util/grub-reboot.in: Likewise. + * util/grub-set-default.in: Likewise. + * util/grub.d/00_header.in: Likewise. + * util/grub.d/10_hurd.in: Likewise. + * util/grub.d/10_kfreebsd.in: Likewise. + * util/grub.d/10_linux.in: Likewise. + * util/grub.d/10_netbsd.in: Likewise. + * util/grub.d/10_windows.in: Likewise. + * util/grub.d/30_os-prober.in: Likewise. + * util/i386/efi/grub-install.in: Likewise. + * util/ieee1275/grub-install.in: Likewise. + * util/powerpc/ieee1275/grub-mkrescue.in: Likewise. + * util/update-grub_lib.in: Likewise. + +2010-05-19 Grégoire Sutre + + * Makefile.in: Use installed files on help2man command line. + * util/grub-mkimage.c (main): Use `program_name' instead of + hardcoded string. + * util/i386/pc/grub-setup.c (main): Likewise. + * util/sparc64/ieee1275/grub-setup.c (parse_options): Likewise. === modified file 'Makefile.in' --- Makefile.in 2010-05-18 11:55:26 +0000 +++ Makefile.in 2010-05-22 00:31:13 +0000 @@ -39,8 +39,9 @@ localedir = @localedir@ infodir = @infodir@ mandir = @mandir@ includedir = @includedir@ -pkgdatadir = $(datadir)/`echo @PACKAGE_TARNAME@ | sed '$(transform)'` -pkglibdir = $(libdir)/`echo @PACKAGE_TARNAME@/$(target_cpu)-$(platform) | sed '$(transform)'` +pkgdatadir = @pkgdatadir@ +pkglibrootdir = @pkglibrootdir@ +pkglibdir = $(pkglibrootdir)/$(target_cpu)-$(platform) # Internationalization library. LIBINTL = @LIBINTL@ @@ -90,7 +91,7 @@ GNULIB_CFLAGS = $(GNULIB_UTIL_CFLAGS) $( ASFLAGS = @ASFLAGS@ LDFLAGS = @LDFLAGS@ $(LIBS) CPPFLAGS = @CPPFLAGS@ -I$(builddir) -I$(builddir)/include -I$(srcdir)/gnulib -I$(srcdir)/include -Wall -W \ - -DGRUB_PKGLIBROOTDIR=\"$(libdir)/`echo @PACKAGE_TARNAME@ | sed '$(transform)'`\" -DLOCALEDIR=\"$(localedir)\" + -DGRUB_PKGLIBROOTDIR=\"$(pkglibrootdir)\" -DLOCALEDIR=\"$(localedir)\" TARGET_CC = @TARGET_CC@ TARGET_CFLAGS = -ffreestanding @TARGET_CFLAGS@ TARGET_ASFLAGS = -nostdinc -fno-builtin @TARGET_ASFLAGS@ @@ -323,26 +324,26 @@ install-local: all if test -f "$$file"; then dir=; else dir="$(srcdir)/"; fi; \ dest="`echo $$file | sed 's,.*/,,' | sed '$(transform)'`"; \ $(INSTALL_PROGRAM) $$dir$$file $(DESTDIR)$(bindir)/$$dest; \ - $(HELP2MAN) --section=1 -o $(DESTDIR)$(mandir)/man1/$$dest.1 $(builddir)/$$file; \ + $(HELP2MAN) --section=1 -o $(DESTDIR)$(mandir)/man1/$$dest.1 $(DESTDIR)$(bindir)/$$dest; \ done $(SHELL) $(mkinstalldirs) $(DESTDIR)$(sbindir) $(DESTDIR)$(mandir)/man8 @list='$(sbin_UTILITIES)'; for file in $$list; do \ if test -f "$$file"; then dir=; else dir="$(srcdir)/"; fi; \ dest="`echo $$file | sed 's,.*/,,' | sed '$(transform)'`"; \ $(INSTALL_PROGRAM) $$dir$$file $(DESTDIR)$(sbindir)/$$dest; \ - $(HELP2MAN) --section=8 -o $(DESTDIR)$(mandir)/man8/$$dest.8 $(builddir)/$$file; \ + $(HELP2MAN) --section=8 -o $(DESTDIR)$(mandir)/man8/$$dest.8 $(DESTDIR)$(sbindir)/$$dest; \ done @list='$(bin_SCRIPTS)'; for file in $$list; do \ if test -f "$$file"; then dir=; else dir="$(srcdir)/"; fi; \ dest="`echo $$file | sed 's,.*/,,' | sed '$(transform)'`"; \ $(INSTALL_SCRIPT) $$dir$$file $(DESTDIR)$(bindir)/$$dest; \ - $(HELP2MAN) --section=1 -o $(DESTDIR)$(mandir)/man1/$$dest.1 $(builddir)/$$file; \ + $(HELP2MAN) --section=1 -o $(DESTDIR)$(mandir)/man1/$$dest.1 $(DESTDIR)$(bindir)/$$dest; \ done @list='$(sbin_SCRIPTS)'; for file in $$list; do \ if test -f "$$file"; then dir=; else dir="$(srcdir)/"; fi; \ dest="`echo $$file | sed 's,.*/,,' | sed '$(transform)'`"; \ $(INSTALL_SCRIPT) $$dir$$file $(DESTDIR)$(sbindir)/$$dest; \ - $(HELP2MAN) --section=8 -o $(DESTDIR)$(mandir)/man8/$$dest.8 $(builddir)/$$file; \ + $(HELP2MAN) --section=8 -o $(DESTDIR)$(mandir)/man8/$$dest.8 $(DESTDIR)$(sbindir)/$$dest; \ done $(SHELL) $(mkinstalldirs) $(DESTDIR)$(sysconfdir)/grub.d @list='$(grub-mkconfig_SCRIPTS)'; for file in $$list; do \ @@ -355,26 +356,27 @@ install-local: all dest="`echo $$file | sed 's,.*/,,' | sed '$(transform)'`"; \ $(INSTALL_DATA) $$dir$$file $(DESTDIR)$(sysconfdir)/grub.d/$$dest; \ done - $(SHELL) $(mkinstalldirs) $(DESTDIR)$(libdir)/grub + $(SHELL) $(mkinstalldirs) $(DESTDIR)$(pkglibrootdir) @list='$(lib_SCRIPTS)'; \ for file in $$list; do \ if test -f "$$file"; then dir=; else dir="$(srcdir)/"; fi; \ dest="`echo $$file | sed 's,.*/,,'`"; \ - $(INSTALL_DATA) $$dir$$file $(DESTDIR)$(libdir)/grub/$$dest; \ + $(INSTALL_DATA) $$dir$$file $(DESTDIR)$(pkglibrootdir)/$$dest; \ done @langs='$(LINGUAS)'; \ for lang in $$langs; do \ - $(SHELL) $(mkinstalldirs) $(DESTDIR)/$(datadir)/locale/$$lang/LC_MESSAGES; \ + $(SHELL) $(mkinstalldirs) $(DESTDIR)$(datadir)/locale/$$lang/LC_MESSAGES; \ file="po/$$lang.mo"; \ if test -f "$$file"; then dir=; else dir="$(srcdir)/"; fi; \ - $(INSTALL_DATA) $$dir$$file $(DESTDIR)/$(datadir)/locale/$$lang/LC_MESSAGES/$(PACKAGE).mo; \ + dest="`echo $(PACKAGE).mo | sed 's,.*/,,' | sed '$(transform)'`"; \ + $(INSTALL_DATA) $$dir$$file $(DESTDIR)$(datadir)/locale/$$lang/LC_MESSAGES/$$dest; \ done $(SHELL) $(mkinstalldirs) $(DESTDIR)$(infodir) @list='$(info_INFOS)'; \ for file in $$list; do \ if test -f "$$file"; then dir=; else dir="$(srcdir)/"; fi; \ - dest="`echo $$file | sed 's,.*/,,'`"; \ - $(INSTALL_DATA) $$dir$$file $(DESTDIR)$(infodir); \ + dest="`echo $$file | sed 's,.*/,,' | sed '$(transform)'`"; \ + $(INSTALL_DATA) $$dir$$file $(DESTDIR)$(infodir)/$$dest; \ if (install-info --version && \ install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \ install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$dest" || :; \ @@ -412,11 +414,11 @@ uninstall: @list='$(lib_SCRIPTS)'; \ for file in $$list; do \ dest="`echo $$file | sed 's,.*/,,'`"; \ - rm -f $(DESTDIR)$(libdir)/grub/$$dest; \ + rm -f $(DESTDIR)$(pkglibrootdir)/$$dest; \ done @list='$(info_INFOS)'; \ for file in $$list; do \ - dest="`echo $$file | sed 's,.*/,,'`"; \ + dest="`echo $$file | sed 's,.*/,,' | sed '$(transform)'`"; \ if (install-info --version && \ install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \ if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$dest"; then \ === modified file 'configure.ac' --- configure.ac 2010-05-18 11:33:35 +0000 +++ configure.ac 2010-05-22 14:16:39 +0000 @@ -179,11 +179,13 @@ if test "x$YACC" = x; then AC_MSG_ERROR([bison is not found]) fi -for file in /usr/src/unifont.bdf /usr/share/fonts/X11/misc/unifont.pcf.gz /usr/share/fonts/unifont/unifont.pcf.gz; do - if test -e $file ; then - AC_SUBST([FONT_SOURCE], [$file]) - break - fi +for ext in pcf pcf.gz bdf bdf.gz ttf ttf.gz; do + for dir in . /usr/src /usr/share/fonts/X11/misc /usr/share/fonts/unifont; do + if test -f "$dir/unifont.$ext"; then + AC_SUBST([FONT_SOURCE], [$dir/unifont.$ext]) + break 2 + fi + done done AC_PROG_INSTALL @@ -798,6 +800,27 @@ fi AC_SUBST(ASFLAGS) +# Additional names and paths to be substituted in makefiles and scripts. +pkgdatadir=${datadir}/`echo ${PACKAGE_TARNAME} | sed "${program_transform_name}"` +pkglibrootdir=${libdir}/`echo ${PACKAGE_TARNAME} | sed "${program_transform_name}"` + +case "$host_os" in +netbsd* | openbsd*) + # Because /boot is used for the boot block in NetBSD and OpenBSD, use /grub + # instead of /boot/grub. + defaultbootdir= + ;; +*) + # Use /boot/grub by default. + defaultbootdir=/boot + ;; +esac +defaultbootdir=${defaultbootdir}/`echo ${PACKAGE_TARNAME} | sed "${program_transform_name}"` + +AC_SUBST([pkgdatadir]) +AC_SUBST([pkglibrootdir]) +AC_SUBST([defaultbootdir]) + # Output files. grub_CHECK_LINK_DIR if test x"$link_dir" = xyes ; then === added directory 'util/elf' === modified file 'util/grub-install.in' --- util/grub-install.in 2010-05-18 11:45:25 +0000 +++ util/grub-install.in 2010-05-24 13:58:09 +0000 @@ -24,23 +24,28 @@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ address@hidden@/@PACKAGE_TARNAME@/ascii.pf2 -pkglibdir=${libdir}/`echo ${PACKAGE_TARNAME}/${target_cpu}-${platform} | sed ${transform}` address@hidden@ +pkglibdir=${pkglibrootdir}/${target_cpu}-${platform} address@hidden@/locale address@hidden@ + +self=`basename $0` grub_setup=${sbindir}/`echo grub-setup | sed ${transform}` grub_mkimage=${bindir}/`echo grub-mkimage | sed ${transform}` grub_mkdevicemap=${sbindir}/`echo grub-mkdevicemap | sed ${transform}` +grub_mkrelpath=${bindir}/`echo grub-mkrelpath | sed ${transform}` grub_probe=${sbindir}/`echo grub-probe | sed ${transform}` grub_editenv=${bindir}/`echo grub-editenv | sed ${transform}` +grub_mofile=`echo ${PACKAGE}.mo | sed ${transform}` rootdir= -grub_prefix=`echo /boot/grub | sed ${transform}` modules= install_device= @@ -61,7 +66,7 @@ fi # Print the usage. usage () { cat <. EOF @@ -108,7 +111,7 @@ for option in "$@"; do usage exit 0 ;; -v | --version) - echo "grub-install (GNU GRUB ${PACKAGE_VERSION})" + echo "$self (${PACKAGE_NAME}) ${PACKAGE_VERSION}" exit 0 ;; --modules=*) modules=`echo "$option" | sed 's/--modules=//'` ;; @@ -152,9 +155,6 @@ for option in "$@"; do esac done -# for make_system_path_relative_to_its_root() -. ${libdir}/grub/grub-mkconfig_lib - if test "x$install_device" = x && test "${target_cpu}-${platform}" != "mips-yeeloong"; then echo "install_device not specified." 1>&2 usage @@ -169,20 +169,7 @@ if test $debug = yes; then fi # Initialize these directories here, since ROOTDIR was initialized. -case "$host_os" in -netbsd* | openbsd*) - # Because /boot is used for the boot block in NetBSD and OpenBSD, use /grub - # instead of /boot/grub. - grub_prefix=`echo /grub | sed ${transform}` - bootdir=${rootdir} - ;; -*) - # Use /boot/grub by default. - bootdir=${rootdir}/boot - ;; -esac - -grubdir=${bootdir}/`echo grub | sed ${transform}` +grubdir=${rootdir}${defaultbootdir} device_map=${grubdir}/device.map grub_probe="${grub_probe} --device-map=${device_map}" @@ -190,7 +177,7 @@ grub_probe="${grub_probe} --device-map=$ # Check if GRUB is installed. if [ "${target_cpu}-${platform}" = "i386-pc" ] || [ "${target_cpu}-${platform}" = "sparc64-ieee1275" ] ; then set $grub_setup dummy - if test -f "$1"; then + if test -x "$1"; then : else echo "$1: Not found." 1>&2 @@ -198,21 +185,15 @@ if [ "${target_cpu}-${platform}" = "i386 fi fi -set $grub_mkimage dummy -if test -f "$1"; then - : -else - echo "$1: Not found." 1>&2 - exit 1 -fi - -set $grub_mkdevicemap dummy -if test -f "$1"; then - : -else - echo "$1: Not found." 1>&2 - exit 1 -fi +for prog in mkimage mkdevicemap mkrelpath probe; do + eval set \$grub_$prog dummy + if test -x "$1"; then + : + else + echo "$1: Not found." 1>&2 + exit 1 + fi +done # Create the GRUB directory if it is not present. mkdir -p "$grubdir" || exit 1 @@ -260,8 +241,8 @@ fi # Copy gettext files mkdir -p ${grubdir}/locale/ for dir in ${localedir}/*; do - if test -f "$dir/LC_MESSAGES/grub.mo"; then - cp -f "$dir/LC_MESSAGES/grub.mo" "${grubdir}/locale/${dir##*/}.mo" + if test -f "$dir/LC_MESSAGES/${grub_mofile}"; then + cp -f "$dir/LC_MESSAGES/${grub_mofile}" "${grubdir}/locale/${dir##*/}.mo" fi done @@ -295,7 +276,7 @@ devabstraction_module=`$grub_probe --tar modules="$modules $disk_module" modules="$modules $fs_module $partmap_module $devabstraction_module" -relative_grubdir=`make_system_path_relative_to_its_root ${grubdir}` || exit 1 +relative_grubdir=`$grub_mkrelpath ${grubdir}` || exit 1 if [ "x${relative_grubdir}" = "x" ] ; then relative_grubdir=/ fi @@ -356,8 +337,10 @@ if [ "${target_cpu}-${platform}" = "i386 $grub_setup ${setup_verbose} ${setup_force} --directory=${grubdir} --device-map=${device_map} \ ${install_device} || exit 1 elif [ "${target_cpu}-${platform}" = "mips-yeeloong" ] ; then + # XXX hard-coded /boot (use ${grubdir} or ${defaultbootdir} ?) $grub_mkimage ${config_opt} -f ${font} -d ${pkglibdir} -O ${mkimage_target} --output=/boot/grub.elf --prefix=${prefix_drive}${relative_grubdir} $modules || exit 1 else + # XXX hard-coded /boot (use ${grubdir} or ${defaultbootdir} ?) $grub_mkimage -O ${mkimage_target} ${config_opt} -d ${pkglibdir} --output=/boot/multiboot.img --prefix=${prefix_drive}${relative_grubdir} $modules || exit 1 fi === modified file 'util/grub-mkconfig.in' --- util/grub-mkconfig.in 2010-05-23 12:11:11 +0000 +++ util/grub-mkconfig.in 2010-05-24 13:58:00 +0000 @@ -23,27 +23,34 @@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ -pkgdatadir=${datadir}/`echo @PACKAGE_TARNAME@ | sed "${transform}"` address@hidden@ address@hidden@ address@hidden@ grub_cfg="" grub_mkconfig_dir=${sysconfdir}/grub.d +self=`basename $0` + grub_mkdevicemap=${sbindir}/`echo grub-mkdevicemap | sed ${transform}` grub_probe=${sbindir}/`echo grub-probe | sed ${transform}` +rootdir= # Usage: usage # Print the usage. usage () { cat <. EOF @@ -62,8 +69,10 @@ for option in "$@"; do usage exit 0 ;; -v | --version) - echo "$0 (GNU GRUB ${package_version})" + echo "$self (${PACKAGE_NAME}) ${PACKAGE_VERSION}" exit 0 ;; + --root-directory=*) + rootdir=`echo "$option" | sed 's/--root-directory=//'` ;; -o) next_grub_cfg=: ;; @@ -83,19 +92,28 @@ if $next_grub_cfg; then exit 1 fi -. ${libdir}/grub/grub-mkconfig_lib +# Check if GRUB is installed. +for prog in mkdevicemap probe; do + eval set \$grub_$prog dummy + if test -x "$1"; then + : + else + echo "$1: Not found." 1>&2 + exit 1 + fi +done + +GRUB_DIR=${rootdir}${defaultbootdir} -case "$host_os" in -netbsd* | openbsd*) - # Because /boot is used for the boot block in NetBSD and OpenBSD, use /grub - # instead of /boot/grub. - grub_prefix=`echo /grub | sed ${transform}` - ;; -*) - # Use /boot/grub by default. - grub_prefix=`echo /boot/grub | sed ${transform}` - ;; -esac +# Create the GRUB directory if it is not present. +mkdir -p ${GRUB_DIR} || exit 1 + +# This must be done before sourcing grub-mkconfig_lib. +if test -e ${GRUB_DIR}/device.map ; then : ; else + ${grub_mkdevicemap} --device-map=${GRUB_DIR}/device.map +fi + +. ${pkglibrootdir}/grub-mkconfig_lib if [ "x$EUID" = "x" ] ; then EUID=`id -u` @@ -113,33 +131,11 @@ if [ "$EUID" != 0 ] ; then done ;; esac if [ $root != t ] ; then - echo "$0: You must run this as root" >&2 + echo "$self: You must run this as root" >&2 exit 1 fi fi -set $grub_mkdevicemap dummy -if test -f "$1"; then - : -else - echo "$1: Not found." 1>&2 - exit 1 -fi - -set $grub_probe dummy -if test -f "$1"; then - : -else - echo "$1: Not found." 1>&2 - exit 1 -fi - -mkdir -p ${grub_prefix} - -if test -e ${grub_prefix}/device.map ; then : ; else - ${grub_mkdevicemap} -fi - # Device containing our userland. Typically used for root= parameter. GRUB_DEVICE="`${grub_probe} --target=device /`" GRUB_DEVICE_UUID="`${grub_probe} --device ${GRUB_DEVICE} --target=fs_uuid 2> /dev/null`" || true @@ -171,7 +167,7 @@ fi for x in ${GRUB_TERMINAL_OUTPUT}; do if [ "x${x}" = "xgfxterm" ]; then # If this platform supports gfxterm, try to use it. - if ! test -e ${grub_prefix}/gfxterm.mod ; then + if ! test -e ${GRUB_DIR}/gfxterm.mod ; then if [ "x$termoutdefault" != "x1" ]; then echo "gfxterm isn't available on your platform" >&2 ; exit 1 fi @@ -180,7 +176,7 @@ for x in ${GRUB_TERMINAL_OUTPUT}; do fi # FIXME: this should do something smarter than just loading first # video backend. - GRUB_VIDEO_BACKEND=$(head -n 1 ${grub_prefix}/video.lst || true) + GRUB_VIDEO_BACKEND=$(head -n 1 ${GRUB_DIR}/video.lst || true) if [ -z "${GRUB_VIDEO_BACKEND}" ] ; then if [ "x$termoutdefault" != "x1" ]; then echo "No suitable backend could be found for gfxterm." >&2 ; exit 1 @@ -195,7 +191,7 @@ for x in ${GRUB_TERMINAL_OUTPUT}; do exit 1 fi else - for dir in ${pkgdatadir} /boot/grub /usr/share/grub ; do + for dir in ${GRUB_DIR} ${pkgdatadir} /boot/grub /usr/share/grub ; do for basename in unicode unifont ascii; do path="${dir}/${basename}.pf2" if is_path_readable_by_grub ${path} > /dev/null ; then @@ -236,6 +232,7 @@ export GRUB_DEVICE \ GRUB_DEVICE_UUID \ GRUB_DEVICE_BOOT \ GRUB_DEVICE_BOOT_UUID \ + GRUB_DIR \ GRUB_FS \ GRUB_FONT_PATH \ GRUB_PRELOAD_MODULES \ @@ -278,13 +275,13 @@ if test "x${grub_cfg}" != "x"; then chmod 400 ${grub_cfg}.new || grub_warn "Could not make ${grub_cfg}.new readable by only root.\ This means that if the generated config contains a password it is readable by everyone" fi -echo "Generating grub.cfg ..." >&2 +echo "Generating grub configuration ..." >&2 cat << EOF # # DO NOT EDIT THIS FILE # -# It is automatically generated by $0 using templates +# It is automatically generated by $self using templates # from ${grub_mkconfig_dir} and settings from ${sysconfdir}/default/grub # EOF === modified file 'util/grub-mkconfig_lib.in' --- util/grub-mkconfig_lib.in 2010-05-01 19:39:32 +0000 +++ util/grub-mkconfig_lib.in 2010-05-22 23:16:57 +0000 @@ -22,7 +22,7 @@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ -pkgdatadir=${datadir}/`echo @PACKAGE_TARNAME@ | sed "${transform}"` address@hidden@ if test "x$grub_probe" = x; then grub_probe=${sbindir}/`echo grub-probe | sed ${transform}` @@ -31,6 +31,13 @@ if test "x$grub_mkrelpath" = x; then grub_mkrelpath=${bindir}/`echo grub-mkrelpath | sed ${transform}` fi +# GRUB_DIR should be set before sourcing this file, but let's be safe. +if test "x${GRUB_DIR}" != "x"; then + if test -e "${GRUB_DIR}/device.map"; then + grub_probe="${grub_probe} --device-map=${GRUB_DIR}/device.map" + fi +fi + if $(which gettext >/dev/null 2>/dev/null) ; then gettext="gettext" else @@ -105,6 +112,11 @@ prepare_grub_to_access_device () echo "insmod ${module}" done + partmap="`${grub_probe} --device ${device} --target=partmap`" + for module in ${partmap} ; do + echo "insmod part_${module}" + done + fs="`${grub_probe} --device ${device} --target=fs`" for module in ${fs} ; do echo "insmod ${module}" === modified file 'util/grub-mkimage.c' --- util/grub-mkimage.c 2010-05-18 11:55:26 +0000 +++ util/grub-mkimage.c 2010-05-19 21:06:18 +0000 @@ -1307,7 +1307,7 @@ main (int argc, char *argv[]) break; case 'V': - printf ("grub-mkimage (%s) %s\n", PACKAGE_NAME, PACKAGE_VERSION); + printf ("%s (%s) %s\n", program_name, PACKAGE_NAME, PACKAGE_VERSION); return 0; case 'v': === modified file 'util/grub-mkrescue.in' --- util/grub-mkrescue.in 2010-05-18 12:21:15 +0000 +++ util/grub-mkrescue.in 2010-05-24 12:03:08 +0000 @@ -28,14 +28,17 @@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ pkglib_DATA="@pkglib_DATA@" -multiboot_dir=${libdir}/$(echo ${PACKAGE_TARNAME} | sed ${transform})/i386-multiboot -coreboot_dir=${libdir}/$(echo ${PACKAGE_TARNAME} | sed ${transform})/i386-coreboot -qemu_dir=${libdir}/$(echo ${PACKAGE_TARNAME} | sed ${transform})/i386-qemu -pc_dir=${libdir}/$(echo ${PACKAGE_TARNAME} | sed ${transform})/i386-pc -efi32_dir=${libdir}/$(echo ${PACKAGE_TARNAME} | sed ${transform})/i386-efi -efi64_dir=${libdir}/$(echo ${PACKAGE_TARNAME} | sed ${transform})/x86_64-efi +self=`basename $0` + +multiboot_dir=${pkglibrootdir}/i386-multiboot +coreboot_dir=${pkglibrootdir}/i386-coreboot +qemu_dir=${pkglibrootdir}/i386-qemu +pc_dir=${pkglibrootdir}/i386-pc +efi32_dir=${pkglibrootdir}/i386-efi +efi64_dir=${pkglibrootdir}/x86_64-efi rom_directory= grub_mkimage=${bindir}/`echo grub-mkimage | sed ${transform}` @@ -43,7 +46,7 @@ grub_mkimage=${bindir}/`echo grub-mkimag # Print the usage. usage () { cat <. EOF @@ -66,7 +69,7 @@ for option in "$@"; do usage exit 0 ;; -v | --version) - echo "$0 (GNU GRUB ${PACKAGE_VERSION})" + echo "$self (${PACKAGE_NAME}) ${PACKAGE_VERSION}" exit 0 ;; --modules=*) modules=`echo "$option" | sed 's/--modules=//'` ;; @@ -99,7 +102,7 @@ if [ "x${output_image}" = x ] ; then fi set $grub_mkimage dummy -if test -f "$1"; then +if test -x "$1"; then : else echo "$1: Not found." 1>&2 === modified file 'util/grub-reboot.in' --- util/grub-reboot.in 2010-01-05 11:16:42 +0000 +++ util/grub-reboot.in 2010-05-23 14:36:37 +0000 @@ -22,6 +22,11 @@ transform="@program_transform_name@" address@hidden@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ + +self=`basename $0` grub_editenv=${bindir}/`echo grub-editenv | sed ${transform}` rootdir= @@ -30,7 +35,7 @@ rootdir= # Print the usage. usage () { cat <&2 ; exit 1 fi @@ -195,7 +195,7 @@ EOF esac # Gettext variables and module -if [ "x${LANG}" != "xC" ] ; then +if [ "x${LANG}" != "x" ] && [ "x${LANG}" != "xC" ] && [ -d "${locale_dir}" ] ; then prepare_grub_to_access_device $(${grub_probe} --target=device ${locale_dir}) cat << EOF set locale_dir=(\$root)$(make_system_path_relative_to_its_root ${locale_dir}) === modified file 'util/grub.d/10_hurd.in' --- util/grub.d/10_hurd.in 2010-05-18 18:10:37 +0000 +++ util/grub.d/10_hurd.in 2010-05-21 13:44:06 +0000 @@ -18,8 +18,9 @@ address@hidden@ address@hidden@ address@hidden@ -. ${libdir}/grub/grub-mkconfig_lib address@hidden@ + +. ${pkglibrootdir}/grub-mkconfig_lib CLASS="--class gnu --class os" === modified file 'util/grub.d/10_kfreebsd.in' --- util/grub.d/10_kfreebsd.in 2010-04-14 12:59:58 +0000 +++ util/grub.d/10_kfreebsd.in 2010-05-21 13:43:53 +0000 @@ -19,8 +19,9 @@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ -. ${libdir}/grub/grub-mkconfig_lib address@hidden@ + +. ${pkglibrootdir}/grub-mkconfig_lib export address@hidden@ export address@hidden@ === modified file 'util/grub.d/10_linux.in' --- util/grub.d/10_linux.in 2010-04-14 12:59:58 +0000 +++ util/grub.d/10_linux.in 2010-05-21 13:43:42 +0000 @@ -19,8 +19,9 @@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ -. ${libdir}/grub/grub-mkconfig_lib address@hidden@ + +. ${pkglibrootdir}/grub-mkconfig_lib export address@hidden@ export address@hidden@ === modified file 'util/grub.d/10_netbsd.in' --- util/grub.d/10_netbsd.in 2010-04-19 19:25:41 +0000 +++ util/grub.d/10_netbsd.in 2010-05-22 23:18:51 +0000 @@ -19,8 +19,9 @@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ -. ${libdir}/grub/grub-mkconfig_lib address@hidden@ + +. ${pkglibrootdir}/grub-mkconfig_lib export address@hidden@ export address@hidden@ @@ -61,6 +62,7 @@ netbsd_entry () printf "}\n" } +# Cache the sequence of commands to access / (whose device is ${GRUB_DEVICE}). prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE} | sed -e 's,^, ,')" # We look for NetBSD kernels in / but not in subdirectories. We simply === modified file 'util/grub.d/10_windows.in' --- util/grub.d/10_windows.in 2010-05-18 19:58:49 +0000 +++ util/grub.d/10_windows.in 2010-05-21 13:43:14 +0000 @@ -18,8 +18,9 @@ address@hidden@ address@hidden@ address@hidden@ -. ${libdir}/grub/grub-mkconfig_lib address@hidden@ + +. ${pkglibrootdir}/grub-mkconfig_lib case "`uname 2>/dev/null`" in CYGWIN*) ;; === modified file 'util/grub.d/30_os-prober.in' --- util/grub.d/30_os-prober.in 2010-02-03 00:24:07 +0000 +++ util/grub.d/30_os-prober.in 2010-05-23 13:42:20 +0000 @@ -18,9 +18,9 @@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ -. ${libdir}/grub/grub-mkconfig_lib +. ${pkglibrootdir}/grub-mkconfig_lib if [ "x${GRUB_DISABLE_OS_PROBER}" = "xtrue" ]; then exit 0 === modified file 'util/i386/efi/grub-install.in' --- util/i386/efi/grub-install.in 2010-04-26 19:27:41 +0000 +++ util/i386/efi/grub-install.in 2010-05-23 14:34:05 +0000 @@ -24,21 +24,25 @@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ -pkglibdir=${libdir}/`echo ${PACKAGE_TARNAME}/${target_cpu}-${platform} | sed ${transform}` address@hidden@ +pkglibdir=${pkglibrootdir}/${target_cpu}-${platform} address@hidden@/locale address@hidden@ + +self=`basename $0` grub_mkimage=${bindir}/`echo grub-mkimage | sed ${transform}` grub_mkdevicemap=${sbindir}/`echo grub-mkdevicemap | sed ${transform}` grub_probe=${sbindir}/`echo grub-probe | sed ${transform}` grub_editenv=${bindir}/`echo grub-editenv | sed ${transform}` +grub_mofile=`echo ${PACKAGE}.mo | sed ${transform}` rootdir= -grub_prefix=`echo /boot/grub | sed ${transform}` modules= no_floppy= @@ -50,7 +54,7 @@ debug=no # Print the usage. usage () { cat <. @@ -78,7 +82,7 @@ for option in "$@"; do usage exit 0 ;; -v | --version) - echo "grub-install (GNU GRUB ${PACKAGE_VERSION})" + echo "$self (${PACKAGE_NAME}) ${PACKAGE_VERSION}" exit 0 ;; --modules=*) modules=`echo "$option" | sed 's/--modules=//'` ;; @@ -111,38 +115,19 @@ if test $debug = yes; then fi # Initialize these directories here, since ROOTDIR was initialized. -case "$host_os" in -netbsd* | openbsd*) - # Because /boot is used for the boot block in NetBSD and OpenBSD, use /grub - # instead of /boot/grub. - grub_prefix=`echo /grub | sed ${transform}` - bootdir=${rootdir} - ;; -*) - # Use /boot/grub by default. - bootdir=${rootdir}/boot - ;; -esac - -grubdir=${bootdir}/`echo grub | sed ${transform}` +grubdir=${rootdir}${defaultbootdir} device_map=${grubdir}/device.map # Check if GRUB is installed. -set $grub_mkimage dummy -if test -f "$1"; then - : -else - echo "$1: Not found." 1>&2 - exit 1 -fi - -set $grub_mkdevicemap dummy -if test -f "$1"; then - : -else - echo "$1: Not found." 1>&2 - exit 1 -fi +for prog in mkimage mkdevicemap probe; do + eval set \$grub_$prog dummy + if test -x "$1"; then + : + else + echo "$1: Not found." 1>&2 + exit 1 + fi +done # Create the GRUB directory if it is not present. mkdir -p "$grubdir" || exit 1 @@ -183,8 +168,8 @@ done # Copy gettext files mkdir -p ${grubdir}/locale/ for dir in ${localedir}/*; do - if test -f "$dir/LC_MESSAGES/grub.mo"; then - cp -f "$dir/LC_MESSAGES/grub.mo" "${grubdir}/locale/${dir##*/}.mo" + if test -f "$dir/LC_MESSAGES/${grub_mofile}"; then + cp -f "$dir/LC_MESSAGES/${grub_mofile}" "${grubdir}/locale/${dir##*/}.mo" fi done @@ -219,7 +204,7 @@ $grub_mkimage -O ${target_cpu}-efi --out echo "Installation finished. No error reported." echo "This is the contents of the device map $device_map." echo "Check if this is correct or not. If any of the lines is incorrect," -echo "fix it and re-run the script \`grub-install'." +echo "fix it and re-run the script \`$self'." echo cat $device_map === modified file 'util/i386/pc/grub-setup.c' --- util/i386/pc/grub-setup.c 2010-05-17 19:26:16 +0000 +++ util/i386/pc/grub-setup.c 2010-05-19 21:03:21 +0000 @@ -702,7 +702,7 @@ main (int argc, char *argv[]) break; case 'V': - printf ("grub-setup (%s) %s\n", PACKAGE_NAME, PACKAGE_VERSION); + printf ("%s (%s) %s\n", program_name, PACKAGE_NAME, PACKAGE_VERSION); return 0; case 'v': === modified file 'util/ieee1275/grub-install.in' --- util/ieee1275/grub-install.in 2010-04-26 19:27:41 +0000 +++ util/ieee1275/grub-install.in 2010-05-24 12:02:20 +0000 @@ -32,14 +32,17 @@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ -pkglibdir=${libdir}/`echo ${PACKAGE_TARNAME}/${target_cpu}-${platform} | sed ${transform}` address@hidden@ +pkglibdir=${pkglibrootdir}/${target_cpu}-${platform} address@hidden@ + +self=`basename $0` grub_mkimage=${bindir}/`echo grub-mkimage | sed ${transform}` grub_mkdevicemap=${sbindir}/`echo grub-mkdevicemap | sed ${transform}` grub_probe=${sbindir}/`echo grub-probe | sed ${transform}` grub_editenv=${bindir}/`echo grub-editenv | sed ${transform}` rootdir= -grub_prefix=`echo /boot/grub | sed ${transform}` modules= install_device= @@ -53,7 +56,7 @@ nvsetenv=`which nvsetenv` # Print the usage. usage () { cat <&2 - exit 1 -fi +# Check if GRUB is installed. +for prog in mkimage mkdevicemap probe; do + eval set \$grub_$prog dummy + if test -x "$1"; then + : + else + echo "$1: Not found." 1>&2 + exit 1 + fi +done # Find the partition at the right mount point. install_device=`$grub_mkdevicemap --device-map=/dev/stdout | $grub_probe --target=device --device-map=/dev/stdin ${grubdir}` -if test "x$install_device" = "x`$grub_mkdevicemap --device-map=/dev/stdout | $grub_probe --target=device --device-map=/dev/stdin ${bootdir}`"; then +if test "x$install_device" = "x`$grub_mkdevicemap --device-map=/dev/stdout | $grub_probe --target=device --device-map=/dev/stdin ${grubdir}/..`"; then echo "$grubdir must be a mount point." exit 1 fi @@ -193,7 +198,7 @@ modules="$modules $fs_module $partmap_mo if test $update_nvram = yes; then set $ofpathname dummy - if test -f "$1"; then + if test -x "$1"; then : else echo "$1: Not found." 1>&2 @@ -201,7 +206,7 @@ if test $update_nvram = yes; then fi set $nvsetenv dummy - if test -f "$1"; then + if test -x "$1"; then : else echo "$1: Not found." 1>&2 @@ -231,7 +236,7 @@ fi echo "Installation finished. No error reported." echo "This is the contents of the device map $device_map." echo "Check if this is correct or not. If any of the lines is incorrect," -echo "fix it and re-run the script \`grub-install'." +echo "fix it and re-run the script \`$self'." echo cat $device_map === modified file 'util/powerpc/ieee1275/grub-mkrescue.in' --- util/powerpc/ieee1275/grub-mkrescue.in 2010-04-26 19:27:41 +0000 +++ util/powerpc/ieee1275/grub-mkrescue.in 2010-05-23 14:35:04 +0000 @@ -28,7 +28,10 @@ address@hidden@ address@hidden@ address@hidden@ address@hidden@ -pkglibdir=${libdir}/`echo ${PACKAGE_TARNAME}/${target_cpu}-${platform} | sed ${transform}` address@hidden@ +pkglibdir=${pkglibrootdir}/${target_cpu}-${platform} + +self=`basename $0` grub_mkimage=${bindir}/`echo grub-mkimage | sed ${transform}` @@ -36,7 +39,7 @@ grub_mkimage=${bindir}/`echo grub-mkimag # Print the usage. usage () { cat <