]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
Revert grub-file usage in grub-mkconfig.
authorVladimir Serbinenko <phcoder@gmail.com>
Tue, 24 Dec 2013 16:47:27 +0000 (17:47 +0100)
committerVladimir Serbinenko <phcoder@gmail.com>
Tue, 24 Dec 2013 16:47:27 +0000 (17:47 +0100)
12 files changed:
ChangeLog
Makefile.util.def
configure.ac
util/grub-mkconfig.in
util/grub.d/00_header.in
util/grub.d/10_hurd.in
util/grub.d/10_illumos.in
util/grub.d/10_kfreebsd.in
util/grub.d/10_linux.in
util/grub.d/10_netbsd.in
util/grub.d/10_xnu.in
util/grub.d/20_linux_xen.in

index 351ff5908c485e89abe2d71f4d18f5758616b37f..ebdcaa09fbbd354fe6c954900d547482e8b80e13 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2013-12-24  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       Revert grub-file usage in grub-mkconfig.
+
 2013-12-24  Vladimir Serbinenko  <phcoder@gmail.com>
 
        Make newly-created files other than grub.cfg world-readable.
index 27c48e5f88ab525d49028bb530669b8dd43db8b4..985e76ca4e54d9d5b182c05a4aab4b3f2845c0ab 100644 (file)
@@ -439,42 +439,49 @@ script = {
   name = '10_hurd';
   common = util/grub.d/10_hurd.in;
   installdir = grubconf;
+  condition = COND_HOST_HURD;
 };
 
 script = {
   name = '10_kfreebsd';
   common = util/grub.d/10_kfreebsd.in;
   installdir = grubconf;
+  condition = COND_HOST_KFREEBSD;
 };
 
 script = {
   name = '10_illumos';
   common = util/grub.d/10_illumos.in;
   installdir = grubconf;
+  condition = COND_HOST_ILLUMOS;
 };
 
 script = {
   name = '10_netbsd';
   common = util/grub.d/10_netbsd.in;
   installdir = grubconf;
+  condition = COND_HOST_NETBSD;
 };
 
 script = {
   name = '10_linux';
   common = util/grub.d/10_linux.in;
   installdir = grubconf;
+  condition = COND_HOST_LINUX;
 };
 
 script = {
   name = '10_xnu';
   common = util/grub.d/10_xnu.in;
   installdir = grubconf;
+  condition = COND_HOST_XNU;
 };
 
 script = {
   name = '20_linux_xen';
   common = util/grub.d/20_linux_xen.in;
   installdir = grubconf;
+  condition = COND_HOST_LINUX;
 };
 
 script = {
index 2836fc2cb03a6ac89a7302cc8059d65035ff2de9..2481410b0449684e97bd9a549e0983cc3553b4f9 100644 (file)
@@ -1666,7 +1666,13 @@ AM_CONDITIONAL([COND_arm_efi], [test x$target_cpu = xarm -a x$platform = xefi])
 AM_CONDITIONAL([COND_arm64], [test x$target_cpu = xarm64 ])
 AM_CONDITIONAL([COND_arm64_efi], [test x$target_cpu = xarm64 -a x$platform = xefi])
 
+AM_CONDITIONAL([COND_HOST_HURD], [test x$host_kernel = xhurd])
+AM_CONDITIONAL([COND_HOST_LINUX], [test x$host_kernel = xlinux])
+AM_CONDITIONAL([COND_HOST_NETBSD], [test x$host_kernel = xnetbsd])
 AM_CONDITIONAL([COND_HOST_WINDOWS], [test x$host_kernel = xwindows])
+AM_CONDITIONAL([COND_HOST_KFREEBSD], [test x$host_kernel = xkfreebsd])
+AM_CONDITIONAL([COND_HOST_XNU], [test x$host_kernel = xxnu])
+AM_CONDITIONAL([COND_HOST_ILLUMOS], [test x$host_kernel = xillumos])
 
 AM_CONDITIONAL([COND_MAN_PAGES], [test x$cross_compiling = xno -a x$HELP2MAN != x])
 AM_CONDITIONAL([COND_GRUB_EMU_USB], [test x$enable_grub_emu_usb = xyes])
index 44f2d1d4dc504fea9d6266e0c27743481bff19f1..ca040dd776c69f68494db6665aa92920a8d25a70 100644 (file)
@@ -55,7 +55,6 @@ usage () {
     gettext "Generate a grub config file"; echo
     echo
     print_option_help "-o, --output=$(gettext FILE)" "$(gettext "output generated config to FILE [default=stdout]")"
-    print_option_help "-r, --root-directory=$(gettext DIR)" "$(gettext "use DIR as root directory [default=/]")"
     print_option_help "-h, --help" "$(gettext "print this message and exit")"
     print_option_help "-v, --version" "$(gettext "print the version information and exit")"
     echo
@@ -73,8 +72,6 @@ argument () {
   echo $1
 }
 
-GRUB_ROOT=
-
 # Check the arguments.
 while test $# -gt 0
 do
@@ -93,11 +90,6 @@ do
     --output=*)
        grub_cfg=`echo "$option" | sed 's/--output=//'`
        ;;
-    -r | --root-directory)
-       GRUB_ROOT=`argument $option "$@"`; shift;;
-    --root-directory=*)
-       GRUB_ROOT=`echo "$option" | sed 's/--output=//'`
-       ;;
     -*)
        gettext_printf "Unrecognized option \`%s'\n" "$option" 1>&2
        usage
