[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [1881] 2008-09-29 Felix Zielcke <address@hidden>,
Felix Zielcke <=