From: Andrey Borzenkov <arvidjaar@gmail.com>
To: The development of GNU GRUB <grub-devel@gnu.org>
Cc: john.haxby@oracle.com
Subject: Re: Odd problem with submenus
Date: Thu, 3 Jul 2014 20:47:43 +0400 [thread overview]
Message-ID: <20140703204743.4d8b9357@opensuse.site> (raw)
In-Reply-To: <53B56AE2.9010902@oracle.com>
В Thu, 03 Jul 2014 15:38:26 +0100
John Haxby <john.haxby@oracle.com> пишет:
> On 02/07/14 18:07, Andrey Borzenkov wrote:
> > В Tue, 01 Jul 2014 17:59:35 +0100
> > John Haxby <john.haxby@oracle.com> пишет:
> >
> >> > Hello,
> >> >
> >> > I have a warning generated by grub2-mkconfig that shows up on various
> >> > systems that I'm not sure what to do about. Well, I know I can ignore
> >> > it, but I'm not sure what do do about not getting the warning in the
> >> > first place.
> >> >
> >> > On this machine here, I have
> >> >
> >> > menuentry 'Fedora, with Linux 3.14.9-200.fc20.x86_64' --class ...
> >> >
> >> > and grub2-set-default 'Fedora, with ...' is OK, but then
> >> >
> >> > and I also have GRUB_DISABLE_SUBMENU=true i /etc/default/grub, so
> >> >
> >> > $ grub2-mkconfig -o /boot/grub2/grub.cfg
> >> > ...
> >> > Warning: Please don't use old title `Fedora, with Linux
> >> > 3.14.9-200.fc20.x86_64' for GRUB_DEFAULT, use `Advanced options for
> >> > Fedora>Fedora, with Linux 3.14.9-200.fc20.x86_64' (for versions before
> >> > 2.00) or
> >> > `gnulinux-advanced-d87b5f54-5bfb-45bd-b300-f4b1db6d5dfb>gnulinux-3.14.9-200.fc20.x86_64-advanced-d87b5f54-5bfb-45bd-b300-f4b1db6d5dfb'
> >> > (for 2.00 or later)
> >> >
> >> > Exhorting me to use a submenu default when there are no submenus is
> >> > clearly wrong, so in /etc/grub.d/10_linux (and the other
> >> > platform-specific files) there's:
> >> >
> >>> > > if [ x"$title" = x"$GRUB_ACTUAL_DEFAULT" ] || [ x"Previous Linux versions>$title" = x"$GRUB_ACTUAL_DEFAULT" ]; then
> >>> > > replacement_title="$(echo "Advanced options for ${OS}" | sed 's,>,>>,g')>$(echo "$title" | sed 's,>,>>,g')"
> >>> > > quoted="$(echo "$GRUB_ACTUAL_DEFAULT" | grub_quote)"
> >>> > > title_correction_code="${title_correction_code}if [ \"x\$default\" = '$quoted' ]; then default='$(echo "$replacement_title" | grub_quote)'; fi;"
> >>> > > grub_warn "$(gettext_printf "Please don't use old title \`%s' for GRUB_DEFAULT, use \`%s' (for versions before 2.00) or \`%s' (for 2.00 or later)" "$GRUB_ACTUAL_DEFAULT" "$replacement_title" "gnulinux-advanced-$boot_device_id>gnulinux-$version-$type-$boot_device_id")"
> >>> > > fi
> >> >
> >> > It's easy enough to add a test for GRUB_DISABLE_SUBMENU here but I'm at
> >> > a loss to know why this clause is needed at all. I know it means that
> >> > if I have submenus enabled then I can just set the default to be the
> >> > title of a submenu and not worry about the "Advanced options ..." bit,
> >> > but it looks to me as though it was just a transition thing which is
> >> > really no longer needed.
> >> >
> > You never know it; there is no reason to break working configuration.
> >
> >> > Is this really no longer needed or am I missing something? I'm happy to
> >> > submit a patch either way.
> >> >
> >
> > Yes, please, make it conditionally add submenu title to
> > replacement_title based on GRUB_DISABLE_SUBMENU. Please also fix all
> > scripts (the bug is not limited to linux).
>
Which is not enough, sorry. We of course should omit title correction
in this case if default is already correct (without submenu). I.e.
something like this
if [ x"$title" = x"$GRUB_ACTUAL_DEFAULT" -a x"$GRUB_DISABLE_SUBMENU" != xy] || [ x"Previous Linux versions>$title" = x"$GRUB_ACTUAL_DEFAULT" ]; then
if [ x$GRUB_DISABLE_SUBMENU = xy ] ; then
replacement_title=
else
replacement_title="$(echo "Advanced options for ${OS}" | sed 's,>,>>,g')>"
fi
replacement_title="$replacement_title""$(echo "$title" | sed 's,>,>>,g')"
Not sure if less convoluted condition is possible. Ideas are welcome :)
> Happy to oblige.
>
> Actually, there are two problems. The various GRUB_DISABLE_* options
> all check for "true" with the exception of GRUB_DISABLE_SUBMENU which
> checks for "y".
There is also GRUB_ENABLE_CRYPTODISK.
> This is likely to cause some confusion, not least
> because Fedora and RHEL7 are both using "true". I'll work on two
> patches ...
>
Well, let's keep them separate. First is clear bug fix, second is nice
to have.
> My long-time preferred solution for things like this[1], though is to
> define functions like this:
>
> case x"$DISABLE_GRUB_SUBMENU" in
> xy*|xtrue|x1) disable_grub_submenu () { return 0; } ;;
> *) disable_grub_submenu () { return 1; } ;;
> esac
>
> And then I can do
>
> if disable_grub_submenu; then ...
>
But do not forget to fix also other places where GRUB_ENABLE_CRYPTODISK
is used (grub-install).
> which I think is easier to read and gets all of the confusion about what
> constitutes truth into a single place.
>
> jch
>
>
> [1] since before bash, probably
>
>
>
> _______________________________________________
> Grub-devel mailing list
> Grub-devel@gnu.org
> https://lists.gnu.org/mailman/listinfo/grub-devel
prev parent reply other threads:[~2014-07-03 16:48 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-01 16:59 Odd problem with submenus John Haxby
2014-07-02 17:07 ` Andrey Borzenkov
2014-07-03 14:38 ` John Haxby
2014-07-03 16:47 ` Andrey Borzenkov [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140703204743.4d8b9357@opensuse.site \
--to=arvidjaar@gmail.com \
--cc=grub-devel@gnu.org \
--cc=john.haxby@oracle.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.