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/0016-test-parser-Add-test-for-recent-RHCOS-grub2-config.patch b/openpower/package/petitboot/0016-test-parser-Add-test-for-recent-RHCOS-grub2-config.patch
new file mode 100644
index 0000000..de8e4c2
--- /dev/null
+++ b/openpower/package/petitboot/0016-test-parser-Add-test-for-recent-RHCOS-grub2-config.patch
@@ -0,0 +1,278 @@
+From dd5c8ee1440bde77c6829a084c0116d059949720 Mon Sep 17 00:00:00 2001
+From: Jeremy Kerr <jk@ozlabs.org>
+Date: Thu, 14 Nov 2019 15:08:21 +0800
+Subject: [PATCH 16/18] test/parser: Add test for recent RHCOS grub2 config
+
+Add a test for a RHCOS grub2 boot config, using the ignition firstboot
+facility.
+
+Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
+(cherry picked from commit 1ef95c2606eb6c9fcf3530504317f3a0b1a1ba34)
+Signed-off-by: Klaus Heinrich Kiwi <klaus@linux.vnet.ibm.com>
+---
+ test/parser/Makefile.am                 |   1 +
+ test/parser/data/grub2-rhcos-ootpa.conf | 194 ++++++++++++++++++++++++
+ test/parser/test-grub2-rhcos-ootpa.c    |  38 +++++
+ 3 files changed, 233 insertions(+)
+ create mode 100644 test/parser/data/grub2-rhcos-ootpa.conf
+ create mode 100644 test/parser/test-grub2-rhcos-ootpa.c
+
+diff --git a/test/parser/Makefile.am b/test/parser/Makefile.am
+index 5f1a93b..5f7922c 100644
+--- a/test/parser/Makefile.am
++++ b/test/parser/Makefile.am
+@@ -43,6 +43,7 @@ parser_TESTS = \
+ 	test/parser/test-grub2-f20-ppc64 \
+ 	test/parser/test-grub2-ubuntu-13_04-x86 \
+ 	test/parser/test-grub2-sles-btrfs-snapshot \
++	test/parser/test-grub2-rhcos-ootpa \
+ 	test/parser/test-grub2-lexer-error \
+ 	test/parser/test-grub2-parser-error \
+ 	test/parser/test-grub2-test-file-ops \
+diff --git a/test/parser/data/grub2-rhcos-ootpa.conf b/test/parser/data/grub2-rhcos-ootpa.conf
+new file mode 100644
+index 0000000..329980e
+--- /dev/null
++++ b/test/parser/data/grub2-rhcos-ootpa.conf
+@@ -0,0 +1,194 @@
++#
++# DO NOT EDIT THIS FILE
++#
++# It is automatically generated by grub2-mkconfig using templates
++# from /etc/grub.d and settings from /etc/default/grub
++#
++
++### BEGIN /etc/grub.d/00_header ###
++set pager=1
++
++if [ -f ${config_directory}/grubenv ]; then
++  load_env -f ${config_directory}/grubenv
++elif [ -s $prefix/grubenv ]; then
++  load_env
++fi
++if [ "${next_entry}" ] ; then
++   set default="${next_entry}"
++   set next_entry=
++   save_env next_entry
++   set boot_once=true
++else
++   set default="${saved_entry}"
++fi
++
++if [ x"${feature_menuentry_id}" = xy ]; then
++  menuentry_id_option="--id"
++else
++  menuentry_id_option=""
++fi
++
++export menuentry_id_option
++
++if [ "${prev_saved_entry}" ]; then
++  set saved_entry="${prev_saved_entry}"
++  save_env saved_entry
++  set prev_saved_entry=
++  save_env prev_saved_entry
++  set boot_once=true
++fi
++
++function savedefault {
++  if [ -z "${boot_once}" ]; then
++    saved_entry="${chosen}"
++    save_env saved_entry
++  fi
++}
++
++function load_video {
++  if [ x$feature_all_video_module = xy ]; then
++    insmod all_video
++  else
++    insmod efi_gop
++    insmod efi_uga
++    insmod ieee1275_fb
++    insmod vbe
++    insmod vga
++    insmod video_bochs
++    insmod video_cirrus
++  fi
++}
++
++terminal_output ofconsole
++if [ x$feature_timeout_style = xy ] ; then
++  set timeout_style=menu
++  set timeout=1
++# Fallback normal timeout code in case the timeout_style feature is
++# unavailable.
++else
++  set timeout=1
++fi
++### END /etc/grub.d/00_header ###
++
++### BEGIN /etc/grub.d/01_menu_auto_hide ###
++if [ "${boot_success}" = "1" -o "${boot_indeterminate}" = "1" ]; then
++  set last_boot_ok=1
++else
++  set last_boot_ok=0
++fi
++
++# Reset boot_indeterminate after a successful boot
++if [ "${boot_success}" = "1" ] ; then
++  set boot_indeterminate=0
++# Avoid boot_indeterminate causing the menu to be hidden more then once
++elif [ "${boot_indeterminate}" = "1" ]; then
++  set boot_indeterminate=2
++fi
++set boot_success=0
++save_env boot_success boot_indeterminate
++
++if [ x$feature_timeout_style = xy ] ; then
++  if [ "${menu_show_once}" ]; then
++    unset menu_show_once
++    save_env menu_show_once
++    set timeout_style=menu
++    set timeout=60
++  elif [ "${menu_auto_hide}" -a "${last_boot_ok}" = "1" ]; then
++    set orig_timeout_style=${timeout_style}
++    set orig_timeout=${timeout}
++    if [ "${fastboot}" = "1" ]; then
++      # timeout_style=menu + timeout=0 avoids the countdown code keypress check
++      set timeout_style=menu
++      set timeout=0
++    else
++      set timeout_style=hidden
++      set timeout=1
++    fi
++  fi
++fi
++### END /etc/grub.d/01_menu_auto_hide ###
++
++### BEGIN /etc/grub.d/01_users ###
++if [ -f ${prefix}/user.cfg ]; then
++  source ${prefix}/user.cfg
++  if [ -n "${GRUB2_PASSWORD}" ]; then
++    set superusers="root"
++    export superusers
++    password_pbkdf2 root ${GRUB2_PASSWORD}
++  fi
++fi
++### END /etc/grub.d/01_users ###
++
++### BEGIN /etc/grub.d/02_ignition_firstboot ###
++# We store the file on the /boot/ partition so find the
++# boot partition. On UEFI this may different than the grub
++# $root so we search for it here.
++# https://github.com/coreos/ignition-dracut/issues/51
++search --set=bootpart --label boot
++# Determine if this is a first boot and set the variable
++# to be used later on the kernel command line.
++set ignition_firstboot=""
++if [ -f "(${bootpart})/ignition.firstboot" ]; then
++    # default to dhcp networking parameters to be used with ignition 
++    set ignition_network_kcmdline='rd.neednet=1 ip=dhcp'
++
++    # source in the `ignition.firstboot` file which could override the
++    # above $ignition_network_kcmdline with static networking config.
++    # This override feature is primarily used by coreos-installer to
++    # persist static networking config provided during install to the    
++    # first boot of the machine.
++    source "(${bootpart})/ignition.firstboot"
++    
++    # we support setting variables in the 
++    set ignition_firstboot="ignition.firstboot $ignition_network_kcmdline $ignition_extra_kcmdline"
++fi
++### END /etc/grub.d/02_ignition_firstboot ###
++
++### BEGIN /etc/grub.d/10_linux_bls ###
++
++### END /etc/grub.d/10_linux_bls ###
++
++### BEGIN /etc/grub.d/15_ostree ###
++menuentry 'Red Hat Enterprise Linux CoreOS 42.80.20191030.0 (Ootpa) (ostree)' --class gnu-linux --class gnu --class os --unrestricted 'ostree-0-645e1535-a6f3-4fa6-a82c-b8c032619a7b' {
++load_video
++set gfxpayload=keep
++insmod gzio
++insmod part_gpt
++insmod ext2
++set root='hd0,gpt2'
++if [ x$feature_platform_search_hint = xy ]; then
++  search --no-floppy --fs-uuid --set=root --hint='hd0,gpt2'  645e1535-a6f3-4fa6-a82c-b8c032619a7b
++else
++  search --no-floppy --fs-uuid --set=root 645e1535-a6f3-4fa6-a82c-b8c032619a7b
++fi
++linux /ostree/rhcos-6264e4be818e20cf1021bd6e7aa8c76147ce07dec186468c7dfbbc9c5dfc7d8b/vmlinuz-4.18.0-80.11.2.el8_0.ppc64le console=tty0 console=hvc0,115200n8 rootflags=defaults,prjquota rw $ignition_firstboot root=UUID=8d8a5c3b-97e6-4d7b-bb87-206af5a9d851 ostree=/ostree/boot.0/rhcos/6264e4be818e20cf1021bd6e7aa8c76147ce07dec186468c7dfbbc9c5dfc7d8b/0 ignition.platform.id=openstack
++initrd /ostree/rhcos-6264e4be818e20cf1021bd6e7aa8c76147ce07dec186468c7dfbbc9c5dfc7d8b/initramfs-4.18.0-80.11.2.el8_0.ppc64le.img
++}
++### END /etc/grub.d/15_ostree ###
++
++### BEGIN /etc/grub.d/20_linux_xen ###
++### END /etc/grub.d/20_linux_xen ###
++
++### BEGIN /etc/grub.d/20_ppc_terminfo ###
++  terminfo -g 80x24 ofconsole
++### END /etc/grub.d/20_ppc_terminfo ###
++
++### BEGIN /etc/grub.d/30_os-prober ###
++### END /etc/grub.d/30_os-prober ###
++
++### BEGIN /etc/grub.d/30_uefi-firmware ###
++### END /etc/grub.d/30_uefi-firmware ###
++
++### BEGIN /etc/grub.d/40_custom ###
++# This file provides an easy way to add custom menu entries.  Simply type the
++# menu entries you want to add after this comment.  Be careful not to change
++# the 'exec tail' line above.
++### END /etc/grub.d/40_custom ###
++
++### BEGIN /etc/grub.d/41_custom ###
++if [ -f  ${config_directory}/custom.cfg ]; then
++  source ${config_directory}/custom.cfg
++elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
++  source $prefix/custom.cfg;
++fi
++### END /etc/grub.d/41_custom ###
+diff --git a/test/parser/test-grub2-rhcos-ootpa.c b/test/parser/test-grub2-rhcos-ootpa.c
+new file mode 100644
+index 0000000..19299be
+--- /dev/null
++++ b/test/parser/test-grub2-rhcos-ootpa.c
+@@ -0,0 +1,38 @@
++
++#include "parser-test.h"
++
++void run_test(struct parser_test *test)
++{
++	struct discover_boot_option *opt;
++	struct discover_context *ctx;
++	struct discover_device *dev;
++
++	ctx = test->ctx;
++
++	dev = test_create_device(test, "bootdev");
++	dev->label = "boot";
++	device_handler_add_device(test->handler, dev);
++
++	test_read_conf_file(test, "grub2-rhcos-ootpa.conf",
++			"/grub/grub.cfg");
++
++	/* add the ignition.firstboot file on the boot-labelled partition,
++	 * to check that we can source this correctly */
++	test_add_file_string(test, dev,
++			"/ignition.firstboot",
++			"ignition_extra_kcmdline=meep\n");
++
++	test_run_parser(test, "grub2");
++
++	check_boot_option_count(ctx, 1);
++
++	opt = get_boot_option(ctx, 0);
++	check_name(opt,
++		"Red Hat Enterprise Linux CoreOS 42.80.20191030.0 (Ootpa) (ostree)");
++	check_args(opt, "console=tty0 console=hvc0,115200n8 "
++			"rootflags=defaults,prjquota rw "
++			"ignition.firstboot rd.neednet=1 ip=dhcp meep "
++			"root=UUID=8d8a5c3b-97e6-4d7b-bb87-206af5a9d851 "
++			"ostree=/ostree/boot.0/rhcos/6264e4be818e20cf1021bd6e7aa8c76147ce07dec186468c7dfbbc9c5dfc7d8b/0 "
++			"ignition.platform.id=openstack");
++}
+-- 
+2.17.1
+