Hello community,

here is the log from the commit of package grub2 for openSUSE:Factory checked 
in at 2016-05-05 08:12:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/grub2 (Old)
 and      /work/SRC/openSUSE:Factory/.grub2.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "grub2"

Changes:
--------
--- /work/SRC/openSUSE:Factory/grub2/grub2.changes      2016-03-26 
15:21:08.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.grub2.new/grub2.changes 2016-05-05 
08:12:18.000000000 +0200
@@ -1,0 +2,20 @@
+Mon May  2 13:25:02 UTC 2016 - o...@aepfle.de
+
+- Remove xen-devel from BuildRequires
+  required headers are included in grub-2.0.2
+
+-------------------------------------------------------------------
+Thu Apr 28 09:06:11 UTC 2016 - ag...@suse.com
+
+- Add support for "t" hotkey to switch to text mode (bsc#976836)
+  * added grub2-SUSE-Add-the-t-hotkey.patch
+- Add support for hidden menu entries (bsc#976836)
+  * added grub2-Add-hidden-menu-entries.patch
+
+-------------------------------------------------------------------
+Tue Apr 19 08:21:24 UTC 2016 - mch...@suse.com
+
+- Correct show user defined comments in menu for snapshots (bsc#956698) 
+  * modified grub2-snapper-plugin.sh
+
+-------------------------------------------------------------------

New:
----
  grub2-Add-hidden-menu-entries.patch
  grub2-SUSE-Add-the-t-hotkey.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ grub2.spec ++++++
--- /var/tmp/diff_new_pack.yYQQHb/_old  2016-05-05 08:12:20.000000000 +0200
+++ /var/tmp/diff_new_pack.yYQQHb/_new  2016-05-05 08:12:20.000000000 +0200
@@ -53,9 +53,6 @@
 BuildRequires:  pesign-obs-integration
 %endif
 %endif
-%ifarch %{ix86} x86_64
-BuildRequires:  xen-devel
-%endif
 %if 0%{?suse_version} >= 1210
 # Package systemd services files grub2-once.service
 BuildRequires:  systemd-rpm-macros
@@ -203,6 +200,9 @@
 # 32bit ARM EFI FDT table pass-through support
 Patch130:       0001-arm64-Move-firmware-fdt-search-into-global-function.patch
 Patch131:       0002-arm-efi-Use-fdt-from-firmware-when-available.patch
+# Hidden menu entry and hotkey "t" for text console
+Patch140:       grub2-Add-hidden-menu-entries.patch
+Patch141:       grub2-SUSE-Add-the-t-hotkey.patch
 # PPC64 LE support
 Patch205:       grub2-ppc64le-disable-video.patch
 Patch207:       grub2-ppc64le-memory-map.patch
@@ -424,6 +424,8 @@
 %patch122 -p1
 %patch130 -p1
 %patch131 -p1
+%patch140 -p1
+%patch141 -p1
 %patch205 -p1
 %patch207 -p1
 %patch233 -p1
@@ -841,6 +843,7 @@
 %config %{_sysconfdir}/grub.d/40_custom
 %config %{_sysconfdir}/grub.d/41_custom
 %config %{_sysconfdir}/grub.d/90_persistent
+%config %{_sysconfdir}/grub.d/95_textmode
 %{_sbindir}/%{name}-install
 %{_sbindir}/%{name}-mkconfig
 %{_sbindir}/%{name}-once

++++++ grub2-Add-hidden-menu-entries.patch ++++++
>From a06004f4c668abd7c760a2818d0a8205da7568e7 Mon Sep 17 00:00:00 2001
From: Alexander Graf <ag...@suse.de>
Date: Tue, 26 Apr 2016 15:29:25 +0200
Subject: [PATCH v3] Add hidden menu entries

The menu infrastructure is quite powerful. It allows you to define menu
entries that can contain arbitrary grub commands that can do a lot more
than just boot kernel entries.

For some of these it makes sense to hide them inside the normal menu
though and instead have them available through hotkeys that get advertised
differently. My main use case is to switch to the serial console when
gfxterm is loaded.

So this patch adds support for hidden menu entries that are accessible
using hotkeys, but are not accessible in the grub menu.

Signed-off-by: Alexander Graf <ag...@suse.de>

---

v1 -> v2:

  - fix default entry selection

v2 -> v3:

  - replace "--hidden" parameter with new command "hiddenentry"

diff --git a/grub-core/commands/legacycfg.c b/grub-core/commands/legacycfg.c
index dd9d9f1..b282c4f 100644
--- a/grub-core/commands/legacycfg.c
+++ b/grub-core/commands/legacycfg.c
@@ -133,7 +133,7 @@ legacy_file (const char *filename)
            args[0] = oldname;
            grub_normal_add_menu_entry (1, args, NULL, NULL, "legacy",
                                        NULL, NULL,
-                                       entrysrc, 0);
+                                       entrysrc, 0, 0);
            grub_free (args);
            entrysrc[0] = 0;
            grub_free (oldname);
@@ -186,7 +186,7 @@ legacy_file (const char *filename)
        }
       args[0] = entryname;
       grub_normal_add_menu_entry (1, args, NULL, NULL, NULL,
-                                 NULL, NULL, entrysrc, 0);
+                                 NULL, NULL, entrysrc, 0, 0);
       grub_free (args);
     }
 
