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
+