grub-devel.gnu.org archive mirror
 help / color / mirror / Atom feed
* Odd problem with submenus
@ 2014-07-01 16:59 John Haxby
  2014-07-02 17:07 ` Andrey Borzenkov
  0 siblings, 1 reply; 4+ messages in thread
From: John Haxby @ 2014-07-01 16:59 UTC (permalink / raw)
  To: The development of GNU GRUB

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.

Is this really no longer needed or am I missing something?  I'm happy to
submit a patch either way.

jch


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Odd problem with submenus
  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
  0 siblings, 1 reply; 4+ messages in thread
From: Andrey Borzenkov @ 2014-07-02 17:07 UTC (permalink / raw)
  To: The development of GNU GRUB; +Cc: john.haxby

В 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).


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Odd problem with submenus
  2014-07-02 17:07 ` Andrey Borzenkov
@ 2014-07-03 14:38   ` John Haxby
  2014-07-03 16:47     ` Andrey Borzenkov
  0 siblings, 1 reply; 4+ messages in thread
From: John Haxby @ 2014-07-03 14:38 UTC (permalink / raw)
  To: The development of GNU GRUB

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).

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".   This is likely to cause some confusion, not least
because Fedora and RHEL7 are both using "true".  I'll work on two
patches ...

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 ...

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




^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Odd problem with submenus
  2014-07-03 14:38   ` John Haxby
@ 2014-07-03 16:47     ` Andrey Borzenkov
  0 siblings, 0 replies; 4+ messages in thread
From: Andrey Borzenkov @ 2014-07-03 16:47 UTC (permalink / raw)
  To: The development of GNU GRUB; +Cc: john.haxby

В 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



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2014-07-03 16:48 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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 is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).