]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
Add new --boot-directory option to replace --root-directory
authorYves Blusseau <blusseau@zetam.org>
Wed, 8 Sep 2010 15:25:29 +0000 (17:25 +0200)
committerYves Blusseau <blusseau@zetam.org>
Wed, 8 Sep 2010 15:25:29 +0000 (17:25 +0200)
* util/grub-install.in: Add new --boot-directory option
* util/grub-reboot.in: Likewise.
* util/grub-set-default.in: Likewise.

ChangeLog
util/grub-install.in
util/grub-reboot.in
util/grub-set-default.in

index 38b97ec8da17e2414219c133d0a4289dda3b4c56..998385fa2af90da2740050812a6c3ad4abca41c7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2010-09-08  Yves Blusseau  <blusseau@zetam.org>
+
+       Add new --boot-directory option to replace --root-directory
+
+       * util/grub-install.in: Add new --boot-directory option
+       * util/grub-reboot.in: Likewise.
+       * util/grub-set-default.in: Likewise.
+
 2010-09-08  Yves Blusseau  <blusseau@zetam.org>
 
         * util/grub-mkconfig.in: Use new variable.
index e6521f069e9f7e017571cac94432d46baf54d9f3..340a616aa69ab63729416ebfe8f5e0257db0e81c 100644 (file)
@@ -41,7 +41,8 @@ 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}`
+bootdir=
+grubdir=`echo "/@bootdirname@/@grubdirname@" | sed 's,//*,/,g'`
 modules=
 
 install_device=
@@ -69,8 +70,8 @@ Install GRUB on your drive.
   -h, --help              print this message and exit
   -v, --version           print the version information and exit
   --modules=MODULES       pre-load specified modules MODULES
-  --root-directory=DIR    install GRUB images under the directory DIR
-                          instead of the root directory
+  --boot-directory=DIR    install GRUB images under the directory DIR/@grubdirname@
+                          instead of the $grubdir directory
   --grub-setup=FILE       use FILE as grub-setup
   --grub-mkimage=FILE     use FILE as grub-mkimage
   --grub-mkdevicemap=FILE use FILE as grub-mkdevicemap
@@ -88,11 +89,8 @@ fi
 
 INSTALL_DEVICE can be a GRUB device name or a system device filename.
 
-$self copies GRUB images into /boot/grub (or /grub on NetBSD and
-OpenBSD), and uses grub-setup to install grub into the boot sector.
-
-If the --root-directory option is used, then $self will copy
-images into the operating system installation rooted at that directory.
+$self copies GRUB images into $grubdir, and uses grub-setup
+to install grub into the boot sector.
 
 Report bugs to <bug-grub@gnu.org>.
 EOF
@@ -134,11 +132,17 @@ do
     --font=*)
        ;;
 
+# Accept for compatibility
     --root-directory)
        rootdir=`argument $option "$@"`; shift;;
     --root-directory=*)
        rootdir=`echo "$option" | sed 's/--root-directory=//'` ;;
 
+    --boot-directory)
+       bootdir=`argument $option "$@"`; shift;;
+    --boot-directory=*)
+       bootdir=`echo "$option" | sed 's/--boot-directory=//'` ;;
+
     --grub-setup)
        grub_setup=`argument $option "$@"`; shift;;
     --grub-setup=*)
@@ -215,23 +219,18 @@ if test $debug = yes; then
     setup_verbose="--verbose"
 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
+if [ -z "$bootdir" ]; then
+    # Default bootdir if bootdir not initialized.
+    bootdir=/@bootdirname@
 
-grubdir=${bootdir}/`echo grub | sed ${transform}`
-device_map=${grubdir}/device.map
+    if [ -n "$rootdir" ] ; then
+        # Initialize bootdir if rootdir was initialized.
+        bootdir=${rootdir}/@bootdirname@
+    fi
+fi
 
+grubdir=`echo "${bootdir}/@grubdirname@" | sed 's,//*,/,g'`
+device_map=${grubdir}/device.map
 grub_probe="${grub_probe} --device-map=${device_map}"
 
 # Check if GRUB is installed.
index e7a41f68ffc9bce55f29ed67f983a40170b7870e..929cf52028fc0a770ac565800ac41efd5e4a4a5c 100644 (file)
@@ -29,6 +29,8 @@ self=`basename $0`
 
 grub_editenv=${bindir}/`echo grub-editenv | sed ${transform}`
 rootdir=
+bootdir=
+grubdir=`echo "/@bootdirname@/@grubdirname@" | sed 's,//*,/,g'`
 
 # Usage: usage
 # Print the usage.
@@ -39,8 +41,8 @@ Set the default boot entry for GRUB, for the next boot only.
 
   -h, --help              print this message and exit
   -v, --version           print the version information and exit
-  --root-directory=DIR    expect GRUB images under the directory DIR
-                          instead of the root directory
+  --boot-directory=DIR    expect GRUB images under the directory DIR/@grubdirname@
+                          instead of the $grubdir directory
 
 ENTRY is a number or a menu item title.
 
@@ -73,11 +75,17 @@ do
        echo "$self (${PACKAGE_NAME}) ${PACKAGE_VERSION}"
        exit 0 ;;
 
+# Accept for compatibility
     --root-directory)
        rootdir=`argument $option "$@"`; shift ;;
     --root-directory=*)
        rootdir=`echo "$option" | sed 's/--root-directory=//'` ;;
 
+    --boot-directory)
+    bootdir=`argument $option "$@"`; shift;;
+    --boot-directory=*)
+    bootdir=`echo "$option" | sed 's/--boot-directory=//'` ;;
+
     -*)
        echo "Unrecognized option \`$option'" 1>&2
        usage
@@ -99,21 +107,17 @@ if test "x$entry" = x; then
     exit 1
 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}`