diff --git a/grub-core/commands/menuentry.c b/grub-core/commands/menuentry.c
index 58d4dad..b4d6c31 100644
--- a/grub-core/commands/menuentry.c
+++ b/grub-core/commands/menuentry.c
@@ -78,7 +78,7 @@ grub_normal_add_menu_entry (int argc, const char **args,
                            char **classes, const char *id,
                            const char *users, const char *hotkey,
                            const char *prefix, const char *sourcecode,
-                           int submenu)
+                           int submenu, int hidden)
 {
   int menu_hotkey = 0;
   char **menu_args = NULL;
@@ -188,8 +188,11 @@ grub_normal_add_menu_entry (int argc, const char **args,
   (*last)->args = menu_args;
   (*last)->sourcecode = menu_sourcecode;
   (*last)->submenu = submenu;
+  (*last)->hidden = hidden;
+
+  if (!hidden)
+    menu->size++;
 
-  menu->size++;
   return GRUB_ERR_NONE;
 
  fail:
@@ -286,7 +289,8 @@ grub_cmd_menuentry (grub_extcmd_context_t ctxt, int argc, 
char **args)
                                       users,
                                       ctxt->state[2].arg, 0,
                                       ctxt->state[3].arg,
-                                      ctxt->extcmd->cmd->name[0] == 's');
+                                      ctxt->extcmd->cmd->name[0] == 's',
+                                      ctxt->extcmd->cmd->name[0] == 'h');
 
   src = args[argc - 1];
   args[argc - 1] = NULL;
@@ -303,7 +307,8 @@ grub_cmd_menuentry (grub_extcmd_context_t ctxt, int argc, 
char **args)
                                  ctxt->state[0].args, ctxt->state[4].arg,
                                  users,
                                  ctxt->state[2].arg, prefix, src + 1,
-                                 ctxt->extcmd->cmd->name[0] == 's');
+                                 ctxt->extcmd->cmd->name[0] == 's',
+                                 ctxt->extcmd->cmd->name[0] == 'h');
 
   src[len - 1] = ch;
   args[argc - 1] = src;
@@ -311,7 +316,7 @@ grub_cmd_menuentry (grub_extcmd_context_t ctxt, int argc, 
char **args)
   return r;
 }
 
-static grub_extcmd_t cmd, cmd_sub;
+static grub_extcmd_t cmd, cmd_sub, cmd_hidden;
 
 void
 grub_menu_init (void)
@@ -327,6 +332,13 @@ grub_menu_init (void)
                                  | GRUB_COMMAND_FLAG_EXTRACTOR,
                                  N_("BLOCK"), N_("Define a submenu."),
                                  options);
+  cmd_hidden = grub_register_extcmd ("hiddenentry", grub_cmd_menuentry,
+                                    GRUB_COMMAND_FLAG_BLOCKS
+                                    | GRUB_COMMAND_ACCEPT_DASH
+                                    | GRUB_COMMAND_FLAG_EXTRACTOR,
+                                    N_("BLOCK"),
+                                    N_("Define a hidden menu entry."),
+                                    options);
 }
 
 void