@@ -137,19 +129,19 @@ else
 fi
 
 # Device containing our userland.  Typically used for root= parameter.
-GRUB_DEVICE="`${grub_probe} --target=device "$GRUB_ROOT"/`"
+GRUB_DEVICE="`${grub_probe} --target=device /`"
 GRUB_DEVICE_UUID="`${grub_probe} --device ${GRUB_DEVICE} --target=fs_uuid 2> /dev/null`" || true
 
 # Device containing our /boot partition.  Usually the same as GRUB_DEVICE.
-GRUB_DEVICE_BOOT="`${grub_probe} --target=device "$GRUB_ROOT"/boot`"
+GRUB_DEVICE_BOOT="`${grub_probe} --target=device /boot`"
 GRUB_DEVICE_BOOT_UUID="`${grub_probe} --device ${GRUB_DEVICE_BOOT} --target=fs_uuid 2> /dev/null`" || true
 
 # Filesystem for the device containing our userland.  Used for stuff like
 # choosing Hurd filesystem module.
 GRUB_FS="`${grub_probe} --device ${GRUB_DEVICE} --target=fs 2> /dev/null || echo unknown`"
 
-if [ x"$GRUB_FS" = x ] || [ x"$GRUB_FS" = xunknown ]; then
-    GRUB_FS="$(stat -f --printf=%T "$GRUB_ROOT"/ || echo unknown)"
+if [ x"$GRUB_FS" = xunknown ]; then
+    GRUB_FS="$(stat -f --printf=%T / || echo unknown)"
 fi
 
 if test -f ${sysconfdir}/default/grub ; then
@@ -186,7 +178,6 @@ if [ "x${GRUB_ACTUAL_DEFAULT}" = "xsaved" ] ; then GRUB_ACTUAL_DEFAULT="`"${grub
 # These are defined in this script, export them here so that user can
 # override them.
 export GRUB_DEVICE \
-  GRUB_ROOT \
   GRUB_DEVICE_UUID \
   GRUB_DEVICE_BOOT \
   GRUB_DEVICE_BOOT_UUID \
@@ -256,46 +247,16 @@ EOF
 
 for i in "${grub_mkconfig_dir}"/* ; do
   case "$i" in
-      "${grub_mkconfig_dir}"/00_header \
-      | "${grub_mkconfig_dir}"/30_os-prober \
-      | "${grub_mkconfig_dir}"/40_custom \
-      | "${grub_mkconfig_dir}"/41_custom)
-          if test -x "$i" ; then
-             echo
-              echo "### BEGIN $i ###"
-              "$i"
-              echo "### END $i ###"
-          fi
-      ;;
     # emacsen backup files. FIXME: support other editors
     *~) ;;
     # emacsen autosave files. FIXME: support other editors
     */\#*\#) ;;
     *)
       if grub_file_is_not_garbage "$i" && test -x "$i" ; then
