]> TLD Linux GIT Repositories - packages/grub2.git/blobdiff - blscfg.patch
- merged 2.06 from PLD
[packages/grub2.git] / blscfg.patch
index f25dd282b23a27669658e993722054ea84834089..d7749a68ed30af305fef1fbdb9eb1a806216dce0 100644 (file)
@@ -1,6 +1,66 @@
-diff -urN grub-2.04.orig/grub-core/commands/blscfg.c grub-2.04/grub-core/commands/blscfg.c
---- grub-2.04.orig/grub-core/commands/blscfg.c 1970-01-01 01:00:00.000000000 +0100
-+++ grub-2.04/grub-core/commands/blscfg.c      2019-08-18 16:14:44.723000000 +0200
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones@redhat.com>
+Date: Tue, 22 Jan 2013 06:31:38 +0100
+Subject: [PATCH] blscfg: add blscfg module to parse Boot Loader Specification
+ snippets
+
+The BootLoaderSpec (BLS) defines a scheme where different bootloaders can
+share a format for boot items and a configuration directory that accepts
+these common configurations as drop-in files.
+
+Signed-off-by: Peter Jones <pjones@redhat.com>
+Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
+[wjt: some cleanups and fixes]
+Signed-off-by: Will Thompson <wjt@endlessm.com>
+---
+ grub-core/Makefile.core.def    |   11 +
+ grub-core/commands/blscfg.c    | 1096 ++++++++++++++++++++++++++++++++++++++++
+ grub-core/commands/legacycfg.c |    5 +-
+ grub-core/commands/loadenv.c   |   77 +--
+ grub-core/commands/menuentry.c |   20 +-
+ grub-core/normal/main.c        |    6 +
+ grub-core/commands/loadenv.h   |   93 ++++
+ include/grub/compiler.h        |    2 +
+ include/grub/menu.h            |   13 +
+ include/grub/normal.h          |    2 +-
+ 10 files changed, 1243 insertions(+), 82 deletions(-)
+ create mode 100644 grub-core/commands/blscfg.c
+ create mode 100644 grub-core/commands/loadenv.h
+
+diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
+index 41b5e16a3ce..57e253ab1a1 100644
+--- a/grub-core/Makefile.core.def
++++ b/grub-core/Makefile.core.def
+@@ -811,6 +811,16 @@ module = {
+   common = commands/blocklist.c;
+ };
++module = {
++  name = blscfg;
++  common = commands/blscfg.c;
++  common = commands/loadenv.h;
++  enable = powerpc_ieee1275;
++  enable = efi;
++  enable = i386_pc;
++  enable = emu;
++};
++
+ module = {
+   name = boot;
+   common = commands/boot.c;
+@@ -988,6 +998,7 @@ module = {
+ module = {
+   name = loadenv;
+   common = commands/loadenv.c;
++  common = commands/loadenv.h;
+   common = lib/envblk.c;
+ };
+diff --git a/grub-core/commands/blscfg.c b/grub-core/commands/blscfg.c
+new file mode 100644
+index 00000000000..54458b14518
+--- /dev/null
++++ b/grub-core/commands/blscfg.c
 @@ -0,0 +1,1096 @@
 +/*-*- Mode: C; c-basic-offset: 2; indent-tabs-mode: t -*-*/
 +
@@ -1098,10 +1158,11 @@ diff -urN grub-2.04.orig/grub-core/commands/blscfg.c grub-2.04/grub-core/command
 +  grub_unregister_extcmd (cmd);
 +  grub_unregister_extcmd (oldcmd);
 +}
-diff -urN grub-2.04.orig/grub-core/commands/legacycfg.c grub-2.04/grub-core/commands/legacycfg.c
---- grub-2.04.orig/grub-core/commands/legacycfg.c      2018-11-24 18:13:02.000000000 +0100
-+++ grub-2.04/grub-core/commands/legacycfg.c   2019-08-18 16:14:44.723000000 +0200
-@@ -133,7 +133,7 @@
+diff --git a/grub-core/commands/legacycfg.c b/grub-core/commands/legacycfg.c
+index db7a8f00273..891eac5a33f 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,
@@ -1110,7 +1171,7 @@ diff -urN grub-2.04.orig/grub-core/commands/legacycfg.c grub-2.04/grub-core/comm
            grub_free (args);
            entrysrc[0] = 0;
            grub_free (oldname);
-@@ -186,7 +186,8 @@
+@@ -186,7 +186,8 @@ legacy_file (const char *filename)
        }
        args[0] = entryname;
        grub_normal_add_menu_entry (1, args, NULL, NULL, NULL,
@@ -1120,9 +1181,10 @@ diff -urN grub-2.04.orig/grub-core/commands/legacycfg.c grub-2.04/grub-core/comm
        grub_free (args);
      }
  