diff --git a/grub-core/normal/menu.c b/grub-core/normal/menu.c
index 719e2fb..2a151fe 100644
--- a/grub-core/normal/menu.c
+++ b/grub-core/normal/menu.c
@@ -40,6 +40,8 @@
 grub_err_t (*grub_gfxmenu_try_hook) (int entry, grub_menu_t menu,
                                     int nested) = NULL;
 
+#define MENU_INCLUDE_HIDDEN 0x10000
+
 enum timeout_style {
   TIMEOUT_STYLE_MENU,
   TIMEOUT_STYLE_COUNTDOWN,
@@ -80,8 +82,20 @@ grub_menu_get_entry (grub_menu_t menu, int no)
 {
   grub_menu_entry_t e;
 
-  for (e = menu->entry_list; e && no > 0; e = e->next, no--)
-    ;
+  if (no & MENU_INCLUDE_HIDDEN) {
+    no &= ~MENU_INCLUDE_HIDDEN;
+
+    for (e = menu->entry_list; e && no > 0; e = e->next, no--)
+      ;
+  } else {
+    for (e = menu->entry_list; e && no > 0; e = e->next, no--) {
+      /* Skip hidden entries */
+      while (e && e->hidden)
+        e = e->next;
+    }
+    while (e && e->hidden)
+      e = e->next;
+  }
 
   return e;
 }
@@ -93,10 +107,10 @@ get_entry_index_by_hotkey (grub_menu_t menu, int hotkey)
   grub_menu_entry_t entry;
   int i;
 
-  for (i = 0, entry = menu->entry_list; i < menu->size;
+  for (i = 0, entry = menu->entry_list; entry;
        i++, entry = entry->next)
     if (entry->hotkey == hotkey)
-      return i;
+      return i | MENU_INCLUDE_HIDDEN;
 
   return -1;
 }
@@ -510,6 +524,10 @@ get_entry_number (grub_menu_t menu, const char *name)
       grub_menu_entry_t e = menu->entry_list;
       int i;
 
+      /* Skip hidden entries */
+      while (e && e->hidden)
+       e = e->next;
+
       grub_errno = GRUB_ERR_NONE;
 
       for (i = 0; e; i++)
@@ -521,6 +539,10 @@ get_entry_number (grub_menu_t menu, const char *name)
              break;
            }
          e = e->next;
+
+         /* Skip hidden entries */
+         while (e && e->hidden)
+           e = e->next;
        }
 
       if (! e)
diff --git a/grub-core/normal/menu_text.c b/grub-core/normal/menu_text.c
index e22bb91..4ac2d6b 100644
--- a/grub-core/normal/menu_text.c
+++ b/grub-core/normal/menu_text.c
@@ -290,6 +290,10 @@ print_entries (grub_menu_t menu, const struct 
menu_viewer_data *data)
                   e, data);
       if (e)
        e = e->next;
+
+      /* Skip hidden entries */
+      while (e && e->hidden)
+        e = e->next;
     }
 
   grub_term_gotoxy (data->term,
diff --git a/include/grub/menu.h b/include/grub/menu.h
index ee2b5e9..eb8a86b 100644
--- a/include/grub/menu.h
+++ b/include/grub/menu.h
@@ -58,6 +58,8 @@ struct grub_menu_entry
 
   int submenu;
 
+  int hidden;
+
   /* The next element.  */
   struct grub_menu_entry *next;
 };
diff --git a/include/grub/normal.h b/include/grub/normal.h
index 218cbab..bcb4124 100644
--- a/include/grub/normal.h
+++ b/include/grub/normal.h
@@ -145,7 +145,7 @@ grub_normal_add_menu_entry (int argc, const char **args, 
char **classes,
                            const char *id,
                            const char *users, const char *hotkey,
                            const char *prefix, const char *sourcecode,
-                           int submenu);
+                           int submenu, int hidden);
 
 grub_err_t
 grub_normal_set_password (const char *user, const char *password);
++++++ grub2-SUSE-Add-the-t-hotkey.patch ++++++
>From f6be3d41e24e685846dfc90ac1ca447501813687 Mon Sep 17 00:00:00 2001
From: Alexander Graf <ag...@suse.de>
Date: Tue, 26 Apr 2016 15:59:03 +0200
Subject: [PATCH] SUSE: Add the "t" hotkey

While graphical output is fancy and nice, in some environments (EFI) we can
only have fancy graphical on frame buffer _or_ ugly serial on any output.