-         for platform in x86 i386-xen-pae x86_64-xen mips mipsel sparc64 powerpc ia64 arm arm64; do
-
-             GRUB_PLATFORM=$platform
-             export GRUB_PLATFORM
-              buf="$($i)"
-             if [ x"$buf" != x ]; then
-                 echo
-                 echo "### BEGIN $i ($platform) ###"
-                 case x$platform in
-                     xx86)
-                         echo "if [ x\"\$grub_platform\" != xxen \\(  x\"\$grub_cpu\" = xi386 -o x\"\$grub_cpu\" = xx86_64 -o x\"\$grub_platform\" = x \\) ]; then" ;;
-                     xi386-xen-pae)
-                         echo "if [ x\"\$grub_cpu-\$grub_platform\" = xi386-xen -o x\"\$grub_cpu-\$grub_platform\" = x- ]; then" ;;
-                     xx86_64-xen)
-                         echo "if [ x\"\$grub_cpu-\$grub_platform\" = xx86_64-xen -o x\"\$grub_cpu-\$grub_platform\" = x- ]; then" ;;
-                     *)
-                         echo "if [ x\"\$grub_cpu\" = x$platform -o x\"\$grub_platform\" = x ]; then" ;;
-                 esac
-                 echo "$buf"
-                 echo "fi"
-                 echo "### END $i ($platform) ###"
-             fi
-         done
+        echo
+        echo "### BEGIN $i ###"
+        "$i"
+        echo "### END $i ###"
       fi
     ;;
   esac
index d37cef4cd3726295eba00f8aec1c6cc181783064..0c82f231574fafa4ebb3e7205095424a66050fdc 100644 (file)
@@ -152,7 +152,7 @@ if [ "x$gfxterm" = x1 ]; then
 if loadfont `make_system_path_relative_to_its_root "${GRUB_FONT}"` ; then
 EOF
     else
-       for dir in "${pkgdatadir}" "`echo "$GRUB_ROOT"'/@bootdirname@/@grubdirname@' | sed "s,//*,/,g"`" "`echo "$GRUB_ROOT"'/usr/share/grub' | sed "s,//*,/,g"`" ; do
+       for dir in "${pkgdatadir}" "`echo '/@bootdirname@/@grubdirname@' | sed "s,//*,/,g"`" /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
index da8069bd3394750d9e35addbdf231ab323a4a338..82dfe193f36ecf66d9f9defc78b75897e15e0a50 100644 (file)
@@ -21,16 +21,6 @@ prefix="@prefix@"
 exec_prefix="@exec_prefix@"
 datarootdir="@datarootdir@"
 
-if [ x$GRUB_PLATFORM = xx86 ]; then
-    check=--is-x86-multiboot
-elif [ x$GRUB_PLATFORM = xi386-xen-pae ]; then
-    check=--is-i386-xen-pae-domu
-elif [ x$GRUB_PLATFORM = xx86_64-xen ]; then
-    check=--is-x86_64-xen-domu
-else
-    exit 0
-fi
-
 export TEXTDOMAIN=@PACKAGE@
 export TEXTDOMAINDIR="@localedir@"
 
@@ -50,11 +40,11 @@ all_of_them=true
 
 # FIXME: add l4 here?
 kernel=
-for i in "$GRUB_ROOT"/boot/gnumach* ; do
-  if test -f "$i" && "${grub_file}" $check "$i" ; then
-    basename=`basename "$i"`
-    dirname=`dirname "$i"`
-    rel_dirname=`make_system_path_relative_to_its_root "$dirname"`
+for i in /boot/gnumach* ; do
+  if test -e $i ; then
+    basename=`basename $i`
+    dirname=`dirname $i`
+    rel_dirname=`make_system_path_relative_to_its_root $dirname`
     gettext_printf "Found GNU Mach: %s" "$i" >&2
     echo >&2
     kernels="${kernels} ${rel_dirname}/${basename}"
@@ -68,8 +58,8 @@ case "${GRUB_FS}" in
   *)   hurd_fs="${GRUB_FS}fs" ;;
 esac
 
-for i in "$GRUB_ROOT"/hurd/${hurd_fs}.static "$GRUB_ROOT"/hurd/exec ; do
-  if test -f "$i" ; then
+for i in /hurd/${hurd_fs}.static /hurd/exec ; do
+  if test -e "$i" ; then
     gettext_printf "Found Hurd module: %s" "$i" >&2
     echo >&2
     at_least_one=true
@@ -83,7 +73,7 @@ if ${at_least_one} ; then : ; else
   exit 0
 fi
 