-diff -urN grub-2.04.orig/grub-core/commands/loadenv.c grub-2.04/grub-core/commands/loadenv.c
---- grub-2.04.orig/grub-core/commands/loadenv.c        2018-11-24 18:13:02.000000000 +0100
-+++ grub-2.04/grub-core/commands/loadenv.c     2019-08-18 16:14:44.723000000 +0200
+diff --git a/grub-core/commands/loadenv.c b/grub-core/commands/loadenv.c
+index 3fd664aac33..163b9a09042 100644
+--- a/grub-core/commands/loadenv.c
++++ b/grub-core/commands/loadenv.c
 @@ -28,6 +28,8 @@
  #include <grub/extcmd.h>
  #include <grub/i18n.h>
@@ -1132,7 +1194,7 @@ diff -urN grub-2.04.orig/grub-core/commands/loadenv.c grub-2.04/grub-core/comman
  GRUB_MOD_LICENSE ("GPLv3+");
  
  static const struct grub_arg_option options[] =
-@@ -79,81 +81,6 @@
+@@ -79,81 +81,6 @@ open_envblk_file (char *filename,
    return file;
  }
  
@@ -1214,9 +1276,107 @@ diff -urN grub-2.04.orig/grub-core/commands/loadenv.c grub-2.04/grub-core/comman
  static grub_err_t
  grub_cmd_load_env (grub_extcmd_context_t ctxt, int argc, char **args)
  {
-diff -urN grub-2.04.orig/grub-core/commands/loadenv.h grub-2.04/grub-core/commands/loadenv.h
---- grub-2.04.orig/grub-core/commands/loadenv.h        1970-01-01 01:00:00.000000000 +0100
-+++ grub-2.04/grub-core/commands/loadenv.h     2019-08-18 16:14:44.724000000 +0200
+diff --git a/grub-core/commands/menuentry.c b/grub-core/commands/menuentry.c
+index 2c5363da7f5..9faf2be0f64 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 *index, struct bls_entry *bls)
+ {
+   int menu_hotkey = 0;
+   char **menu_args = NULL;
+@@ -149,9 +149,12 @@ grub_normal_add_menu_entry (int argc, const char **args,
+   if (! menu_title)
+     goto fail;
++  grub_dprintf ("menu", "id:\"%s\"\n", id);
++  grub_dprintf ("menu", "title:\"%s\"\n", menu_title);
+   menu_id = grub_strdup (id ? : menu_title);
+   if (! menu_id)
+     goto fail;
++  grub_dprintf ("menu", "menu_id:\"%s\"\n", menu_id);
+   /* Save argc, args to pass as parameters to block arg later. */
+   menu_args = grub_calloc (argc + 1, sizeof (char *));
+@@ -170,8 +173,12 @@ grub_normal_add_menu_entry (int argc, const char **args,
+   }
+   /* Add the menu entry at the end of the list.  */
++  int ind=0;
+   while (*last)
+-    last = &(*last)->next;
++    {
++      ind++;
++      last = &(*last)->next;
++    }
+   *last = grub_zalloc (sizeof (**last));
+   if (! *last)
+@@ -188,8 +195,11 @@ grub_normal_add_menu_entry (int argc, const char **args,
+   (*last)->args = menu_args;
+   (*last)->sourcecode = menu_sourcecode;
+   (*last)->submenu = submenu;
++  (*last)->bls = bls;
+   menu->size++;
++  if (index)
++    *index = ind;
+   return GRUB_ERR_NONE;
+  fail:
+@@ -286,7 +296,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',
++                                     NULL, NULL);
+   src = args[argc - 1];
+   args[argc - 1] = NULL;
+@@ -303,7 +314,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', NULL,
++                                NULL);
+   src[len - 1] = ch;
+   args[argc - 1] = src;
+diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c
+index 9ef98481f70..a326b192c89 100644
+--- a/grub-core/normal/main.c
++++ b/grub-core/normal/main.c
+@@ -20,6 +20,7 @@
+ #include <grub/net.h>
+ #include <grub/normal.h>
+ #include <grub/dl.h>
++#include <grub/menu.h>
+ #include <grub/misc.h>
+ #include <grub/file.h>
+ #include <grub/mm.h>
+@@ -70,6 +71,11 @@ grub_normal_free_menu (grub_menu_t menu)
+         grub_free (entry->args);
+       }
++      if (entry->bls)
++      {
++        entry->bls->visible = 0;
++      }
++
+       grub_free ((void *) entry->id);
+       grub_free ((void *) entry->users);
+       grub_free ((void *) entry->title);
+diff --git a/grub-core/commands/loadenv.h b/grub-core/commands/loadenv.h
+new file mode 100644
+index 00000000000..952f46121bd
+--- /dev/null
++++ b/grub-core/commands/loadenv.h
 @@ -0,0 +1,93 @@
 +/* loadenv.c - command to load/save environment variable.  */
 +/*
@@ -1311,141 +1471,21 @@ diff -urN grub-2.04.orig/grub-core/commands/loadenv.h grub-2.04/grub-core/comman
 +
 +  return 0;
 +}
-diff -urN grub-2.04.orig/grub-core/commands/menuentry.c grub-2.04/grub-core/commands/menuentry.c
---- grub-2.04.orig/grub-core/commands/menuentry.c      2018-11-24 18:13:02.000000000 +0100
-+++ grub-2.04/grub-core/commands/menuentry.c   2019-08-18 16:14:44.723000000 +0200
-@@ -78,7 +78,7 @@
-                           char **classes, const char *id,
-                           const char *users, const char *hotkey,
-                           const char *prefix, const char *sourcecode,
--                          int submenu)
-+                          int submenu, int *index, struct bls_entry *bls)
- {
-   int menu_hotkey = 0;
-   char **menu_args = NULL;
-@@ -149,9 +149,12 @@
-   if (! menu_title)
-     goto fail;
-+  grub_dprintf ("menu", "id:\"%s\"\n", id);
-+  grub_dprintf ("menu", "title:\"%s\"\n", menu_title);
-   menu_id = grub_strdup (id ? : menu_title);
-   if (! menu_id)
-     goto fail;
-+  grub_dprintf ("menu", "menu_id:\"%s\"\n", menu_id);
-   /* Save argc, args to pass as parameters to block arg later. */
-   menu_args = grub_malloc (sizeof (char*) * (argc + 1));
-@@ -170,8 +173,12 @@
-   }
-   /* Add the menu entry at the end of the list.  */
-+  int ind=0;
-   while (*last)
--    last = &(*last)->next;
-+    {
-+      ind++;
-+      last = &(*last)->next;
-+    }
-   *last = grub_zalloc (sizeof (**last));
-   if (! *last)
-@@ -188,8 +195,11 @@
-   (*last)->args = menu_args;
-   (*last)->sourcecode = menu_sourcecode;
-   (*last)->submenu = submenu;
-+  (*last)->bls = bls;
-   menu->size++;
-+  if (index)
-+    *index = ind;
-   return GRUB_ERR_NONE;
-  fail:
-@@ -286,7 +296,8 @@
-                                      users,
-                                      ctxt->state[2].arg, 0,
-                                      ctxt->state[3].arg,
--                                     ctxt->extcmd->cmd->name[0] == 's');
-+                                     ctxt->extcmd->cmd->name[0] == 's',
-+                                     NULL, NULL);
-   src = args[argc - 1];
-   args[argc - 1] = NULL;
-@@ -303,7 +314,8 @@
-                                 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', NULL,
-+                                NULL);
-   src[len - 1] = ch;
-   args[argc - 1] = src;
-diff -urN grub-2.04.orig/grub-core/Makefile.core.def grub-2.04/grub-core/Makefile.core.def
---- grub-2.04.orig/grub-core/Makefile.core.def 2019-04-23 10:54:47.000000000 +0200
-+++ grub-2.04/grub-core/Makefile.core.def      2019-08-18 16:14:44.723000000 +0200
-@@ -810,6 +810,16 @@
- };
- module = {
-+  name = blscfg;
-+  common = commands/blscfg.c;
-+  common = commands/loadenv.h;
-+  enable = powerpc_ieee1275;
-+  enable = efi;
-+  enable = i386_pc;
-+  enable = emu;
-+};
-+
-+module = {
-   name = boot;
-   common = commands/boot.c;
-   i386_pc = lib/i386/pc/biosnum.c;
-@@ -986,6 +996,7 @@
- module = {
-   name = loadenv;
-   common = commands/loadenv.c;
-+  common = commands/loadenv.h;
-   common = lib/envblk.c;
- };
-diff -urN grub-2.04.orig/grub-core/normal/main.c grub-2.04/grub-core/normal/main.c
---- grub-2.04.orig/grub-core/normal/main.c     2018-11-24 18:13:02.000000000 +0100
-+++ grub-2.04/grub-core/normal/main.c  2019-08-18 16:14:44.724000000 +0200
-@@ -20,6 +20,7 @@
- #include <grub/kernel.h>
- #include <grub/normal.h>
- #include <grub/dl.h>
-+#include <grub/menu.h>
- #include <grub/misc.h>
- #include <grub/file.h>
- #include <grub/mm.h>
-@@ -66,6 +67,11 @@
-         grub_free (entry->args);
-       }
-+      if (entry->bls)
-+      {
-+        entry->bls->visible = 0;
-+      }
-+
-       grub_free ((void *) entry->id);
-       grub_free ((void *) entry->users);
-       grub_free ((void *) entry->title);
-diff -urN grub-2.04.orig/include/grub/compiler.h grub-2.04/include/grub/compiler.h
---- grub-2.04.orig/include/grub/compiler.h     2018-11-24 18:13:02.000000000 +0100
-+++ grub-2.04/include/grub/compiler.h  2019-08-18 16:14:44.724000000 +0200
+diff --git a/include/grub/compiler.h b/include/grub/compiler.h
+index c9e1d7a73dc..9859ff4cc79 100644
+--- a/include/grub/compiler.h
++++ b/include/grub/compiler.h
 @@ -48,4 +48,6 @@
