[1881] 2008-09-29 Felix Zielcke <[email protected]>

Felix Zielcke <[email protected]>
Newsgroups gmane.comp.boot-loaders.grub.cvs
Message-ID <[email protected]>
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  <[email protected]>

	* 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  <[email protected]>
+
+	* 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  <[email protected]>
 
 	* 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@"
+
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+sbindir=@sbindir@
+libdir=@libdir@
+sysconfdir=@sysconfdir@
+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 <[email protected]>.
+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@"
+
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+datarootdir=@datarootdir@
+datadir=@datadir@
+sbindir=@sbindir@
+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 @@
 libdir=@libdir@
 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 @@
 prefix=@prefix@
 exec_prefix=@exec_prefix@
 libdir=@libdir@
-. ${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 @@
 prefix=@prefix@
 exec_prefix=@exec_prefix@
 libdir=@libdir@
-. ${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 @@
 prefix=@prefix@
 exec_prefix=@exec_prefix@
 libdir=@libdir@
-. ${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@"
-
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-sbindir=@sbindir@
-libdir=@libdir@
-sysconfdir=@sysconfdir@
-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 <[email protected]>.
-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@"
-
 prefix=@prefix@
 exec_prefix=@exec_prefix@
-datarootdir=@datarootdir@
-datadir=@datadir@
-sbindir=@sbindir@
-pkgdatadir=${datadir}/`echo @PACKAGE_TARNAME@ | sed "${transform}"`
+libdir=@libdir@
 
-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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.