+if [ -z "$bootdir" ]; then
+    # Default bootdir if bootdir not initialized.
+    bootdir=/@bootdirname@
+
+    if [ -n "$rootdir" ] ; then
+        # Initialize bootdir if rootdir was initialized.
+        bootdir=${rootdir}/@bootdirname@
+    fi
+fi
+
+grubdir=`echo "${bootdir}/@grubdirname@" | sed 's,//*,/,g'`
 
 prev_saved_entry=`$grub_editenv ${grubdir}/grubenv list | sed -n 's/^saved_entry=//p'`
 if [ "$prev_saved_entry" ]; then
index 389c504c72707a1916040ef1cc9ab539c67048d6..b09727de2793b0549854b2ef890a664010ddd509 100644 (file)
@@ -29,6 +29,8 @@ self=`basename $0`
 
 grub_editenv=${bindir}/`echo grub-editenv | sed ${transform}`
 rootdir=
+bootdir=
+grubdir=`echo "/@bootdirname@/@grubdirname@" | sed 's,//*,/,g'`
 
 # Usage: usage
 # Print the usage.
@@ -39,8 +41,8 @@ Set the default boot entry for GRUB.
 
   -h, --help              print this message and exit
   -v, --version           print the version information and exit
-  --root-directory=DIR    expect GRUB images under the directory DIR
-                          instead of the root directory
+  --boot-directory=DIR    expect GRUB images under the directory DIR/@grubdirname@
+                          instead of the $grubdir directory
 
 ENTRY is a number or a menu item title.
 
@@ -73,11 +75,17 @@ do
        echo "$self (${PACKAGE_NAME}) ${PACKAGE_VERSION}"
        exit 0 ;;
 
+# Accept for compatibility
     --root-directory)
        rootdir=`argument $option "$@"`; shift ;;
     --root-directory=*)
        rootdir=`echo "$option" | sed 's/--root-directory=//'` ;;
 
+    --boot-directory)
+    bootdir=`argument $option "$@"`; shift;;
+    --boot-directory=*)
+    bootdir=`echo "$option" | sed 's/--boot-directory=//'` ;;
+
     -*)
        echo "Unrecognized option \`$option'" 1>&2
        usage
@@ -99,21 +107,17 @@ if test "x$entry" = x; then
     exit 1
 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}`
+if [ -z "$bootdir" ]; then
+    # Default bootdir if bootdir not initialized.
+    bootdir=/@bootdirname@
+
+    if [ -n "$rootdir" ] ; then
+        # Initialize bootdir if rootdir was initialized.
+        bootdir=${rootdir}/@bootdirname@
+    fi
+fi
+
+grubdir=`echo "${bootdir}/@grubdirname@" | sed 's,//*,/,g'`
 
 $grub_editenv ${grubdir}/grubenv unset prev_saved_entry
 $grub_editenv ${grubdir}/grubenv set saved_entry="$entry"