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 - olaf@aepfle.de + +- Remove xen-devel from BuildRequires + required headers are included in grub-2.0.2 + +------------------------------------------------------------------- +Thu Apr 28 09:06:11 UTC 2016 - agraf@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 - mchang@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 <agraf@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 <agraf@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 <agraf@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 <agraf@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
participants (1)
-
root@hilbert.suse.de