To give the user a nicely graphical screen in the default case, but still
allow them to get their boot menu on the serial console, let's add a new
hidden option "t" that switches the output device back to the firmware default.

Signed-off-by: Alexander Graf <ag...@suse.de>

---

v1 -> v2

  - use hiddenentry instead of --hidden

diff --git a/Makefile.util.def b/Makefile.util.def
index f9caccb..d94de92 100644
--- a/Makefile.util.def
+++ b/Makefile.util.def
@@ -504,6 +504,12 @@ script = {
   installdir = grubconf;
 };
 
+script = {
+  name = '95_textmode';
+  common = util/grub.d/95_textmode.in;
+  installdir = grubconf;
+};
+
 program = {
   mansection = 1;
   name = grub-mkrescue;
diff --git a/util/grub.d/00_header.in b/util/grub.d/00_header.in
index 93a9023..b6ec7e2 100644
--- a/util/grub.d/00_header.in
+++ b/util/grub.d/00_header.in
@@ -184,6 +184,9 @@ EOF
            fi
        fi
 
+    if [ -d /sys/firmware/efi ]; then
+      echo 'echo "Please press 't' to show the boot menu on this console"'
+    fi
     cat << EOF
   set gfxmode=${GRUB_GFXMODE}
   load_video
diff --git a/util/grub.d/95_textmode.in b/util/grub.d/95_textmode.in
new file mode 100644
index 0000000..fa48cf9
--- /dev/null
+++ b/util/grub.d/95_textmode.in
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+if [ -d /sys/firmware/efi ]; then
+    echo "
+    # On EFI systems we can only have graphics *or* serial, so allow the user
+    # to switch between the two
+    hiddenentry 'Text mode' --hotkey 't' {
+       set textmode=true
+       terminal_output console
+    }"
+fi
++++++ grub2-snapper-plugin.sh ++++++
--- /var/tmp/diff_new_pack.yYQQHb/_old  2016-05-05 08:12:20.000000000 +0200
+++ /var/tmp/diff_new_pack.yYQQHb/_new  2016-05-05 08:12:20.000000000 +0200
@@ -70,13 +70,13 @@
   # FATE#318101
   # Show user defined comments in grub2 menu for snapshots
   # Use userdata tag "bootloader=[user defined text]"
-  desc=`xmllint --xpath "/snapshot/userdata[key='bootloader']/value/text()" 
"${s_dir}/info.xml" 2>/dev/null || echo ""`
-  test -z "$desc" && desc=`xmllint --xpath '/snapshot/description/text()' 
"${s_dir}/info.xml" 2>/dev/null || echo ""`
+  full_desc=`xmllint --xpath 
"/snapshot/userdata[key='bootloader']/value/text()" "${s_dir}/info.xml" 
2>/dev/null || echo ""`
+  test -z "$full_desc" && desc=`xmllint --xpath '/snapshot/description/text()' 
"${s_dir}/info.xml" 2>/dev/null || echo ""`
 
   # FATE#317972
   # If we have a post entry and the description field is empty, 
   # we should use the "Pre" number and add that description to the post entry.
-  if test -z "$desc" -a "$stype" = "post"; then
+  if test -z "$full_desc" -a -z "$desc" -a "$stype" = "post"; then
     pre_num=`xmllint --xpath '/snapshot/pre_num/text()' "${s_dir}/info.xml" 
2>/dev/null || echo ""`
     if test -n "$pre_num"; then
       if test -f "${snapper_snapshot_path}/${pre_num}/info.xml" ; then
@@ -89,11 +89,12 @@
   test "$stype" = "single" && stype=""
   test -z "$stype" || stype=",$stype"
   test -z "$desc" || desc=",$desc"
+  test -z "$full_desc" && full_desc="$kernel_ver,$date$stype$desc"
 
   if test "${NAME}" = "SLES" -o "${NAME}" = "SLED"; then
-    title="${important}${NAME}${VERSION} ($kernel_ver,$date$stype$desc)"
+    title="${important}${NAME}${VERSION} ($full_desc)"
   else
-    title="${important}${NAME} ${VERSION} ($kernel_ver,$date$stype$desc)"
+    title="${important}${NAME} ${VERSION} ($full_desc)"
   fi
 
   cat <<EOF


Reply via email to