- #  define WARN_UNUSED_RESULT
+ #  define CLANG_PREREQ(maj,min) 0
  #endif
  
 +#define UNUSED __attribute__((__unused__))
 +
  #endif /* ! GRUB_COMPILER_HEADER */
-diff -urN grub-2.04.orig/include/grub/menu.h grub-2.04/include/grub/menu.h
---- grub-2.04.orig/include/grub/menu.h 2018-11-24 18:13:02.000000000 +0100
-+++ grub-2.04/include/grub/menu.h      2019-08-18 16:14:44.724000000 +0200
+diff --git a/include/grub/menu.h b/include/grub/menu.h
+index ee2b5e91045..0acdc2aa6bf 100644
+--- a/include/grub/menu.h
++++ b/include/grub/menu.h
 @@ -20,6 +20,16 @@
  #ifndef GRUB_MENU_HEADER
  #define GRUB_MENU_HEADER 1
@@ -1463,7 +1503,7 @@ diff -urN grub-2.04.orig/include/grub/menu.h grub-2.04/include/grub/menu.h
  struct grub_menu_entry_class
  {
    char *name;
-@@ -60,6 +70,9 @@
+@@ -60,6 +70,9 @@ struct grub_menu_entry
  
    /* The next element.  */
    struct grub_menu_entry *next;
@@ -1473,10 +1513,11 @@ diff -urN grub-2.04.orig/include/grub/menu.h grub-2.04/include/grub/menu.h
  };
  typedef struct grub_menu_entry *grub_menu_entry_t;
  
-diff -urN grub-2.04.orig/include/grub/normal.h grub-2.04/include/grub/normal.h
---- grub-2.04.orig/include/grub/normal.h       2018-11-24 18:13:02.000000000 +0100
-+++ grub-2.04/include/grub/normal.h    2019-08-18 16:14:44.724000000 +0200
-@@ -145,7 +145,7 @@
+diff --git a/include/grub/normal.h b/include/grub/normal.h
+index 218cbabccaf..8839ad85a19 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,