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
+