Petitboot: Carry build-time fixes from upstream
Some upstream fixes are still not available as a release after 1.10.4,
add them as build-time patches.
In support of that, force gettext and autoreconf on petitboot.mk since
we're touching Makefile.am files (so that we can build fine)
Summary of changes for post 1.10.4 patches:
Jeremy Kerr (15):
discover/grub2: 'search' set-variable defaults to root
discover/grub2: Use getopt for `search` argument parsing
discover/grub2: test for (ignored) --no-floppy argument
discover/grub2: Add support for UUID and label for 'search' command
discover/grub2: expose a struct for grub2 file references
discover/grub2: Add parsing code for grub2 file specifiers
discover/grub2: add support for grub2-style path specifiers in resources
discover/grub2: Allow (device)/path references in general script usage
discover/grub2: Add a reference from script to parser
discover/grub2: expose internal parse function
discover/grub2: make statements_execute non-static
discover/grub2: implement 'source' command
test/parser: Add test for recent RHCOS grub2 config
test/parser: Add RHEL8 grub config test
lib/pb-protocol: fix ordering of system info length calculation
Maxim Polyakov (3):
discover/platform-powerpc: add missing mbox block selector
discover/platform-powerpc: limit mailbox response size
discover/platform-powerpc: return the actual mailbox size
Signed-off-by: Klaus Heinrich Kiwi <klaus@linux.vnet.ibm.com>
diff --git a/openpower/package/petitboot/0008-discover-grub2-expose-a-struct-for-grub2-file-refere.patch b/openpower/package/petitboot/0008-discover-grub2-expose-a-struct-for-grub2-file-refere.patch
new file mode 100644
index 0000000..e12b6f3
--- /dev/null
+++ b/openpower/package/petitboot/0008-discover-grub2-expose-a-struct-for-grub2-file-refere.patch
@@ -0,0 +1,112 @@
+From 108772a058d1bbecf8a1d413a0c365e90cd8b6c0 Mon Sep 17 00:00:00 2001
+From: Jeremy Kerr <jk@ozlabs.org>
+Date: Tue, 5 Nov 2019 16:42:14 +0800
+Subject: [PATCH 08/18] discover/grub2: expose a struct for grub2 file
+ references
+
+Currently, we have struct grub2_resource_info to keep references to boot
+payloads that may be returned in boot options, and be (conditionally)
+resolved by the parser.
+
+We'd also like to use the same semantics for other file references in
+the grub2 parser, for arbitrary usage in scripts - where files are
+also referenced by a path and an optional device.
+
+To do this, this change moves struct grub2_resource_info to grub2.h, and
+renames to struct grub2_file. Future changes will use this for
+script-internal file handling.
+
+Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
+(cherry picked from commit 8cb74c4502712162ba899bc06e2d0cf249a8697b)
+Signed-off-by: Klaus Heinrich Kiwi <klaus@linux.vnet.ibm.com>
+---
+ discover/grub2/grub2.c | 24 +++++++++---------------
+ discover/grub2/grub2.h | 8 ++++++++
+ 2 files changed, 17 insertions(+), 15 deletions(-)
+
+diff --git a/discover/grub2/grub2.c b/discover/grub2/grub2.c
+index f62ccdd..412298b 100644
+--- a/discover/grub2/grub2.c
++++ b/discover/grub2/grub2.c
+@@ -33,17 +33,12 @@ static const char *const grub2_conf_files[] = {
+ NULL
+ };
+
+-struct grub2_resource_info {
+- char *root;
+- char *path;
+-};
+-
+ /* we use slightly different resources for grub2 */
+ struct resource *create_grub2_resource(struct discover_boot_option *opt,
+ struct discover_device *orig_device,
+ const char *root, const char *path)
+ {
+- struct grub2_resource_info *info;
++ struct grub2_file *file;
+ struct resource *res;
+
+ if (strstr(path, "://")) {
+@@ -55,13 +50,12 @@ struct resource *create_grub2_resource(struct discover_boot_option *opt,
+ res = talloc(opt, struct resource);
+
+ if (root) {
+- info = talloc(res, struct grub2_resource_info);
+- talloc_reference(info, root);
+- info->root = talloc_strdup(info, root);
+- info->path = talloc_strdup(info, path);
++ file = talloc(res, struct grub2_file);
++ file->dev = talloc_strdup(file, root);
++ file->path = talloc_strdup(file, path);
+
+ res->resolved = false;
+- res->info = info;
++ res->info = file;
+
+ } else
+ resolve_resource_against_device(res, orig_device, path);
+@@ -72,18 +66,18 @@ struct resource *create_grub2_resource(struct discover_boot_option *opt,
+ bool resolve_grub2_resource(struct device_handler *handler,
+ struct resource *res)
+ {
+- struct grub2_resource_info *info = res->info;
++ struct grub2_file *file = res->info;
+ struct discover_device *dev;
+
+ assert(!res->resolved);
+
+- dev = device_lookup_by_uuid(handler, info->root);
++ dev = device_lookup_by_uuid(handler, file->dev);
+
+ if (!dev)
+ return false;
+
+- resolve_resource_against_device(res, dev, info->path);
+- talloc_free(info);
++ resolve_resource_against_device(res, dev, file->path);
++ talloc_free(file);
+
+ return true;
+ }
+diff --git a/discover/grub2/grub2.h b/discover/grub2/grub2.h
+index 68176fb..73d91b2 100644
+--- a/discover/grub2/grub2.h
++++ b/discover/grub2/grub2.h
+@@ -107,6 +107,14 @@ struct grub2_parser {
+ bool inter_word;
+ };
+
++/* References to files in grub2 consist of an optional device and a path
++ * (specified here by UUID). If the dev is unspecified, we fall back to a
++ * default - usually the 'root' environment variable. */
++struct grub2_file {
++ char *dev;
++ char *path;
++};
++
+ /* type for builtin functions */
+ typedef int (*grub2_function)(struct grub2_script *script, void *data,
+ int argc, char *argv[]);
+--
+2.17.1
+