commit-grub
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[1881] 2008-09-29 Felix Zielcke <address@hidden>


From: Felix Zielcke
Subject: [1881] 2008-09-29 Felix Zielcke <address@hidden>
Date: Mon, 29 Sep 2008 14:57:06 +0000

Revision: 1881
          http://svn.sv.gnu.org/viewvc/?view=rev&root=grub&revision=1881
Author:   fzielcke
Date:     2008-09-29 14:57:05 +0000 (Mon, 29 Sep 2008)

Log Message:
-----------
2008-09-29  Felix Zielcke  <address@hidden>

        * util/update-grub_lib.in: Copy to ...
        * util/grub-mkconfig_lib.in: ... this.  Update all users.
        * util/update-grub_lib.in: Make it a stub to `grub-mkconfigig_lib.in'.
        * util/update-grub.in: Rename to ...
        * util/grub-mkconfig.in: ... this.  Update all users.  Remove `-y'
        option. Add `--output' option to allow users to specify the generated
        configuration file.  Default to stdout.
        (update_grub_dir): Rename to ...
        (grub_mkconfig_dir): ... this.
        (grub_cfg): Default to an empty string.
        * conf/common.rmk (update-grub): Rename to ...
        (grub-mkconfig): ... this.
        (update-grub_lib): Copy to ...
        (grub-mkconfig_lib): ... this.
        (update-grub_SCRIPTS): Copy to ...
        (grub-mkconfig_SCRIPTS): ... this. Update all users.
        (update-grub_DATA): Rename to ...
        (grub-mkconfig_DATA): ... this.

Modified Paths:
--------------
    trunk/grub2/ChangeLog
    trunk/grub2/DISTLIST
    trunk/grub2/Makefile.in
    trunk/grub2/conf/common.mk
    trunk/grub2/conf/common.rmk
    trunk/grub2/util/grub.d/00_header.in
    trunk/grub2/util/grub.d/10_hurd.in
    trunk/grub2/util/grub.d/10_linux.in
    trunk/grub2/util/grub.d/10_windows.in
    trunk/grub2/util/grub.d/30_os-prober.in
    trunk/grub2/util/update-grub_lib.in

Added Paths:
-----------
    trunk/grub2/util/grub-mkconfig.in
    trunk/grub2/util/grub-mkconfig_lib.in

Removed Paths:
-------------
    trunk/grub2/util/update-grub.in

Property Changed:
----------------
    trunk/grub2/


Property changes on: trunk/grub2
___________________________________________________________________
Name: svn:ignore
   - *.d
*.exec
*.img
*.lst
*.mod
*.elf
*.pff
00_header
10_hurd
10_linux
10_windows
30_os-prober
40_custom
Makefile
autom4te.cache
config.cache
config.h
config.log
config.status
genkernsyms.sh
gensymlist.sh
grub-editenv
grub-install
grub-mkdevicemap
grub-mk*image
grub-mkrescue
grub-pe2elf
grub-probe
grub-setup
grub_probe_init.c
grub_probe_init.h
grub_script.tab.c
grub_script.tab.h
grub_setup_init.c
grub_setup_init.h
mod-*.c
stamp-h
stamp-h1
symlist.c
update-grub
update-grub_lib

   + *.d
*.exec
*.img
*.lst
*.mod
*.elf
*.pff
00_header
10_hurd
10_linux
10_windows
30_os-prober
40_custom
Makefile
autom4te.cache
config.cache
config.h
config.log
config.status
genkernsyms.sh
gensymlist.sh
grub-editenv
grub-install
grub-mkconfig
grub-mkconfig_lib
grub-mkdevicemap
grub-mk*image
grub-mkrescue
grub-pe2elf
grub-probe
grub-setup
grub_probe_init.c
grub_probe_init.h
grub_script.tab.c
grub_script.tab.h
grub_setup_init.c
grub_setup_init.h
mod-*.c
stamp-h
stamp-h1
symlist.c
update-grub_lib


Modified: trunk/grub2/ChangeLog
===================================================================
--- trunk/grub2/ChangeLog       2008-09-28 15:22:28 UTC (rev 1880)
+++ trunk/grub2/ChangeLog       2008-09-29 14:57:05 UTC (rev 1881)
@@ -1,3 +1,24 @@
+2008-09-29  Felix Zielcke  <address@hidden>
+
+       * util/update-grub_lib.in: Copy to ...
+       * util/grub-mkconfig_lib.in: ... this.  Update all users.
+       * util/update-grub_lib.in: Make it a stub to `grub-mkconfigig_lib.in'.
+       * util/update-grub.in: Rename to ...
+       * util/grub-mkconfig.in: ... this.  Update all users.  Remove `-y'
+       option. Add `--output' option to allow users to specify the generated
+       configuration file.  Default to stdout.
+       (update_grub_dir): Rename to ...
+       (grub_mkconfig_dir): ... this.
+       (grub_cfg): Default to an empty string.
+       * conf/common.rmk (update-grub): Rename to ...
+       (grub-mkconfig): ... this.
+       (update-grub_lib): Copy to ...
+       (grub-mkconfig_lib): ... this.
+       (update-grub_SCRIPTS): Copy to ...
+       (grub-mkconfig_SCRIPTS): ... this. Update all users.
+       (update-grub_DATA): Rename to ...
+       (grub-mkconfig_DATA): ... this.
+
 2008-09-28  Robert Millan  <address@hidden>
 
        * fs/iso9660.c (struct grub_iso9660_primary_voldesc): Rename `created'

Modified: trunk/grub2/DISTLIST
===================================================================
--- trunk/grub2/DISTLIST        2008-09-28 15:22:28 UTC (rev 1880)
+++ trunk/grub2/DISTLIST        2008-09-29 14:57:05 UTC (rev 1881)
@@ -414,6 +414,8 @@
 util/grub-editenv.c
 util/grub-emu.c
 util/grub-fstest.c
+util/grub-mkconfig.in
+util/grub-mkconfig_lib.in
 util/grub-mkdevicemap.c
 util/grub-pe2elf.c
 util/grub-probe.c
@@ -424,7 +426,6 @@
 util/raid.c
 util/resolve.c
 util/unifont2pff.rb
-util/update-grub.in
 util/update-grub_lib.in
 util/elf/grub-mkimage.c
 util/grub.d/00_header.in

Modified: trunk/grub2/Makefile.in
===================================================================
--- trunk/grub2/Makefile.in     2008-09-28 15:22:28 UTC (rev 1880)
+++ trunk/grub2/Makefile.in     2008-09-29 14:57:05 UTC (rev 1881)
@@ -108,7 +108,7 @@
        $(pkglib_DATA) $(lib_DATA)
 PKGDATA = $(pkgdata_DATA)
 PROGRAMS = $(bin_UTILITIES) $(sbin_UTILITIES)
-SCRIPTS = $(bin_SCRIPTS) $(sbin_SCRIPTS) $(update-grub_SCRIPTS)
+SCRIPTS = $(bin_SCRIPTS) $(sbin_SCRIPTS) $(grub-mkconfig_SCRIPTS)
 
 CLEANFILES =
 MOSTLYCLEANFILES = 
@@ -209,12 +209,12 @@
          $(HELP2MAN) --section=8 $(builddir)/$$file > 
$(DESTDIR)$(mandir)/man8/$$dest.8; \
        done
        $(mkinstalldirs) $(DESTDIR)$(sysconfdir)/grub.d
-       @list='$(update-grub_SCRIPTS)'; for file in $$list; do \
+       @list='$(grub-mkconfig_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)$(sysconfdir)/grub.d/$$dest; \
        done
-       @list='$(update-grub_DATA)'; for file in $$list; do \
+       @list='$(grub-mkconfig_DATA)'; for file in $$list; do \
          if test -f "$$file"; then dir=; else dir="$(srcdir)/"; fi; \
          dest="`echo $$file | sed 's,.*/,,' | sed '$(transform)'`"; \
          $(INSTALL_DATA) $$dir$$file $(DESTDIR)$(sysconfdir)/grub.d/$$dest; \
@@ -249,7 +249,7 @@
          dest="`echo $$file | sed 's,.*/,,' | sed '$(transform)'`"; \
          rm -f $(DESTDIR)$(sbindir)/$$dest; \
        done
-       @list='$(update-grub_SCRIPTS) $(update-grub_DATA)'; for file in $$list; 
do \
+       @list='$(grub-mkconfig_SCRIPTS) $(grub-mkconfig_DATA)'; for file in 
$$list; do \
          dest="`echo $$file | sed 's,.*/,,' | sed '$(transform)'`"; \
          rm -f $(DESTDIR)$(sysconfdir)/grub.d/$$dest; \
        done

Modified: trunk/grub2/conf/common.mk
===================================================================
--- trunk/grub2/conf/common.mk  2008-09-28 15:22:28 UTC (rev 1880)
+++ trunk/grub2/conf/common.mk  2008-09-29 14:57:05 UTC (rev 1881)
@@ -526,13 +526,19 @@
 
 CLEANFILES += grub-pe2elf
 
-# For update-grub
-update-grub: util/update-grub.in config.status
+# For grub-mkconfig
+grub-mkconfig: util/grub-mkconfig.in config.status
        ./config.status --file=$@:$<
        chmod +x $@
-sbin_SCRIPTS += update-grub
-CLEANFILES += update-grub
+sbin_SCRIPTS += grub-mkconfig
+CLEANFILES += grub-mkconfig
 
+grub-mkconfig_lib: util/grub-mkconfig_lib.in config.status
+       ./config.status --file=$@:$<
+       chmod +x $@
+lib_DATA += grub-mkconfig_lib
+CLEANFILES += grub-mkconfig_lib
+
 update-grub_lib: util/update-grub_lib.in config.status
        ./config.status --file=$@:$<
        chmod +x $@
@@ -542,14 +548,14 @@
 %: util/grub.d/%.in config.status
        ./config.status --file=$@:$<
        chmod +x $@
-update-grub_SCRIPTS = 00_header 10_linux 10_hurd 30_os-prober 40_custom
+grub-mkconfig_SCRIPTS = 00_header 10_linux 10_hurd 30_os-prober 40_custom
 ifeq ($(target_os), cygwin)
-update-grub_SCRIPTS += 10_windows
+grub-mkconfig_SCRIPTS += 10_windows
 endif
 
-CLEANFILES += $(update-grub_SCRIPTS)
+CLEANFILES += $(grub-mkconfig_SCRIPTS)
 
-update-grub_DATA += util/grub.d/README
+grub-mkconfig_DATA += util/grub.d/README
 
 
 # Filing systems.

Modified: trunk/grub2/conf/common.rmk
===================================================================
--- trunk/grub2/conf/common.rmk 2008-09-28 15:22:28 UTC (rev 1880)
+++ trunk/grub2/conf/common.rmk 2008-09-29 14:57:05 UTC (rev 1881)
@@ -115,13 +115,19 @@
 grub_pe2elf_SOURCES = util/grub-pe2elf.c util/misc.c
 CLEANFILES += grub-pe2elf
 
-# For update-grub
-update-grub: util/update-grub.in config.status
+# For grub-mkconfig
+grub-mkconfig: util/grub-mkconfig.in config.status
        ./config.status --file=$@:$<
        chmod +x $@
-sbin_SCRIPTS += update-grub
-CLEANFILES += update-grub
+sbin_SCRIPTS += grub-mkconfig
+CLEANFILES += grub-mkconfig
 
+grub-mkconfig_lib: util/grub-mkconfig_lib.in config.status
+       ./config.status --file=$@:$<
+       chmod +x $@
+lib_DATA += grub-mkconfig_lib
+CLEANFILES += grub-mkconfig_lib
+
 update-grub_lib: util/update-grub_lib.in config.status
        ./config.status --file=$@:$<
        chmod +x $@
@@ -131,14 +137,14 @@
 %: util/grub.d/%.in config.status
        ./config.status --file=$@:$<
        chmod +x $@
-update-grub_SCRIPTS = 00_header 10_linux 10_hurd 30_os-prober 40_custom
+grub-mkconfig_SCRIPTS = 00_header 10_linux 10_hurd 30_os-prober 40_custom
 ifeq ($(target_os), cygwin)
-update-grub_SCRIPTS += 10_windows
+grub-mkconfig_SCRIPTS += 10_windows
 endif
 
-CLEANFILES += $(update-grub_SCRIPTS)
+CLEANFILES += $(grub-mkconfig_SCRIPTS)
 
-update-grub_DATA += util/grub.d/README
+grub-mkconfig_DATA += util/grub.d/README
 
 
 # Filing systems.

Copied: trunk/grub2/util/grub-mkconfig.in (from rev 1872, 
trunk/grub2/util/update-grub.in)
===================================================================
--- trunk/grub2/util/grub-mkconfig.in                           (rev 0)
+++ trunk/grub2/util/grub-mkconfig.in   2008-09-29 14:57:05 UTC (rev 1881)
@@ -0,0 +1,211 @@
+#! /bin/sh -e
+
+# Generate grub.cfg by inspecting /boot contents.
+# Copyright (C) 2006,2007,2008  Free Software Foundation, Inc.
+#
+# GRUB is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# GRUB is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
+
+transform="@program_transform_name@"
+
address@hidden@
address@hidden@
address@hidden@
address@hidden@
address@hidden@
+grub_prefix=`echo /boot/grub | sed ${transform}`
+grub_cfg=""
+grub_mkconfig_dir=${sysconfdir}/grub.d
+
+grub_mkdevicemap=${sbindir}/`echo grub-mkdevicemap | sed ${transform}`
+grub_probe=${sbindir}/`echo grub-probe | sed ${transform}`
+
+# Usage: usage
+# Print the usage.
+usage () {
+    cat <<EOF
+Usage: $0 [OPTION]
+Generate a grub config file
+
+  -o, --output=FILE       output generated config to FILE [default=stdout]
+  -h, --help              print this message and exit
+  -v, --version           print the version information and exit
+
+Report bugs to <address@hidden>.
+EOF
+}
+
+# Check the arguments.
+for option in "$@"; do
+    case "$option" in
+    -h | --help)
+       usage
+       exit 0 ;;
+    -v | --version)
+       echo "$0 (GNU GRUB ${PACKAGE_VERSION})"
+       exit 0 ;;
+    -o)
+       shift
+       grub_cfg=$1
+       ;;
+    --output=)
+       grub_cfg=`echo "$option" | sed 's/--output=//'`
+       ;;      
+    -*)
+       echo "Unrecognized option \`$option'" 1>&2
+       usage
+       exit 1
+       ;;
+    esac
+done
+
+. ${libdir}/grub/grub-mkconfig_lib
+
+if [ "x$EUID" = "x" ] ; then
+  EUID=`id -u`
+fi
+
+if [ "$EUID" != 0 ] ; then
+  root=f
+  case "`uname 2>/dev/null`" in
+    CYGWIN*)
+      # Cygwin: Assume root if member of admin group
+      for g in `id -G 2>/dev/null` ; do
+       case $g in
+         0|544) root=t ;;
+       esac
+      done ;;
+  esac
+  if [ $root != t ] ; then
+    echo "$0: 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
+
+# Device containing our /boot partition.  Usually the same as GRUB_DEVICE.
+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} --target=fs / 2> /dev/null || echo unknown`"
+
+if test -f ${sysconfdir}/default/grub ; then
+  . ${sysconfdir}/default/grub
+fi
+
+case x${GRUB_TERMINAL} in
+  x)
+    # If this platform supports gfxterm, try to use it.
+    if test -e ${grub_prefix}/gfxterm.mod ; then
+      GRUB_TERMINAL=gfxterm
+    fi
+  ;;
+  xconsole | xserial | xofconsole | xgfxterm) ;;
+  *) echo "Invalid terminal \"${GRUB_TERMINAL}\"" >&2 ; exit 1 ;;
+esac
+
+# check for terminals that require fonts
+case ${GRUB_TERMINAL} in
+  gfxterm)
+    if path=`font_path` ; then
+      GRUB_FONT_PATH="${path}"
+    else
+      # fallback to the native terminal for this platform
+      unset GRUB_TERMINAL
+    fi
+  ;;
+esac
+
+# does our terminal support utf-8 ?
+case ${GRUB_TERMINAL} in
+  gfxterm) ;;
+  *)
+    # make sure all our children behave in conformance with ascii..
+    export LANG=C
+  ;;
+esac
+
+# These are defined in this script, export them here so that user can
+# override them.
+export GRUB_DEVICE GRUB_DEVICE_UUID GRUB_DEVICE_BOOT GRUB_DEVICE_BOOT_UUID 
GRUB_FS GRUB_FONT_PATH GRUB_PRELOAD_MODULES
+
+# These are optional, user-defined variables.
+export GRUB_DEFAULT GRUB_TIMEOUT GRUB_DISTRIBUTOR GRUB_CMDLINE_LINUX 
GRUB_CMDLINE_LINUX_DEFAULT GRUB_TERMINAL GRUB_SERIAL_COMMAND 
GRUB_DISABLE_LINUX_UUID GRUB_GFXMODE
+
+if test "x${grub_cfg}" != "x"; then
+  rm -f ${grub_cfg}.new
+  exec > ${grub_cfg}.new
+
+  # Allow this to fail, since /boot/grub/ might need to be fatfs to support 
some
+  # firmware implementations (e.g. OFW or EFI).
+  chmod 444 ${grub_cfg}.new || true
+fi
+echo "Generating grub.cfg ..." >&2
+
+cat << EOF
+#
+# DO NOT EDIT THIS FILE
+#
+# It is automatically generated by $0 using templates
+# from ${update_grub_dir} and settings from ${sysconfdir}/default/grub
+#
+EOF
+
+for i in ${grub_mkconfig_dir}/* ; do
+  case "$i" in
+    # emacsen backup files. FIXME: support other editors
+    *~) ;;
+    *)
+      if grub_file_is_not_garbage "$i" && test -x "$i" ; then
+        echo
+        echo "### BEGIN $i ###"
+        "$i"
+        echo "### END $i ###"
+      fi
+    ;;
+  esac
+done
+
+if test "x${grub_cfg}" != "x" ; then
+  # none of the children aborted with error, install the new grub.cfg
+  mv -f ${grub_cfg}.new ${grub_cfg}
+fi
+
+echo "done" >&2


Property changes on: trunk/grub2/util/grub-mkconfig.in
___________________________________________________________________
Name: cvs2svn:cvs-rev
   + 1.26
Name: svn:keywords
   + Author Date Id Revision
Name: svn:mergeinfo
   + 
Name: svn:eol-style
   + native

Copied: trunk/grub2/util/grub-mkconfig_lib.in (from rev 1872, 
trunk/grub2/util/update-grub_lib.in)
===================================================================
--- trunk/grub2/util/grub-mkconfig_lib.in                               (rev 0)
+++ trunk/grub2/util/grub-mkconfig_lib.in       2008-09-29 14:57:05 UTC (rev 
1881)
@@ -0,0 +1,173 @@
+# Helper library for grub-mkconfig
+# Copyright (C) 2007,2008  Free Software Foundation, Inc.
+#
+# GRUB is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# GRUB is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
+
+transform="@program_transform_name@"
+
address@hidden@
address@hidden@
address@hidden@
address@hidden@
address@hidden@
+pkgdatadir=${datadir}/`echo @PACKAGE_TARNAME@ | sed "${transform}"`
+
+grub_probe=${sbindir}/`echo grub-probe | sed ${transform}`
+
+make_system_path_relative_to_its_root ()
+{
+  path=$1
+  # abort if file doesn't exist
+  if test -e $path ; then : ;else
+    return 1
+  fi
+
+  # canonicalize
+  if path=`readlink -f $path` ; then : ; else
+    return 1
+  fi
+
+  # if not a directory, climb up to the directory containing it
+  if test -d $path ; then
+    dir=$path
+  else
+    dir=`echo $path | sed -e "s,/[^/]*$,,g"`
+  fi
+
+  num=`stat -c %d $dir`
+
+  # this loop sets $dir to the root directory of the filesystem we're 
inspecting
+  while : ; do
+    parent=`readlink -f $dir/..`
+    if [ "x`stat -c %d $parent`" = "x$num" ] ; then : ; else
+      # $parent is another filesystem; we found it.
+      break
+    fi
+    if [ "x$dir" = "x/" ] ; then
+      # / is our root.
+      break
+    fi
+    dir=$parent
+  done
+
+  # This function never prints trailing slashes (so that its output can be
+  # appended a slash unconditionally).  Each slash in $dir is considered a
+  # preceding slash, and therefore the root directory is an empty string.
+  if [ "$dir" = "/" ] ; then
+    dir=""
+  fi
+
+  # XXX: This fails if $dir contains ','.
+  path=`echo "$path" | sed -e "s,^$dir,,g"` || return 1
+
+  case "`uname 2>/dev/null`" in
+    CYGWIN*)
+      # Cygwin: Check if regular or emulated mount.
+      if [ -z "$dir" ] || [ "`stat -c %D "$dir/.."`" != 620000 ] ; then
+        # Reached some mount point not below /cygdrive.
+        # GRUB does not know Cygwin's emulated mounts,
+        # convert to Win32 path and remove drive letter.
+        path=`cygpath -m "$path" | sed -n 's,^[A-Za-z]:,,p'`
+        test ! -z "$path" || return 1
+      fi ;;
+  esac
+
+  echo "$path"
+}
+
+is_path_readable_by_grub ()
+{
+  path=$1
+
+  # abort if path doesn't exist
+  if test -e $path ; then : ;else
+    return 1
+  fi
+
+  # abort if file is in a filesystem we can't read
+  if ${grub_probe} -t fs $path > /dev/null 2>&1 ; then : ; else
+    return 1
+  fi
+
+  return 0
+}
+
+convert_system_path_to_grub_path ()
+{
+  path=$1
+
+  echo "Warning: convert_system_path_to_grub_path() is deprecated.  Use 
prepare_grub_to_access_device() instead." >&2
+
+  # abort if GRUB can't access the path
+  if is_path_readable_by_grub ${path} ; then : ; else
+    return 1
+  fi
+
+  if drive=`${grub_probe} -t drive $path` ; then : ; else
+    return 1
+  fi
+
+  if relative_path=`make_system_path_relative_to_its_root $path` ; then : ; 
else
+    return 1
+  fi
+
+  echo ${drive}${relative_path}
+}
+
+prepare_grub_to_access_device ()
+{
+  device=$1
+
+  # Abstraction modules aren't auto-loaded.
+  abstraction="`${grub_probe} --device ${device} --target=abstraction`"
+  if [ "x${abstraction}" = "x" ] ; then : ; else
+    echo "insmod ${abstraction}"
+  fi
+
+  # If there's a filesystem UUID that GRUB is capable of identifying, use it;
+  # otherwise set root as per value in device.map.
+  echo "set root=`${grub_probe} --device ${device} --target=drive`"
+  if fs_uuid="`${grub_probe} --device ${device} --target=fs_uuid 2> 
/dev/null`" ; then
+    echo "search --fs-uuid --set ${fs_uuid}"
+  fi
+}
+
+font_path ()
+{
+  for dir in ${pkgdatadir} /boot/grub /usr/share/grub ; do
+    # FIXME: We prefer ascii because loading complete fonts is too slow (and
+    # we don't yet provide the gettext magic that would make unicode useful).
+    for basename in ascii unicode unifont ; do
+      path="${dir}/${basename}.pff"
+      if is_path_readable_by_grub ${path} > /dev/null ; then
+        echo "${path}"
+        return 0
+      fi
+    done
+  done
+
+  return 1
+}
+
+grub_file_is_not_garbage ()
+{
+  if test -f "$1" ; then
+    case "$1" in
+      *.dpkg-dist|*.dpkg-old|*.dpkg-tmp) return 1 ;; # debian dpkg
+    esac
+  else
+    return 1
+  fi
+  return 0
+}


Property changes on: trunk/grub2/util/grub-mkconfig_lib.in
___________________________________________________________________
Name: cvs2svn:cvs-rev
   + 1.20
Name: svn:keywords
   + Author Date Id Revision
Name: svn:mergeinfo
   + 
Name: svn:eol-style
   + native

Modified: trunk/grub2/util/grub.d/00_header.in
===================================================================
--- trunk/grub2/util/grub.d/00_header.in        2008-09-28 15:22:28 UTC (rev 
1880)
+++ trunk/grub2/util/grub.d/00_header.in        2008-09-29 14:57:05 UTC (rev 
1881)
@@ -23,7 +23,7 @@
 address@hidden@
 grub_prefix=`echo /boot/grub | sed ${transform}`
 
-. ${libdir}/grub/update-grub_lib
+. ${libdir}/grub/grub-mkconfig_lib
 
 # Do this as early as possible, since other commands might depend on it.
 # (e.g. the `font' command might need lvm or raid modules)

Modified: trunk/grub2/util/grub.d/10_hurd.in
===================================================================
--- trunk/grub2/util/grub.d/10_hurd.in  2008-09-28 15:22:28 UTC (rev 1880)
+++ trunk/grub2/util/grub.d/10_hurd.in  2008-09-29 14:57:05 UTC (rev 1881)
@@ -19,7 +19,7 @@
 address@hidden@
 address@hidden@
 address@hidden@
-. ${libdir}/grub/update-grub_lib
+. ${libdir}/grub/grub-mkconfig_lib
 
 if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
   OS=GNU

Modified: trunk/grub2/util/grub.d/10_linux.in
===================================================================
--- trunk/grub2/util/grub.d/10_linux.in 2008-09-28 15:22:28 UTC (rev 1880)
+++ trunk/grub2/util/grub.d/10_linux.in 2008-09-29 14:57:05 UTC (rev 1881)
@@ -19,7 +19,7 @@
 address@hidden@
 address@hidden@
 address@hidden@
-. ${libdir}/grub/update-grub_lib
+. ${libdir}/grub/grub-mkconfig_lib
 
 if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
   OS=GNU/Linux

Modified: trunk/grub2/util/grub.d/10_windows.in
===================================================================
--- trunk/grub2/util/grub.d/10_windows.in       2008-09-28 15:22:28 UTC (rev 
1880)
+++ trunk/grub2/util/grub.d/10_windows.in       2008-09-29 14:57:05 UTC (rev 
1881)
@@ -19,7 +19,7 @@
 address@hidden@
 address@hidden@
 address@hidden@
-. ${libdir}/grub/update-grub_lib
+. ${libdir}/grub/grub-mkconfig_lib
 
 case "`uname 2>/dev/null`" in
   CYGWIN*)  ;;

Modified: trunk/grub2/util/grub.d/30_os-prober.in
===================================================================
--- trunk/grub2/util/grub.d/30_os-prober.in     2008-09-28 15:22:28 UTC (rev 
1880)
+++ trunk/grub2/util/grub.d/30_os-prober.in     2008-09-29 14:57:05 UTC (rev 
1881)
@@ -83,7 +83,7 @@
       done
     ;;
     hurd|*)
-      echo "  ${LONGNAME} is not yet supported by update-grub." >&2
+      echo "  ${LONGNAME} is not yet supported by grub-mkconfig." >&2
     ;;
   esac
 done

Deleted: trunk/grub2/util/update-grub.in
===================================================================
--- trunk/grub2/util/update-grub.in     2008-09-28 15:22:28 UTC (rev 1880)
+++ trunk/grub2/util/update-grub.in     2008-09-29 14:57:05 UTC (rev 1881)
@@ -1,204 +0,0 @@
-#! /bin/sh -e
-
-# Generate grub.cfg by inspecting /boot contents.
-# Copyright (C) 2006,2007,2008  Free Software Foundation, Inc.
-#
-# GRUB is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# GRUB is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
-
-transform="@program_transform_name@"
-
address@hidden@
address@hidden@
address@hidden@
address@hidden@
address@hidden@
-grub_prefix=`echo /boot/grub | sed ${transform}`
-grub_cfg=${grub_prefix}/grub.cfg
-update_grub_dir=${sysconfdir}/grub.d
-
-grub_mkdevicemap=${sbindir}/`echo grub-mkdevicemap | sed ${transform}`
-grub_probe=${sbindir}/`echo grub-probe | sed ${transform}`
-
-# Usage: usage
-# Print the usage.
-usage () {
-    cat <<EOF
-Usage: $0 [OPTION]
-Generate /boot/grub/grub.cfg
-
-  -h, --help              print this message and exit
-  -v, --version           print the version information and exit
-  -y                      ignored for compatibility
-
-Report bugs to <address@hidden>.
-EOF
-}
-
-# Check the arguments.
-for option in "$@"; do
-    case "$option" in
-    -h | --help)
-       usage
-       exit 0 ;;
-    -v | --version)
-       echo "$0 (GNU GRUB ${PACKAGE_VERSION})"
-       exit 0 ;;
-    -y)
-        echo "$0: warning: Ignoring -y option (no longer needed)." >&2
-        ;;
-    -*)
-       echo "Unrecognized option \`$option'" 1>&2
-       usage
-       exit 1
-       ;;
-    esac
-done
-
-. ${libdir}/grub/update-grub_lib
-
-if [ "x$EUID" = "x" ] ; then
-  EUID=`id -u`
-fi
-
-if [ "$EUID" != 0 ] ; then
-  root=f
-  case "`uname 2>/dev/null`" in
-    CYGWIN*)
-      # Cygwin: Assume root if member of admin group
-      for g in `id -G 2>/dev/null` ; do
-       case $g in
-         0|544) root=t ;;
-       esac
-      done ;;
-  esac
-  if [ $root != t ] ; then
-    echo "$0: 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
-
-# Device containing our /boot partition.  Usually the same as GRUB_DEVICE.
-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} --target=fs / 2> /dev/null || echo unknown`"
-
-if test -f ${sysconfdir}/default/grub ; then
-  . ${sysconfdir}/default/grub
-fi
-
-case x${GRUB_TERMINAL} in
-  x)
-    # If this platform supports gfxterm, try to use it.
-    if test -e ${grub_prefix}/gfxterm.mod ; then
-      GRUB_TERMINAL=gfxterm
-    fi
-  ;;
-  xconsole | xserial | xofconsole | xgfxterm) ;;
-  *) echo "Invalid terminal \"${GRUB_TERMINAL}\"" >&2 ; exit 1 ;;
-esac
-
-# check for terminals that require fonts
-case ${GRUB_TERMINAL} in
-  gfxterm)
-    if path=`font_path` ; then
-      GRUB_FONT_PATH="${path}"
-    else
-      # fallback to the native terminal for this platform
-      unset GRUB_TERMINAL
-    fi
-  ;;
-esac
-
-# does our terminal support utf-8 ?
-case ${GRUB_TERMINAL} in
-  gfxterm) ;;
-  *)
-    # make sure all our children behave in conformance with ascii..
-    export LANG=C
-  ;;
-esac
-
-# These are defined in this script, export them here so that user can
-# override them.
-export GRUB_DEVICE GRUB_DEVICE_UUID GRUB_DEVICE_BOOT GRUB_DEVICE_BOOT_UUID 
GRUB_FS GRUB_FONT_PATH GRUB_PRELOAD_MODULES
-
-# These are optional, user-defined variables.
-export GRUB_DEFAULT GRUB_TIMEOUT GRUB_DISTRIBUTOR GRUB_CMDLINE_LINUX 
GRUB_CMDLINE_LINUX_DEFAULT GRUB_TERMINAL GRUB_SERIAL_COMMAND 
GRUB_DISABLE_LINUX_UUID GRUB_GFXMODE
-
-rm -f ${grub_cfg}.new
-exec > ${grub_cfg}.new
-
-# Allow this to fail, since /boot/grub/ might need to be fatfs to support some
-# firmware implementations (e.g. OFW or EFI).
-chmod 444 ${grub_cfg}.new || true
-
-echo "Updating ${grub_cfg} ..." >&2
-
-cat << EOF
-#
-# DO NOT EDIT THIS FILE
-#
-# It is automatically generated by $0 using templates
-# from ${update_grub_dir} and settings from ${sysconfdir}/default/grub
-#
-EOF
-
-for i in ${update_grub_dir}/* ; do
-  case "$i" in
-    # emacsen backup files. FIXME: support other editors
-    *~) ;;
-    *)
-      if grub_file_is_not_garbage "$i" && test -x "$i" ; then
-        echo
-        echo "### BEGIN $i ###"
-        "$i"
-        echo "### END $i ###"
-      fi
-    ;;
-  esac
-done
-
-# none of the children aborted with error, install the new grub.cfg
-mv -f ${grub_cfg}.new ${grub_cfg}
-
-echo "done" >&2

Modified: trunk/grub2/util/update-grub_lib.in
===================================================================
--- trunk/grub2/util/update-grub_lib.in 2008-09-28 15:22:28 UTC (rev 1880)
+++ trunk/grub2/util/update-grub_lib.in 2008-09-29 14:57:05 UTC (rev 1881)
@@ -1,4 +1,4 @@
-# Helper library for update-grub
+# stub for new grub-mkconfig_lib
 # Copyright (C) 2007,2008  Free Software Foundation, Inc.
 #
 # GRUB is free software: you can redistribute it and/or modify
@@ -14,160 +14,9 @@
 # You should have received a copy of the GNU General Public License
 # along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
 
-transform="@program_transform_name@"
-
 address@hidden@
 address@hidden@
address@hidden@
address@hidden@
address@hidden@
-pkgdatadir=${datadir}/`echo @PACKAGE_TARNAME@ | sed "${transform}"`
address@hidden@
 
-grub_probe=${sbindir}/`echo grub-probe | sed ${transform}`
-
-make_system_path_relative_to_its_root ()
-{
-  path=$1
-  # abort if file doesn't exist
-  if test -e $path ; then : ;else
-    return 1
-  fi
-
-  # canonicalize
-  if path=`readlink -f $path` ; then : ; else
-    return 1
-  fi
-
-  # if not a directory, climb up to the directory containing it
-  if test -d $path ; then
-    dir=$path
-  else
-    dir=`echo $path | sed -e "s,/[^/]*$,,g"`
-  fi
-
-  num=`stat -c %d $dir`
-
-  # this loop sets $dir to the root directory of the filesystem we're 
inspecting
-  while : ; do
-    parent=`readlink -f $dir/..`
-    if [ "x`stat -c %d $parent`" = "x$num" ] ; then : ; else
-      # $parent is another filesystem; we found it.
-      break
-    fi
-    if [ "x$dir" = "x/" ] ; then
-      # / is our root.
-      break
-    fi
-    dir=$parent
-  done
-
-  # This function never prints trailing slashes (so that its output can be
-  # appended a slash unconditionally).  Each slash in $dir is considered a
-  # preceding slash, and therefore the root directory is an empty string.
-  if [ "$dir" = "/" ] ; then
-    dir=""
-  fi
-
-  # XXX: This fails if $dir contains ','.
-  path=`echo "$path" | sed -e "s,^$dir,,g"` || return 1
-
-  case "`uname 2>/dev/null`" in
-    CYGWIN*)
-      # Cygwin: Check if regular or emulated mount.
-      if [ -z "$dir" ] || [ "`stat -c %D "$dir/.."`" != 620000 ] ; then
-        # Reached some mount point not below /cygdrive.
-        # GRUB does not know Cygwin's emulated mounts,
-        # convert to Win32 path and remove drive letter.
-        path=`cygpath -m "$path" | sed -n 's,^[A-Za-z]:,,p'`
-        test ! -z "$path" || return 1
-      fi ;;
-  esac
-
-  echo "$path"
-}
-
-is_path_readable_by_grub ()
-{
-  path=$1
-
-  # abort if path doesn't exist
-  if test -e $path ; then : ;else
-    return 1
-  fi
-
-  # abort if file is in a filesystem we can't read
-  if ${grub_probe} -t fs $path > /dev/null 2>&1 ; then : ; else
-    return 1
-  fi
-
-  return 0
-}
-
-convert_system_path_to_grub_path ()
-{
-  path=$1
-
-  echo "Warning: convert_system_path_to_grub_path() is deprecated.  Use 
prepare_grub_to_access_device() instead." >&2
-
-  # abort if GRUB can't access the path
-  if is_path_readable_by_grub ${path} ; then : ; else
-    return 1
-  fi
-
-  if drive=`${grub_probe} -t drive $path` ; then : ; else
-    return 1
-  fi
-
-  if relative_path=`make_system_path_relative_to_its_root $path` ; then : ; 
else
-    return 1
-  fi
-
-  echo ${drive}${relative_path}
-}
-
-prepare_grub_to_access_device ()
-{
-  device=$1
-
-  # Abstraction modules aren't auto-loaded.
-  abstraction="`${grub_probe} --device ${device} --target=abstraction`"
-  if [ "x${abstraction}" = "x" ] ; then : ; else
-    echo "insmod ${abstraction}"
-  fi
-
-  # If there's a filesystem UUID that GRUB is capable of identifying, use it;
-  # otherwise set root as per value in device.map.
-  echo "set root=`${grub_probe} --device ${device} --target=drive`"
-  if fs_uuid="`${grub_probe} --device ${device} --target=fs_uuid 2> 
/dev/null`" ; then
-    echo "search --fs-uuid --set ${fs_uuid}"
-  fi
-}
-
-font_path ()
-{
-  for dir in ${pkgdatadir} /boot/grub /usr/share/grub ; do
-    # FIXME: We prefer ascii because loading complete fonts is too slow (and
-    # we don't yet provide the gettext magic that would make unicode useful).
-    for basename in ascii unicode unifont ; do
-      path="${dir}/${basename}.pff"
-      if is_path_readable_by_grub ${path} > /dev/null ; then
-        echo "${path}"
-        return 0
-      fi
-    done
-  done
-
-  return 1
-}
-
-grub_file_is_not_garbage ()
-{
-  if test -f "$1" ; then
-    case "$1" in
-      *.dpkg-dist|*.dpkg-old|*.dpkg-tmp) return 1 ;; # debian dpkg
-    esac
-  else
-    return 1
-  fi
-  return 0
-}
+echo "warning: this file is deprecated, use grub-mkconfig_lib instead" >&2
+. ${libdir}/grub/grub-mkconfig_lib






reply via email to

[Prev in Thread] Current Thread [Next in Thread]