-if ${all_of_them} && test -f "$GRUB_ROOT"/lib/ld.so.1 ; then : ; else
+if ${all_of_them} && test -/lib/ld.so.1 ; then : ; else
   gettext "Some Hurd stuff found, but not enough to boot." >&2
   echo >&2
   exit 1
index 00f1d6816bb8edc1f56bc9e081c94f9956e2e9de..0de616e8956b669687609c9cc789af018929defd 100644 (file)
@@ -27,21 +27,6 @@ export TEXTDOMAINDIR="@localedir@"
 
 CLASS="--class os"
 
-if [ x$GRUB_PLATFORM = xx86 ]; then
-    check=--is-x86-multiboot
-elif [ x$GRUB_PLATFORM = xi386-xen-pae ]; then
-    check=--is-i386-xen-pae-domu
-elif [ x$GRUB_PLATFORM = xx86_64-xen ]; then
-    check=--is-x86_64-xen-domu
-else
-    exit 0
-fi
-
-if ! test -f "$GRUB_ROOT"/platform/i86pc/kernel || ! "${grub_file}" $check "$GRUB_ROOT"/platform/i86pc/kernel; then
-    exit 0
-fi
-
-
 case "${GRUB_DISTRIBUTOR}" in
   *)
        OS="Illumos"
@@ -60,7 +45,7 @@ message="$(gettext_printf "Loading kernel of Illumos ...")"
        else
                ISADIR=
        fi
-       zfs-bootfs $($grub_mkrelpath "$GRUB_ROOT"/) ZFS_BOOTFS
+       zfs-bootfs $($grub_mkrelpath /) ZFS_BOOTFS
         echo '$(echo "$message" | grub_quote)'
        multiboot $($grub_mkrelpath /platform/i86pc/kernel)/\$ISADIR/unix /platform/i86pc/kernel/\$ISADIR/unix -B \$ZFS_BOOTFS,console=text
        module $($grub_mkrelpath /platform/i86pc)/\$ISADIR/boot_archive /platform/i86pc/\$ISADIR/boot_archive
index f4aa450bb8f13630b964c7d5c86d512f0ba304bd..a524762fcdbe31c4ed99ad83aae5f144a5c7b5b3 100644 (file)
@@ -27,16 +27,6 @@ export TEXTDOMAINDIR="@localedir@"
 
 CLASS="--class os"
 
-if [ x$GRUB_PLATFORM = xx86 ]; then
-    check=--is-x86-kfreebsd
-elif [ x$GRUB_PLATFORM = xi386-xen-pae ]; then
-    check=--is-i386-xen-pae-domu
-elif [ x$GRUB_PLATFORM = xx86_64-xen ]; then
-    check=--is-x86_64-xen-domu
-else
-    exit 0
-fi
-
 case "${GRUB_DISTRIBUTOR}" in
   Debian)
        OS="${GRUB_DISTRIBUTOR} GNU/kFreeBSD"
@@ -132,10 +122,10 @@ EOF
     zfs)
       load_kfreebsd_module opensolaris false
 
-      ls "$GRUB_ROOT/boot/zfs/zpool.cache" > /dev/null
+      ls "/boot/zfs/zpool.cache" > /dev/null
       printf '%s\n' "${prepare_boot_cache}"
       sed "s/^/$submenu_indentation/" << EOF
-       kfreebsd_module         $(make_system_path_relative_to_its_root $GRUB_ROOT/boot)/zfs/zpool.cache type=/boot/zfs/zpool.cache
+       kfreebsd_module         $(make_system_path_relative_to_its_root /boot)/zfs/zpool.cache type=/boot/zfs/zpool.cache
 EOF
     ;;
   esac
@@ -153,8 +143,8 @@ EOF
 EOF
 }
 
