* [RFC] rename update-grub to update-grubcfg @ 2008-09-04 12:22 Felix Zielcke 2008-09-04 13:56 ` Pavel Roskin 0 siblings, 1 reply; 16+ messages in thread From: Felix Zielcke @ 2008-09-04 12:22 UTC (permalink / raw) To: The development of GRUB 2 There was already the topic to rename update-grub to grub-update[0] On Debian such things are always called update-something not something-update[1] I just told again in a Debian Bugreport to use grub-install to update grub in real. So I suggest to rename update-grub to something like update-grubcfg or update-grub-cfg in the hope this makes it more clear for people that this is mainly for /boot/grub/grub.cfg and not for updating everything else for grub too. [0] http://lists.gnu.org/archive/html/grub-devel/2008-02/msg00354.html [1] fz@fz:/usr/sbin$ ls update-* *-update ls: cannot access *-update: No such file or directory update-alternatives update-fonts-alias update-gdkpixbuf-loaders update-icon-caches update-mime update-rc.d update-ca-certificates update-fonts-dir update-grub update-inetd update-pangox-aliases update-usbids update-catalog update-fonts-scale update-grub2 update-initramfs update-passwd update-xmlcatalog update-flashplugin-nonfree update-gconf-defaults update-gtk-immodules update-locale update-python-modules -- Felix Zielcke ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [RFC] rename update-grub to update-grubcfg 2008-09-04 12:22 [RFC] rename update-grub to update-grubcfg Felix Zielcke @ 2008-09-04 13:56 ` Pavel Roskin 2008-09-04 17:38 ` Vesa Jääskeläinen 0 siblings, 1 reply; 16+ messages in thread From: Pavel Roskin @ 2008-09-04 13:56 UTC (permalink / raw) To: The development of GRUB 2 On Thu, 2008-09-04 at 14:22 +0200, Felix Zielcke wrote: > There was already the topic to rename update-grub to grub-update[0] > > On Debian such things are always called update-something not > something-update[1] > > I just told again in a Debian Bugreport to use grub-install to update > grub in real. > > So I suggest to rename update-grub to something like update-grubcfg or > update-grub-cfg in the hope this makes it more clear for people that > this is mainly for /boot/grub/grub.cfg and not for updating everything > else for grub too. If you are going to rename it, please use a name starting with "grub", not with "update". Debian is free to provide a wrapper starting with "update". -- Regards, Pavel Roskin ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [RFC] rename update-grub to update-grubcfg 2008-09-04 13:56 ` Pavel Roskin @ 2008-09-04 17:38 ` Vesa Jääskeläinen 2008-09-04 17:50 ` Felix Zielcke 0 siblings, 1 reply; 16+ messages in thread From: Vesa Jääskeläinen @ 2008-09-04 17:38 UTC (permalink / raw) To: The development of GRUB 2 Pavel Roskin wrote: > On Thu, 2008-09-04 at 14:22 +0200, Felix Zielcke wrote: >> There was already the topic to rename update-grub to grub-update[0] >> >> On Debian such things are always called update-something not >> something-update[1] >> >> I just told again in a Debian Bugreport to use grub-install to update >> grub in real. >> >> So I suggest to rename update-grub to something like update-grubcfg or >> update-grub-cfg in the hope this makes it more clear for people that >> this is mainly for /boot/grub/grub.cfg and not for updating everything >> else for grub too. > > If you are going to rename it, please use a name starting with "grub", > not with "update". Debian is free to provide a wrapper starting with > "update". How about grub-update-config ? ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [RFC] rename update-grub to update-grubcfg 2008-09-04 17:38 ` Vesa Jääskeläinen @ 2008-09-04 17:50 ` Felix Zielcke 2008-09-04 19:45 ` Robert Millan 0 siblings, 1 reply; 16+ messages in thread From: Felix Zielcke @ 2008-09-04 17:50 UTC (permalink / raw) To: The development of GRUB 2 Am Donnerstag, den 04.09.2008, 20:38 +0300 schrieb Vesa Jääskeläinen: > > If you are going to rename it, please use a name starting with "grub", > > not with "update". Debian is free to provide a wrapper starting with > > "update". > > How about grub-update-config ? I have now read over the old thread, I was just too lazy first and it was half a year old anyway. Okuji suggested grub-update-config too. Personally as a user I would still prefer update-grub* and even install-grub Because you are update'ing grub's config and installing grub grub-mkdevicemap and grub-probe make sense that way make device map for grub probe for a grub device Though yes for consistency everything grub-* would be better. It's just like Robert already said on the old thread, Debian people know it as update-grub from grub-legacy. So there should be some update-grub wrapper/stub for a while, with a hint that it's deprecated now. For Debian it doestn't matter much how it gets changed, the problem is more the change itself ;) And I share Robert's opinion, that we (as in: the 2 active GRUB Debian Maintainers) shouldn't diverge much from upstream (i.e. you ;) like it was done on grub-legacy. -- Felix Zielcke ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [RFC] rename update-grub to update-grubcfg 2008-09-04 17:50 ` Felix Zielcke @ 2008-09-04 19:45 ` Robert Millan 2008-09-15 17:56 ` Felix Zielcke 0 siblings, 1 reply; 16+ messages in thread From: Robert Millan @ 2008-09-04 19:45 UTC (permalink / raw) To: The development of GRUB 2 On Thu, Sep 04, 2008 at 07:50:19PM +0200, Felix Zielcke wrote: > > I have now read over the old thread, I was just too lazy first and it > was half a year old anyway. > Okuji suggested grub-update-config too. > > Personally as a user I would still prefer update-grub* and even > install-grub > Because you are update'ing grub's config and installing grub > grub-mkdevicemap and grub-probe make sense that way > make device map for grub > probe for a grub device > > Though yes for consistency everything grub-* would be better. > It's just like Robert already said on the old thread, Debian people know > it as update-grub from grub-legacy. > > So there should be some update-grub wrapper/stub for a while, with a > hint that it's deprecated now. Since we're going for a change, why not fix the CLI while at it? It'd be much more flexible and consistent if the command was meant to *generate* a grub.cfg rather than update the canonical /boot/grub/grub.cfg. This way, one could implement update-grub as, say: #!/bin/bash grub-mkconfig > /boot/grub/grub.cfg (oversimplified, but you get the point) or be able to do other kind of magic, like: #!/bin/bash grub-mkconfig > /boot/grub/grub.cfg.autogen and then let user choose if they want their grub.cfg to be a symlink to grub.cfg.autogen or a standalone, user-editted file (this is a common user request). Then we could provide an update-grub implementation, or leave it to distributors like Debian to do it for the sake of backwards compatibility. -- Robert Millan The DRM opt-in fallacy: "Your data belongs to us. We will decide when (and how) you may access your data; but nobody's threatening your freedom: we still allow you to remove your data and not access it at all." ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [RFC] rename update-grub to update-grubcfg 2008-09-04 19:45 ` Robert Millan @ 2008-09-15 17:56 ` Felix Zielcke 2008-09-15 18:14 ` Vesa Jääskeläinen 0 siblings, 1 reply; 16+ messages in thread From: Felix Zielcke @ 2008-09-15 17:56 UTC (permalink / raw) To: The development of GRUB 2 [-- Attachment #1: Type: text/plain, Size: 487 bytes --] Am Donnerstag, den 04.09.2008, 21:45 +0200 schrieb Robert Millan: > > Since we're going for a change, why not fix the CLI while at it? > > It'd be much more flexible and consistent if the command was meant to > *generate* a grub.cfg rather than update the canonical /boot/grub/grub.cfg. > Attached is now a patch which renames it to grub-mkconf and prints it to stdout instead of grub.cfg file. I kept the Found kernel/initrd etc. stuff to stderr, but maybe this should be removed ? [-- Attachment #2: mkconf.diff --] [-- Type: text/x-patch, Size: 16464 bytes --] 008-09-15 Felix Zielcke <fzielcke@z-51.de> * util/update-grub_lib.in: Rename to ... * util/grub-mkconfig_lib.in: ... this. Update all users. * util/update-grub.in: Rename to ... * util/grub-mkconf.in: ... this. Update all users. Print generated config to stdout. (update_grub_dir): Rename to ... (grub_mkconf_dir): ... this. * conf/common.rmk (update-grub): Rename to ... (grub-mkconf): ... this. (update-grub_lib): Rename to ... (grub-mkconf_lib): ... this. (update-grub_SCRIPTS): Rename to ... (grub-mkconf_SCRIPTS): ... this. Update all users. (update-grub_DATA): Rename to ... (grub-mkconf_DATA): ... this. Index: Makefile.in =================================================================== --- Makefile.in (revision 1863) +++ Makefile.in (working copy) @@ -108,7 +108,7 @@ PKGLIB = $(pkglib_IMAGES) $(pkglib_MODUL $(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-mkconf_SCRIPTS) CLEANFILES = MOSTLYCLEANFILES = @@ -209,12 +209,12 @@ install-local: all $(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-mkconf_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-mkconf_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 @@ uninstall: 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-mkconf_SCRIPTS) $(grub-mkconf_DATA)'; for file in $$list; do \ dest="`echo $$file | sed 's,.*/,,' | sed '$(transform)'`"; \ rm -f $(DESTDIR)$(sysconfdir)/grub.d/$$dest; \ done Index: conf/common.rmk =================================================================== --- conf/common.rmk (revision 1863) +++ conf/common.rmk (working copy) @@ -115,30 +115,30 @@ endif 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-mkconf +grub-mkconf: util/grub-mkconf.in config.status ./config.status --file=$@:$< chmod +x $@ -sbin_SCRIPTS += update-grub -CLEANFILES += update-grub +sbin_SCRIPTS += grub-mkconf +CLEANFILES += grub-mkconf -update-grub_lib: util/update-grub_lib.in config.status +grub-mkconf_lib: util/grub-mkconf_lib.in config.status ./config.status --file=$@:$< chmod +x $@ -lib_DATA += update-grub_lib -CLEANFILES += update-grub_lib +lib_DATA += grub-mkconf_lib +CLEANFILES += grub-mkconf_lib %: 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-mkconf_SCRIPTS = 00_header 10_linux 10_hurd 30_os-prober 40_custom ifeq ($(target_os), cygwin) -update-grub_SCRIPTS += 10_windows +grub-mkconf_SCRIPTS += 10_windows endif -CLEANFILES += $(update-grub_SCRIPTS) +CLEANFILES += $(grub-mkconf_SCRIPTS) -update-grub_DATA += util/grub.d/README +grub-mkconf_DATA += util/grub.d/README # Filing systems. Index: util/grub-mkconf.in =================================================================== --- util/grub-mkconf.in (revision 1863) +++ util/grub-mkconf.in (working copy) @@ -25,7 +25,7 @@ libdir=@libdir@ sysconfdir=@sysconfdir@ grub_prefix=`echo /boot/grub | sed ${transform}` grub_cfg=${grub_prefix}/grub.cfg -update_grub_dir=${sysconfdir}/grub.d +grub_mkconf_dir=${sysconfdir}/grub.d grub_mkdevicemap=${sbindir}/`echo grub-mkdevicemap | sed ${transform}` grub_probe=${sbindir}/`echo grub-probe | sed ${transform}` @@ -165,14 +165,7 @@ export GRUB_DEVICE GRUB_DEVICE_UUID GRUB # 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 +echo "Generating grub.cfg ..." >&2 cat << EOF # @@ -183,7 +176,7 @@ cat << EOF # EOF -for i in ${update_grub_dir}/* ; do +for i in ${grub_mkconf_dir}/* ; do case "$i" in # emacsen backup files. FIXME: support other editors *~) ;; @@ -198,7 +191,4 @@ for i in ${update_grub_dir}/* ; do esac done -# none of the children aborted with error, install the new grub.cfg -mv -f ${grub_cfg}.new ${grub_cfg} - echo "done" >&2 Property changes on: util/grub-mkconf.in ___________________________________________________________________ Added: svn:mergeinfo Index: util/update-grub.in =================================================================== --- util/update-grub.in (revision 1863) +++ util/update-grub.in (working copy) @@ -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 <bug-grub@gnu.org>. -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 Index: util/grub-mkconf_lib.in =================================================================== --- util/grub-mkconf_lib.in (revision 1863) +++ util/grub-mkconf_lib.in (working copy) @@ -1,4 +1,4 @@ -# Helper library for update-grub +# Helper library for grub-mkconf # Copyright (C) 2007,2008 Free Software Foundation, Inc. # # GRUB is free software: you can redistribute it and/or modify Property changes on: util/grub-mkconf_lib.in ___________________________________________________________________ Added: svn:mergeinfo Index: util/update-grub_lib.in =================================================================== --- util/update-grub_lib.in (revision 1863) +++ util/update-grub_lib.in (working copy) @@ -1,173 +0,0 @@ -# Helper library for update-grub -# 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 -} ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [RFC] rename update-grub to update-grubcfg 2008-09-15 17:56 ` Felix Zielcke @ 2008-09-15 18:14 ` Vesa Jääskeläinen 2008-09-17 13:56 ` Robert Millan 0 siblings, 1 reply; 16+ messages in thread From: Vesa Jääskeläinen @ 2008-09-15 18:14 UTC (permalink / raw) To: The development of GRUB 2 Felix Zielcke wrote: > Am Donnerstag, den 04.09.2008, 21:45 +0200 schrieb Robert Millan: >> Since we're going for a change, why not fix the CLI while at it? >> >> It'd be much more flexible and consistent if the command was meant to >> *generate* a grub.cfg rather than update the canonical /boot/grub/grub.cfg. >> > > Attached is now a patch which renames it to grub-mkconf and prints it to > stdout instead of grub.cfg file. > I kept the Found kernel/initrd etc. stuff to stderr, but maybe this > should be removed ? mkconf? Could it be a bit more verbose ;)... if we are to go path of grub-mkconfig (or even grub-make-config). Thou I prefer myself grub-update-config being more descriptive on what it does. grub-update-config --out <file> could be easily used to override where to save the generate configuration file. ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [RFC] rename update-grub to update-grubcfg 2008-09-15 18:14 ` Vesa Jääskeläinen @ 2008-09-17 13:56 ` Robert Millan 2008-09-17 14:31 ` Vesa Jääskeläinen 0 siblings, 1 reply; 16+ messages in thread From: Robert Millan @ 2008-09-17 13:56 UTC (permalink / raw) To: The development of GRUB 2 On Mon, Sep 15, 2008 at 09:14:03PM +0300, Vesa Jääskeläinen wrote: > Felix Zielcke wrote: > > Am Donnerstag, den 04.09.2008, 21:45 +0200 schrieb Robert Millan: > >> Since we're going for a change, why not fix the CLI while at it? > >> > >> It'd be much more flexible and consistent if the command was meant to > >> *generate* a grub.cfg rather than update the canonical /boot/grub/grub.cfg. > >> > > > > Attached is now a patch which renames it to grub-mkconf and prints it to > > stdout instead of grub.cfg file. > > I kept the Found kernel/initrd etc. stuff to stderr, but maybe this > > should be removed ? > > mkconf? > > Could it be a bit more verbose ;)... if we are to go path of > grub-mkconfig (or even grub-make-config). I like my bikeshed with "config" in it, too. ;-) > Thou I prefer myself > grub-update-config being more descriptive on what it does. With the proposed behaviour, it wouldn't be "updating" anything. That depends on how it is used (one could just want to generate grub.cfg a single time, or so). > grub-update-config --out <file> could be easily used to override where > to save the generate configuration file. Why not '-o' for consistency with grub-mk*image ? -- Robert Millan The DRM opt-in fallacy: "Your data belongs to us. We will decide when (and how) you may access your data; but nobody's threatening your freedom: we still allow you to remove your data and not access it at all." ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [RFC] rename update-grub to update-grubcfg 2008-09-17 13:56 ` Robert Millan @ 2008-09-17 14:31 ` Vesa Jääskeläinen 2008-09-17 15:24 ` Felix Zielcke 0 siblings, 1 reply; 16+ messages in thread From: Vesa Jääskeläinen @ 2008-09-17 14:31 UTC (permalink / raw) To: The development of GRUB 2 Robert Millan wrote: > On Mon, Sep 15, 2008 at 09:14:03PM +0300, Vesa Jääskeläinen wrote: >> Felix Zielcke wrote: >>> Attached is now a patch which renames it to grub-mkconf and prints it to >>> stdout instead of grub.cfg file. >>> I kept the Found kernel/initrd etc. stuff to stderr, but maybe this >>> should be removed ? >> mkconf? >> >> Could it be a bit more verbose ;)... if we are to go path of >> grub-mkconfig (or even grub-make-config). > > I like my bikeshed with "config" in it, too. ;-) > >> Thou I prefer myself >> grub-update-config being more descriptive on what it does. > > With the proposed behaviour, it wouldn't be "updating" anything. That depends > on how it is used (one could just want to generate grub.cfg a single time, or > so). Well... grub-mkconfig then ? >> grub-update-config --out <file> could be easily used to override where >> to save the generate configuration file. > > Why not '-o' for consistency with grub-mk*image ? That is fine for me. ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [RFC] rename update-grub to update-grubcfg 2008-09-17 14:31 ` Vesa Jääskeläinen @ 2008-09-17 15:24 ` Felix Zielcke 2008-09-24 9:49 ` Robert Millan 0 siblings, 1 reply; 16+ messages in thread From: Felix Zielcke @ 2008-09-17 15:24 UTC (permalink / raw) To: The development of GRUB 2 [-- Attachment #1: Type: text/plain, Size: 267 bytes --] Am Mittwoch, den 17.09.2008, 17:31 +0300 schrieb Vesa Jääskeläinen: > > Well... grub-mkconfig then ? > > Why not '-o' for consistency with grub-mk*image ? > > That is fine for me. Attached patch is now with grub-mkconfig and an -o or --output option. [-- Attachment #2: mkconfig.diff.2 --] [-- Type: text/plain, Size: 21515 bytes --] 008-09-17 Felix Zielcke <fzielcke@z-51.de> * util/update-grub_lib.in: Rename to ... * util/grub-mkconfigig_lib.in: ... this. Update all users. * util/update-grub.in: Rename to ... * util/grub-mkconfig.in: ... this. Update all users. Add --output option to allow users to specify the generated configuration. 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): Rename to ... (grub-mkconfig_lib): ... this. (update-grub_SCRIPTS): Rename to ... (grub-mkconfig_SCRIPTS): ... this. Update all users. (update-grub_DATA): Rename to ... (grub-mkconfig_DATA): ... this. Index: Makefile.in =================================================================== --- Makefile.in (revision 1863) +++ Makefile.in (working copy) @@ -108,7 +108,7 @@ PKGLIB = $(pkglib_IMAGES) $(pkglib_MODUL $(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 @@ install-local: all $(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 @@ uninstall: 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 Index: conf/common.rmk =================================================================== --- conf/common.rmk (revision 1863) +++ conf/common.rmk (working copy) @@ -115,30 +115,30 @@ endif 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 -update-grub_lib: util/update-grub_lib.in config.status +grub-mkconfig_lib: util/grub-mkconfig_lib.in config.status ./config.status --file=$@:$< chmod +x $@ -lib_DATA += update-grub_lib -CLEANFILES += update-grub_lib +lib_DATA += grub-mkconfig_lib +CLEANFILES += grub-mkconfig_lib %: 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. Index: conf/common.mk =================================================================== --- conf/common.mk (revision 1863) +++ conf/common.mk (working copy) @@ -526,30 +526,30 @@ grub_pe2elf-util_misc.o: util/misc.c $(u 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 -update-grub_lib: util/update-grub_lib.in config.status +grub-mkconfig_lib: util/grub-mkconfig_lib.in config.status ./config.status --file=$@:$< chmod +x $@ -lib_DATA += update-grub_lib -CLEANFILES += update-grub_lib +lib_DATA += grub-mkconfig_lib +CLEANFILES += grub-mkconfig_lib %: 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. Index: util/grub.d/10_windows.in =================================================================== --- util/grub.d/10_windows.in (revision 1863) +++ util/grub.d/10_windows.in (working copy) @@ -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*) ;; Index: util/grub.d/30_os-prober.in =================================================================== --- util/grub.d/30_os-prober.in (revision 1863) +++ util/grub.d/30_os-prober.in (working copy) @@ -83,7 +83,7 @@ EOF done ;; hurd|*) - echo " ${LONGNAME} is not yet supported by update-grub." >&2 + echo " ${LONGNAME} is not yet supported by grub-mkconfig." >&2 ;; esac done Index: util/grub.d/10_linux.in =================================================================== --- util/grub.d/10_linux.in (revision 1863) +++ util/grub.d/10_linux.in (working copy) @@ -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 Index: util/grub.d/10_hurd.in =================================================================== --- util/grub.d/10_hurd.in (revision 1863) +++ util/grub.d/10_hurd.in (working copy) @@ -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 Index: util/grub.d/00_header.in =================================================================== --- util/grub.d/00_header.in (revision 1863) +++ util/grub.d/00_header.in (working copy) @@ -23,7 +23,7 @@ exec_prefix=@exec_prefix@ 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) Index: util/update-grub.in =================================================================== --- util/update-grub.in (revision 1863) +++ util/update-grub.in (working copy) @@ -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 <bug-grub@gnu.org>. -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 Index: util/grub-mkconfig_lib.in =================================================================== --- util/grub-mkconfig_lib.in (revision 1863) +++ util/grub-mkconfig_lib.in (working copy) @@ -1,4 +1,4 @@ -# Helper library for update-grub +# Helper library for grub-mkconfig # Copyright (C) 2007,2008 Free Software Foundation, Inc. # # GRUB is free software: you can redistribute it and/or modify Property changes on: util/grub-mkconfig_lib.in ___________________________________________________________________ Added: svn:mergeinfo Index: util/grub-mkconfig.in =================================================================== --- util/grub-mkconfig.in (revision 1863) +++ util/grub-mkconfig.in (working copy) @@ -24,8 +24,8 @@ 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_cfg="" +grub_mkconfig_dir=${sysconfdir}/grub.d grub_mkdevicemap=${sbindir}/`echo grub-mkdevicemap | sed ${transform}` grub_probe=${sbindir}/`echo grub-probe | sed ${transform}` @@ -35,8 +35,9 @@ grub_probe=${sbindir}/`echo grub-probe | usage () { cat <<EOF Usage: $0 [OPTION] -Generate /boot/grub/grub.cfg +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 -y ignored for compatibility @@ -57,6 +58,9 @@ for option in "$@"; do -y) echo "$0: warning: Ignoring -y option (no longer needed)." >&2 ;; + --output=) + grub_cfg=`echo "$option" | sed 's/--output=//'` + ;; -*) echo "Unrecognized option \`$option'" 1>&2 usage @@ -65,7 +69,7 @@ for option in "$@"; do esac done -. ${libdir}/grub/update-grub_lib +. ${libdir}/grub/grub-mkconfig_lib if [ "x$EUID" = "x" ] ; then EUID=`id -u` @@ -165,14 +169,15 @@ export GRUB_DEVICE GRUB_DEVICE_UUID GRUB # 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 +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 # @@ -183,7 +188,7 @@ cat << EOF # EOF -for i in ${update_grub_dir}/* ; do +for i in ${grub_mkconfig_dir}/* ; do case "$i" in # emacsen backup files. FIXME: support other editors *~) ;; @@ -198,7 +203,9 @@ for i in ${update_grub_dir}/* ; do esac done -# none of the children aborted with error, install the new grub.cfg -mv -f ${grub_cfg}.new ${grub_cfg} +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: util/grub-mkconfig.in ___________________________________________________________________ Added: svn:mergeinfo Index: util/update-grub_lib.in =================================================================== --- util/update-grub_lib.in (revision 1863) +++ util/update-grub_lib.in (working copy) @@ -1,173 +0,0 @@ -# Helper library for update-grub -# 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 -} ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [RFC] rename update-grub to update-grubcfg 2008-09-17 15:24 ` Felix Zielcke @ 2008-09-24 9:49 ` Robert Millan 2008-09-24 11:04 ` Felix Zielcke 0 siblings, 1 reply; 16+ messages in thread From: Robert Millan @ 2008-09-24 9:49 UTC (permalink / raw) To: The development of GRUB 2 On Wed, Sep 17, 2008 at 05:24:00PM +0200, Felix Zielcke wrote: > Index: util/update-grub_lib.in > =================================================================== > --- util/update-grub_lib.in (revision 1863) > +++ util/update-grub_lib.in (working copy) > @@ -1,173 +0,0 @@ > -# Helper library for update-grub If you rename this lib, please keep a stub for backwards compatibility. This is part of the API we export to update-grub add-ons, so we should try to avoid abrupt changes. I suggest something like: echo "warning: this file is deprecated, use grub-mkconfig_lib instead" >&2 . $path/$to/grub-mkconfig_lib Also please mind using 'svn copy' or 'svn move' when doing the commit. -- Robert Millan The DRM opt-in fallacy: "Your data belongs to us. We will decide when (and how) you may access your data; but nobody's threatening your freedom: we still allow you to remove your data and not access it at all." ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [RFC] rename update-grub to update-grubcfg 2008-09-24 9:49 ` Robert Millan @ 2008-09-24 11:04 ` Felix Zielcke 2008-09-24 13:22 ` Robert Millan 0 siblings, 1 reply; 16+ messages in thread From: Felix Zielcke @ 2008-09-24 11:04 UTC (permalink / raw) To: The development of GRUB 2 [-- Attachment #1: Type: text/plain, Size: 962 bytes --] Am Mittwoch, den 24.09.2008, 11:49 +0200 schrieb Robert Millan: > On Wed, Sep 17, 2008 at 05:24:00PM +0200, Felix Zielcke wrote: > > Index: util/update-grub_lib.in > > =================================================================== > > --- util/update-grub_lib.in (revision 1863) > > +++ util/update-grub_lib.in (working copy) > > @@ -1,173 +0,0 @@ > > -# Helper library for update-grub > > If you rename this lib, please keep a stub for backwards compatibility. This > is part of the API we export to update-grub add-ons, so we should try to > avoid abrupt changes. > > I suggest something like: > > echo "warning: this file is deprecated, use grub-mkconfig_lib instead" >&2 > . $path/$to/grub-mkconfig_lib Ok, attached patch is now with this stub. > Also please mind using 'svn copy' or 'svn move' when doing the commit. I already used it for making the patch but thanks for reminding me :) So if there are no objections I'll commit this then. [-- Attachment #2: mkconfig.diff.3 --] [-- Type: text/plain, Size: 21963 bytes --] 2008-09-24 Felix Zielcke <fzielcke@z-51.de> * util/update-grub_lib.in: Copy to ... * util/grub-mkconfigig_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. Add --output option to allow users to specify the generated configuration. 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. Index: Makefile.in =================================================================== --- Makefile.in (revision 1872) +++ Makefile.in (working copy) @@ -108,7 +108,7 @@ PKGLIB = $(pkglib_IMAGES) $(pkglib_MODUL $(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 @@ install-local: all $(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 @@ uninstall: 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 Index: conf/common.rmk =================================================================== --- conf/common.rmk (revision 1872) +++ conf/common.rmk (working copy) @@ -115,12 +115,18 @@ endif 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=$@:$< @@ -131,14 +137,14 @@ CLEANFILES += update-grub_lib %: 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. Index: conf/common.mk =================================================================== --- conf/common.mk (revision 1872) +++ conf/common.mk (working copy) @@ -526,12 +526,18 @@ grub_pe2elf-util_misc.o: util/misc.c $(u 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=$@:$< @@ -542,14 +548,14 @@ CLEANFILES += update-grub_lib %: 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. Index: DISTLIST =================================================================== --- DISTLIST (revision 1872) +++ DISTLIST (working copy) @@ -414,6 +414,8 @@ util/getroot.c 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/misc.c 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 Index: util/grub.d/10_windows.in =================================================================== --- util/grub.d/10_windows.in (revision 1872) +++ util/grub.d/10_windows.in (working copy) @@ -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*) ;; Index: util/grub.d/30_os-prober.in =================================================================== --- util/grub.d/30_os-prober.in (revision 1872) +++ util/grub.d/30_os-prober.in (working copy) @@ -83,7 +83,7 @@ EOF done ;; hurd|*) - echo " ${LONGNAME} is not yet supported by update-grub." >&2 + echo " ${LONGNAME} is not yet supported by grub-mkconfig." >&2 ;; esac done Index: util/grub.d/10_linux.in =================================================================== --- util/grub.d/10_linux.in (revision 1872) +++ util/grub.d/10_linux.in (working copy) @@ -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 Index: util/grub.d/10_hurd.in =================================================================== --- util/grub.d/10_hurd.in (revision 1872) +++ util/grub.d/10_hurd.in (working copy) @@ -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 Index: util/grub.d/00_header.in =================================================================== --- util/grub.d/00_header.in (revision 1872) +++ util/grub.d/00_header.in (working copy) @@ -23,7 +23,7 @@ exec_prefix=@exec_prefix@ 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) Index: util/update-grub.in =================================================================== --- util/update-grub.in (revision 1872) +++ util/update-grub.in (working copy) @@ -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 <bug-grub@gnu.org>. -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 Index: util/grub-mkconfig_lib.in =================================================================== --- util/grub-mkconfig_lib.in (revision 1863) +++ util/grub-mkconfig_lib.in (working copy) @@ -1,4 +1,4 @@ -# Helper library for update-grub +# Helper library for grub-mkconfig # Copyright (C) 2007,2008 Free Software Foundation, Inc. # # GRUB is free software: you can redistribute it and/or modify Property changes on: util/grub-mkconfig_lib.in ___________________________________________________________________ Added: svn:mergeinfo Index: util/grub-mkconfig.in =================================================================== --- util/grub-mkconfig.in (revision 1863) +++ util/grub-mkconfig.in (working copy) @@ -24,8 +24,8 @@ 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_cfg="" +grub_mkconfig_dir=${sysconfdir}/grub.d grub_mkdevicemap=${sbindir}/`echo grub-mkdevicemap | sed ${transform}` grub_probe=${sbindir}/`echo grub-probe | sed ${transform}` @@ -35,8 +35,9 @@ grub_probe=${sbindir}/`echo grub-probe | usage () { cat <<EOF Usage: $0 [OPTION] -Generate /boot/grub/grub.cfg +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 -y ignored for compatibility @@ -57,6 +58,13 @@ for option in "$@"; do -y) echo "$0: warning: Ignoring -y option (no longer needed)." >&2 ;; + -o) + shift + grub_cfg=$1 + ;; + --output=) + grub_cfg=`echo "$option" | sed 's/--output=//'` + ;; -*) echo "Unrecognized option \`$option'" 1>&2 usage @@ -65,7 +73,7 @@ for option in "$@"; do esac done -. ${libdir}/grub/update-grub_lib +. ${libdir}/grub/grub-mkconfig_lib if [ "x$EUID" = "x" ] ; then EUID=`id -u` @@ -165,14 +173,15 @@ export GRUB_DEVICE GRUB_DEVICE_UUID GRUB # 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 +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 # @@ -183,7 +192,7 @@ cat << EOF # EOF -for i in ${update_grub_dir}/* ; do +for i in ${grub_mkconfig_dir}/* ; do case "$i" in # emacsen backup files. FIXME: support other editors *~) ;; @@ -198,7 +207,9 @@ for i in ${update_grub_dir}/* ; do esac done -# none of the children aborted with error, install the new grub.cfg -mv -f ${grub_cfg}.new ${grub_cfg} +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: util/grub-mkconfig.in ___________________________________________________________________ Added: svn:mergeinfo Index: util/update-grub_lib.in =================================================================== --- util/update-grub_lib.in (revision 1866) +++ util/update-grub_lib.in (working copy) @@ -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}"` - -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 -} +libdir=@libdir@ -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 ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [RFC] rename update-grub to update-grubcfg 2008-09-24 11:04 ` Felix Zielcke @ 2008-09-24 13:22 ` Robert Millan 2008-09-24 13:34 ` Felix Zielcke 0 siblings, 1 reply; 16+ messages in thread From: Robert Millan @ 2008-09-24 13:22 UTC (permalink / raw) To: The development of GRUB 2 On Wed, Sep 24, 2008 at 01:04:03PM +0200, Felix Zielcke wrote: > * util/update-grub_lib.in: Make it a stub to `grub-mkconfigig_lib.in'. Typo (mkconfigig). > -y) > echo "$0: warning: Ignoring -y option (no longer needed)." >&2 This option was for compatibility with Debian's update-grub, it's not needed in grub-mkconfig. -- Robert Millan The DRM opt-in fallacy: "Your data belongs to us. We will decide when (and how) you may access your data; but nobody's threatening your freedom: we still allow you to remove your data and not access it at all." ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [RFC] rename update-grub to update-grubcfg 2008-09-24 13:22 ` Robert Millan @ 2008-09-24 13:34 ` Felix Zielcke 2008-09-24 13:54 ` Robert Millan 0 siblings, 1 reply; 16+ messages in thread From: Felix Zielcke @ 2008-09-24 13:34 UTC (permalink / raw) To: The development of GRUB 2 [-- Attachment #1: Type: text/plain, Size: 540 bytes --] Am Mittwoch, den 24.09.2008, 15:22 +0200 schrieb Robert Millan: > On Wed, Sep 24, 2008 at 01:04:03PM +0200, Felix Zielcke wrote: > > * util/update-grub_lib.in: Make it a stub to `grub-mkconfigig_lib.in'. > > Typo (mkconfigig). Oh thanks for spotting this. Seems like my concentration isn't that great currently :( > > -y) > > echo "$0: warning: Ignoring -y option (no longer needed)." >&2 > > This option was for compatibility with Debian's update-grub, it's not > needed in grub-mkconfig. Oh right. New patch attached. [-- Attachment #2: mkconfig.diff.4 --] [-- Type: text/plain, Size: 21989 bytes --] 2008-09-24 Felix Zielcke <fzielcke@z-51.de> * 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. Index: Makefile.in =================================================================== --- Makefile.in (revision 1872) +++ Makefile.in (working copy) @@ -108,7 +108,7 @@ PKGLIB = $(pkglib_IMAGES) $(pkglib_MODUL $(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 @@ install-local: all $(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 @@ uninstall: 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 Index: conf/common.rmk =================================================================== --- conf/common.rmk (revision 1872) +++ conf/common.rmk (working copy) @@ -115,12 +115,18 @@ endif 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=$@:$< @@ -131,14 +137,14 @@ CLEANFILES += update-grub_lib %: 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. Index: conf/common.mk =================================================================== --- conf/common.mk (revision 1872) +++ conf/common.mk (working copy) @@ -526,12 +526,18 @@ grub_pe2elf-util_misc.o: util/misc.c $(u 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=$@:$< @@ -542,14 +548,14 @@ CLEANFILES += update-grub_lib %: 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. Index: DISTLIST =================================================================== --- DISTLIST (revision 1872) +++ DISTLIST (working copy) @@ -414,6 +414,8 @@ util/getroot.c 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/misc.c 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 Index: util/grub.d/10_windows.in =================================================================== --- util/grub.d/10_windows.in (revision 1872) +++ util/grub.d/10_windows.in (working copy) @@ -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*) ;; Index: util/grub.d/30_os-prober.in =================================================================== --- util/grub.d/30_os-prober.in (revision 1872) +++ util/grub.d/30_os-prober.in (working copy) @@ -83,7 +83,7 @@ EOF done ;; hurd|*) - echo " ${LONGNAME} is not yet supported by update-grub." >&2 + echo " ${LONGNAME} is not yet supported by grub-mkconfig." >&2 ;; esac done Index: util/grub.d/10_linux.in =================================================================== --- util/grub.d/10_linux.in (revision 1872) +++ util/grub.d/10_linux.in (working copy) @@ -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 Index: util/grub.d/10_hurd.in =================================================================== --- util/grub.d/10_hurd.in (revision 1872) +++ util/grub.d/10_hurd.in (working copy) @@ -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 Index: util/grub.d/00_header.in =================================================================== --- util/grub.d/00_header.in (revision 1872) +++ util/grub.d/00_header.in (working copy) @@ -23,7 +23,7 @@ exec_prefix=@exec_prefix@ 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) Index: util/update-grub.in =================================================================== --- util/update-grub.in (revision 1872) +++ util/update-grub.in (working copy) @@ -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 <bug-grub@gnu.org>. -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 Index: util/grub-mkconfig_lib.in =================================================================== --- util/grub-mkconfig_lib.in (revision 1872) +++ util/grub-mkconfig_lib.in (working copy) @@ -1,4 +1,4 @@ -# Helper library for update-grub +# Helper library for grub-mkconfig # Copyright (C) 2007,2008 Free Software Foundation, Inc. # # GRUB is free software: you can redistribute it and/or modify Property changes on: util/grub-mkconfig_lib.in ___________________________________________________________________ Added: svn:mergeinfo Index: util/grub-mkconfig.in =================================================================== --- util/grub-mkconfig.in (revision 1872) +++ util/grub-mkconfig.in (working copy) @@ -24,8 +24,8 @@ 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_cfg="" +grub_mkconfig_dir=${sysconfdir}/grub.d grub_mkdevicemap=${sbindir}/`echo grub-mkdevicemap | sed ${transform}` grub_probe=${sbindir}/`echo grub-probe | sed ${transform}` @@ -35,11 +35,11 @@ grub_probe=${sbindir}/`echo grub-probe | usage () { cat <<EOF Usage: $0 [OPTION] -Generate /boot/grub/grub.cfg +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 - -y ignored for compatibility Report bugs to <bug-grub@gnu.org>. EOF @@ -54,9 +54,13 @@ for option in "$@"; do -v | --version) echo "$0 (GNU GRUB ${PACKAGE_VERSION})" exit 0 ;; - -y) - echo "$0: warning: Ignoring -y option (no longer needed)." >&2 - ;; + -o) + shift + grub_cfg=$1 + ;; + --output=) + grub_cfg=`echo "$option" | sed 's/--output=//'` + ;; -*) echo "Unrecognized option \`$option'" 1>&2 usage @@ -65,7 +69,7 @@ for option in "$@"; do esac done -. ${libdir}/grub/update-grub_lib +. ${libdir}/grub/grub-mkconfig_lib if [ "x$EUID" = "x" ] ; then EUID=`id -u` @@ -165,14 +169,15 @@ export GRUB_DEVICE GRUB_DEVICE_UUID GRUB # 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 +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 # @@ -183,7 +188,7 @@ cat << EOF # EOF -for i in ${update_grub_dir}/* ; do +for i in ${grub_mkconfig_dir}/* ; do case "$i" in # emacsen backup files. FIXME: support other editors *~) ;; @@ -198,7 +203,9 @@ for i in ${update_grub_dir}/* ; do esac done -# none of the children aborted with error, install the new grub.cfg -mv -f ${grub_cfg}.new ${grub_cfg} +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: util/grub-mkconfig.in ___________________________________________________________________ Added: svn:mergeinfo Index: util/update-grub_lib.in =================================================================== --- util/update-grub_lib.in (revision 1872) +++ util/update-grub_lib.in (working copy) @@ -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}"` - -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 -} +libdir=@libdir@ -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 ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [RFC] rename update-grub to update-grubcfg 2008-09-24 13:34 ` Felix Zielcke @ 2008-09-24 13:54 ` Robert Millan 2008-09-29 14:57 ` Felix Zielcke 0 siblings, 1 reply; 16+ messages in thread From: Robert Millan @ 2008-09-24 13:54 UTC (permalink / raw) To: The development of GRUB 2 On Wed, Sep 24, 2008 at 03:34:27PM +0200, Felix Zielcke wrote: > Am Mittwoch, den 24.09.2008, 15:22 +0200 schrieb Robert Millan: > > On Wed, Sep 24, 2008 at 01:04:03PM +0200, Felix Zielcke wrote: > > > * util/update-grub_lib.in: Make it a stub to `grub-mkconfigig_lib.in'. > > > > Typo (mkconfigig). > > Oh thanks for spotting this. Seems like my concentration isn't that > great currently :( > > > > -y) > > > echo "$0: warning: Ignoring -y option (no longer needed)." >&2 > > > > This option was for compatibility with Debian's update-grub, it's not > > needed in grub-mkconfig. > > Oh right. > New patch attached. Looks fine, it can go in as far as I'm concerned. Nice work. -- Robert Millan The DRM opt-in fallacy: "Your data belongs to us. We will decide when (and how) you may access your data; but nobody's threatening your freedom: we still allow you to remove your data and not access it at all." ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [RFC] rename update-grub to update-grubcfg 2008-09-24 13:54 ` Robert Millan @ 2008-09-29 14:57 ` Felix Zielcke 0 siblings, 0 replies; 16+ messages in thread From: Felix Zielcke @ 2008-09-29 14:57 UTC (permalink / raw) To: The development of GRUB 2 Commited. Now we only have to think about our Debian package :) Am Mittwoch, den 24.09.2008, 15:54 +0200 schrieb Robert Millan: > On Wed, Sep 24, 2008 at 03:34:27PM +0200, Felix Zielcke wrote: > > Am Mittwoch, den 24.09.2008, 15:22 +0200 schrieb Robert Millan: > > > On Wed, Sep 24, 2008 at 01:04:03PM +0200, Felix Zielcke wrote: > > > > * util/update-grub_lib.in: Make it a stub to `grub-mkconfigig_lib.in'. > > > > > > Typo (mkconfigig). > > > > Oh thanks for spotting this. Seems like my concentration isn't that > > great currently :( > > > > > > -y) > > > > echo "$0: warning: Ignoring -y option (no longer needed)." >&2 > > > > > > This option was for compatibility with Debian's update-grub, it's not > > > needed in grub-mkconfig. > > > > Oh right. > > New patch attached. > > Looks fine, it can go in as far as I'm concerned. > > Nice work. > ^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2008-09-29 14:57 UTC | newest] Thread overview: 16+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-09-04 12:22 [RFC] rename update-grub to update-grubcfg Felix Zielcke 2008-09-04 13:56 ` Pavel Roskin 2008-09-04 17:38 ` Vesa Jääskeläinen 2008-09-04 17:50 ` Felix Zielcke 2008-09-04 19:45 ` Robert Millan 2008-09-15 17:56 ` Felix Zielcke 2008-09-15 18:14 ` Vesa Jääskeläinen 2008-09-17 13:56 ` Robert Millan 2008-09-17 14:31 ` Vesa Jääskeläinen 2008-09-17 15:24 ` Felix Zielcke 2008-09-24 9:49 ` Robert Millan 2008-09-24 11:04 ` Felix Zielcke 2008-09-24 13:22 ` Robert Millan 2008-09-24 13:34 ` Felix Zielcke 2008-09-24 13:54 ` Robert Millan 2008-09-29 14:57 ` Felix Zielcke
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.