-list=`for i in $GRUB_ROOT/boot/kfreebsd-* $GRUB_ROOT/boot/kernel/kernel ; do
-        if grub_file_is_not_garbage "$i" && ${grub_file} $check "$i"; then echo -n "$i " ; fi
+list=`for i in /boot/kfreebsd-* /boot/kernel/kernel ; do
+        if grub_file_is_not_garbage "$i" ; then echo -n "$i " ; fi
       done`
 prepare_boot_cache=
 boot_device_id=
@@ -173,8 +163,8 @@ while [ "x$list" != "x" ] ; do
   dirname=`dirname $kfreebsd`
   rel_dirname=`make_system_path_relative_to_its_root $dirname`
 
-  if [ -f "$GRUB_ROOT"/boot/device.hints ] ; then
-    devices="$GRUB_ROOT"/boot/device.hints
+  if [ -f /boot/device.hints ] ; then
+    devices=/boot/device.hints
     devices_basename=`basename $devices`
     devices_dirname=`dirname $devices`
     devices_rel_dirname=`make_system_path_relative_to_its_root $devices_dirname`
@@ -191,14 +181,14 @@ while [ "x$list" != "x" ] ; do
                        # zpool name
                        kfreebsd_device=$(${grub_probe} -t fs_label --device ${GRUB_DEVICE})
                        # filesystem name (empty string for the main filesystem)
-                       kfreebsd_device="${kfreebsd_device}$(${grub_mkrelpath} "$GRUB_ROOT"/ | sed -e "s,/*@$,,")"
+                       kfreebsd_device="${kfreebsd_device}$(${grub_mkrelpath} / | sed -e "s,/*@$,,")"
     ;;
     *)
          kfreebsd_device=${kfreebsd_fs}id/${GRUB_DEVICE_UUID}
          # Debian GNU/kFreeBSD can't remount root if it's supplied as UUID but
          # as an UUID
          if [ "x${GRUB_DISTRIBUTOR}" = "xDebian" ] \
-             && ! (cat "$GRUB_ROOT"/etc/fstab | awk '!/^[[:space:]]*#/ && $2=="/" { print $1; }' \
+             && ! (cat /etc/fstab | awk '!/^[[:space:]]*#/ && $2=="/" { print $1; }' \
              | grep "${kfreebsd_fs}id/${GRUB_DEVICE_UUID}" > /dev/null); then
              kfreebsd_device=${GRUB_DEVICE} 
          fi
@@ -209,8 +199,8 @@ while [ "x$list" != "x" ] ; do
   alt_version=`echo $version | sed -e "s,\.old$,,g"`
 
   module_dir=
-  for i in "$GRUB_ROOT/lib/modules/${version}" "$GRUB_ROOT/lib/modules/${alt_version}" \
-      "$GRUB_ROOT/boot/kernel"; do
+  for i in "/lib/modules/${version}" "/lib/modules/${alt_version}" \
+      "/boot/kernel"; do
     if test -e "$i" ; then
       module_dir="$i"
       break
index e904d1edf92fa0778a0e36c06935e0bcb22ebd1c..00d193159e9e9d0bd7d674e023cc51d041f3ee15 100644 (file)
@@ -26,31 +26,6 @@ datarootdir="@datarootdir@"
 export TEXTDOMAIN=@PACKAGE@
 export TEXTDOMAINDIR="@localedir@"
 
-if [ x$GRUB_PLATFORM = xx86 ]; then
-    check=--is-x86-linux32
-elif [ x$GRUB_PLATFORM = xi386-xen-pae ]; then
-    check=--is-i386-xen-pae-domu
-elif [ x$GRUB_PLATFORM = xx86_64-xen ]; then
-    check=--is-x86_64-xen-domu
-else
-    check=--is-${GRUB_PLATFORM}-linux
-fi
-
-case "x$GRUB_PLATFORM" in
-    xx86)
-       list=`for i in "$GRUB_ROOT"/boot/vmlinuz-* "$GRUB_ROOT"/vmlinuz-* "$GRUB_ROOT"/boot/kernel-* ; do
-                  if grub_file_is_not_garbage "$i" && "${grub_file}" $check "$i" ; then echo -n "$i " ; fi
-              done` ;;
-    *) 
-       list=`for i in "$GRUB_ROOT"/boot/vmlinuz-* "$GRUB_ROOT"/boot/vmlinux-* "$GRUB_ROOT"/vmlinuz-* "$GRUB_ROOT"/vmlinux-* "$GRUB_ROOT"/boot/kernel-* ; do
-                  if grub_file_is_not_garbage "$i" && "${grub_file}" $check "$i" ; then echo -n "$i " ; fi
-            done` ;;
-esac
-
-if [ x"$list" = x ]; then
-    exit 0
-fi
-
 CLASS="--class gnu-linux --class gnu --class os"
 
 if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
@@ -78,14 +53,14 @@ fi
 
 case x"$GRUB_FS" in
     xbtrfs)
-       rootsubvol="`make_system_path_relative_to_its_root "$GRUB_ROOT"/`"
+       rootsubvol="`make_system_path_relative_to_its_root /`"
        rootsubvol="${rootsubvol#/}"
        if [ "x${rootsubvol}" != x ]; then
            GRUB_CMDLINE_LINUX="rootflags=subvol=${rootsubvol} ${GRUB_CMDLINE_LINUX}"
        fi;;
     xzfs)
        rpool=`${grub_probe} --device ${GRUB_DEVICE} --target=fs_label 2>/dev/null || true`
-       bootfs="`make_system_path_relative_to_its_root "$GRUB_ROOT"/ | sed -e "s,@$,,"`"
+       bootfs="`make_system_path_relative_to_its_root / | sed -e "s,@$,,"`"
        LINUX_ROOT_DEVICE="ZFS=${rpool}${bootfs}"
        ;;
 esac
@@ -140,7 +115,7 @@ linux_entry ()
 
   echo "       insmod gzio" | sed "s/^/$submenu_indentation/"
 
-  if [ x$dirname = x"$GRUB_ROOT"/ ]; then
+  if [ x$dirname = x/ ]; then
     if [ -z "${prepare_root_cache}" ]; then
       prepare_root_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE} | grub_add_tab)"
     fi
@@ -169,12 +144,24 @@ EOF
 EOF
 }
 
-case "$GRUB_PLATFORM" in
-    x86 | i386-xen-pae | x86_64-xen) GENKERNEL_ARCH="x86" ;;
+machine=`uname -m`
+case "x$machine" in
+    xi?86 | xx86_64)
+       list=`for i in /boot/vmlinuz-* /vmlinuz-* /boot/kernel-* ; do
+                  if grub_file_is_not_garbage "$i" ; then echo -n "$i " ; fi
+              done` ;;
+    *) 
+       list=`for i in /boot/vmlinuz-* /boot/vmlinux-* /vmlinuz-* /vmlinux-* /boot/kernel-* ; do
+                  if grub_file_is_not_garbage "$i" ; then echo -n "$i " ; fi
+            done` ;;
+esac
+
+case "$machine" in
+    i?86) GENKERNEL_ARCH="x86" ;;
     mips|mips64) GENKERNEL_ARCH="mips" ;;
     mipsel|mips64el) GENKERNEL_ARCH="mipsel" ;;
     arm*) GENKERNEL_ARCH="arm" ;;
-    *) GENKERNEL_ARCH="$GRUB_PLATFORM" ;;
+    *) GENKERNEL_ARCH="$machine" ;;
 esac
 
 prepare_boot_cache=
@@ -213,7 +200,7 @@ while [ "x$list" != "x" ] ; do
   done
 
   config=
-  for i in "${dirname}/config-${version}" "${dirname}/config-${alt_version}" "$GRUB_ROOT/etc/kernels/kernel-config-${version}" ; do
+  for i in "${dirname}/config-${version}" "${dirname}/config-${alt_version}" "/etc/kernels/kernel-config-${version}" ; do
     if test -e "${i}" ; then
       config="${i}"
       break
index b1aba65c1ecf394a7702cd59e957b1000db48509..29a0e41a9a51dd2af911113909da21cb287b6796 100644 (file)
@@ -22,16 +22,6 @@ exec_prefix="@exec_prefix@"
 datarootdir="@datarootdir@"
 . "@datadir@/@PACKAGE@/grub-mkconfig_lib"
 
-if [ x$GRUB_PLATFORM = xx86 ]; then
-    check=--is-x86-kfreebsd
-elif [ x$GRUB_PLATFORM = xi386-xen-pae ]; then
-    check=--is-i386-xen-pae-domu
-elif [ x$GRUB_PLATFORM = xx86_64-xen ]; then
-    check=--is-x86_64-xen-domu
-else
-    exit 0
-fi
-
 export TEXTDOMAIN=@PACKAGE@
 export TEXTDOMAINDIR="@localedir@"
 
@@ -46,13 +36,19 @@ netbsd_load_fs_module ()
   loader="$1"  # "knetbsd" or "multiboot"
   kernel="$2"  # absolute path to the kernel file
 
-  if "${grub_file}" --is-x86_64-kfreebsd "${kernel}"; then
-      karch="amd64"
-  else
+  case $(zcat -f "${kernel}" | file -bL - | cut -d , -f 2 | tr -d ' ') in
+    Intel80386)
       karch="i386"
-  fi
+      ;;
+    x86-64)
+      karch="amd64"
+      ;;
+    *)
+      return
+      ;;
+  esac
 
-  case $GRUB_FS in
+  case $(${grub_probe} --target=fs -d ${GRUB_DEVICE}) in
     ext2)
       kmod="ext2fs"
       ;;
@@ -71,7 +67,7 @@ netbsd_load_fs_module ()
   esac
 
   kversion=$(zcat -f "${kernel}" | strings | sed -n -e '/^@(#)NetBSD/ { s/^@(#)NetBSD \([0-9\.]*\) .*$/\1/g ; p ; q ; }')
-  kmodule="$GRUB_ROOT/stand/${karch}/${kversion}/modules/${kmod}/${kmod}.kmod"
+  kmodule="/stand/${karch}/${kversion}/modules/${kmod}/${kmod}.kmod"
 
   if test -z "$karch" -o -z "$kversion" -o ! -f "${kmodule}"; then
     return
@@ -98,10 +94,6 @@ netbsd_entry ()
   type="$3"
   args="$4"    # extra arguments appended to loader command
 
-  if [ "x${loader}" = xmultiboot ] && [ x$GRUB_PLATFORM = xx86 ] && ! "$grub_file" --is-x86-multiboot "$kernel"; then
-      return
-  fi
-
   kroot_device="$(echo ${GRUB_DEVICE} | sed -e 's,^/dev/r,,')"
 
   if [ -z "$boot_device_id" ]; then
@@ -155,13 +147,10 @@ pattern="^ELF[^,]*executable.*statically linked"
 submenu_indentation=""
 
 is_top_level=true
-for k in "$GRUB_ROOT"/netbsd $(ls -t "$GRUB_ROOT"/netbsd?* 2>/dev/null) ; do
+for k in /netbsd $(ls -t /netbsd?* 2>/dev/null) ; do
   if ! grub_file_is_not_garbage "$k" ; then
     continue
   fi
-  if ! "$grub_file" $check "$k"; then
-    continue
-  fi
   if ! (zcat -f "$k" | file -bL - | grep -q "${pattern}") 2>/dev/null ; then
     continue
   fi
index 54c06135c02b5773869de6d0e6d9991c361d558a..4270385f3d1785f6cd6631358ead6ff118c53b06 100644 (file)
@@ -26,28 +26,18 @@ export TEXTDOMAINDIR="@localedir@"
 
 . "@datadir@/@PACKAGE@/grub-mkconfig_lib"
 
-if [ x$GRUB_PLATFORM != xx86 ]; then
-    exit 0
-fi
-
 osx_entry() {
     if [ x$2 = x32 ]; then
         # TRANSLATORS: it refers to kernel architecture (32-bit)
        bitstr="$(gettext "(32-bit)")"
-       if ! [ -f "$GRUB_ROOT"/mach_kernel ] || ! "${grub_file}" --is-i386-xnu  "$GRUB_ROOT"/mach_kernel; then
-           return;
-       fi
     else
         # TRANSLATORS: it refers to kernel architecture (64-bit)
        bitstr="$(gettext "(64-bit)")"
-       if ! [ -f "$GRUB_ROOT"/mach_kernel ] || ! "${grub_file}" --is-x86_64-xnu  "$GRUB_ROOT"/mach_kernel; then
-           return;
-       fi
     fi
     # TRANSLATORS: it refers on the OS residing on device %s
     onstr="$(gettext_printf "(on %s)" "${GRUB_DEVICE}")"
         cat << EOF
-menuentry '$(echo "Darwin/Mac OS X $bitstr $onstr" | grub_quote)' --class osx --class darwin --class os \$menuentry_id_option 'xnu-$2-$(grub_get_device_id "${GRUB_DEVICE}")'  {
+menuentry '$(echo "Darwin/Mac OS X $bitstr $onstr" | grub_quote)' --class osx --class darwin --class os \$menuentry_id_option 'osprober-xnu-$2-$(grub_get_device_id "${GRUB_DEVICE}")'  {
 EOF
        save_default_entry | grub_add_tab
        prepare_grub_to_access_device ${GRUB_DEVICE} | grub_add_tab
@@ -60,7 +50,7 @@ EOF
            fi
         fi
         if [ \$do_resume = 0 ]; then
-           xnu_uuid ${GRUB_DEVICE_UUID} uuid
+           xnu_uuid ${OSXUUID} uuid
            if [ -f /Extra/DSDT.aml ]; then
               acpi -e /Extra/DSDT.aml
            fi
@@ -100,5 +90,6 @@ EOF
 EOF
 }
 
+OSXUUID="`${grub_probe} --target=fs_uuid --device ${GRUB_DEVICE} 2> /dev/null`"
 osx_entry xnu_kernel 32
 osx_entry xnu_kernel64 64
index fbc1ce004ddb30d254a58b88cd66b5f795d126fd..a60843500edc08d4f9ae5f8969d8202b46a28fef 100644 (file)
@@ -26,10 +26,6 @@ datarootdir="@datarootdir@"
 export TEXTDOMAIN=@PACKAGE@
 export TEXTDOMAINDIR="@localedir@"
 
-if [ x$GRUB_PLATFORM != xx86 ]; then
-    exit 0
-fi
-
 CLASS="--class gnu-linux --class gnu --class os --class xen"
 
 if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
@@ -65,14 +61,14 @@ fi
 
 case x"$GRUB_FS" in
     xbtrfs)
-       rootsubvol="`make_system_path_relative_to_its_root "$GRUB_ROOT"/`"
+       rootsubvol="`make_system_path_relative_to_its_root /`"
        rootsubvol="${rootsubvol#/}"
        if [ "x${rootsubvol}" != x ]; then
            GRUB_CMDLINE_LINUX="rootflags=subvol=${rootsubvol} ${GRUB_CMDLINE_LINUX}"
        fi;;
     xzfs)
        rpool=`${grub_probe} --device ${GRUB_DEVICE} --target=fs_label 2>/dev/null || true`
-       bootfs="`make_system_path_relative_to_its_root "$GRUB_ROOT"/ | sed -e "s,@$,,"`"
+       bootfs="`make_system_path_relative_to_its_root / | sed -e "s,@$,,"`"
        LINUX_ROOT_DEVICE="ZFS=${rpool}${bootfs}"
        ;;
 esac
@@ -141,9 +137,19 @@ EOF
 EOF
 }
 
-linux_list=`for i in "$GRUB_ROOT"/boot/vmlinu[xz]-* "$GRUB_ROOT"/vmlinu[xz]-* "$GRUB_ROOT"/boot/kernel-*; do
-    if grub_file_is_not_garbage "$i" && "${grub_file}" --is-x86-xen-dom0 "$i"; then
-       echo -n "$i " ;
+linux_list=`for i in /boot/vmlinu[xz]-* /vmlinu[xz]-* /boot/kernel-*; do
+    if grub_file_is_not_garbage "$i"; then
+       basename=$(basename $i)
+       version=$(echo $basename | sed -e "s,^[^0-9]*-,,g")
+       dirname=$(dirname $i)
+       config=
+       for j in "${dirname}/config-${version}" "${dirname}/config-${alt_version}" "/etc/kernels/kernel-config-${version}" ; do
+           if test -e "${j}" ; then
+               config="${j}"
+               break
+           fi
+       done
+        if (grep -qx "CONFIG_XEN_DOM0=y" "${config}" 2> /dev/null || grep -qx "CONFIG_XEN_PRIVILEGED_GUEST=y" "${config}" 2> /dev/null); then echo -n "$i " ; fi
     fi
     done`
 if [ "x${linux_list}" = "x" ] ; then
@@ -159,8 +165,8 @@ file_is_not_sym () {
     esac
 }
 
-xen_list=`for i in "$GRUB_ROOT"/boot/xen*; do
-        if grub_file_is_not_garbage "$i" && file_is_not_sym "$i" && ${grub_file} --is-x86-multiboot "$i"; then echo -n "$i " ; fi
+xen_list=`for i in /boot/xen*; do
+        if grub_file_is_not_garbage "$i" && file_is_not_sym "$i" ; then echo -n "$i " ; fi
       done`
 prepare_boot_cache=
 boot_device_id=