diff mbox series

[bug#64667,1/1] gnu: Add grub-coreboot

Message ID 8828e02880eda902dd7be2195abc013094936567.1689524124.git.GNUtoo@cyberdimension.org
State New
Headers show
Series Add grub-coreboot | expand

Commit Message

Denis 'GNUtoo' Carikli July 16, 2023, 4:56 p.m. UTC
* gnu/packages/bootloaders.scm (grub-coreboot): New variable.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
---
 gnu/packages/bootloaders.scm | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

Comments

Vagrant Cascadian July 18, 2023, 6 p.m. UTC | #1
On 2023-07-16, Denis 'GNUtoo' Carikli wrote:
> * gnu/packages/bootloaders.scm (grub-coreboot): New variable.
...
> diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
> index 01fd1093ff..c5090d1ead 100644
> --- a/gnu/packages/bootloaders.scm
> +++ b/gnu/packages/bootloaders.scm
...
> +(define-public grub-coreboot
> +  (package
> +    (inherit grub)
> +    (name "grub-coreboot")
> +    (synopsis "GRand Unified Boot loader (Coreboot payload version)")
> +    (arguments
> +     `(,@(substitute-keyword-arguments (package-arguments grub)
> +           ;; Several tests fail
> +           ((#:tests? _ #f)
> +            #f)

Could you explain in more detail about the failing tests in the comment?
Which tests?  Are they testing things that are not valid in a
grub-coreboot context?  Is it not reasonable or not plausible to
selectively disable only the failing tests?


QA seems to build it fine, and nothing else obviously leaps out at me.


live well,
  vagrant
Denis 'GNUtoo' Carikli July 27, 2023, 3:42 a.m. UTC | #2
Hi,

On Tue, 18 Jul 2023 11:00:45 -0700
Vagrant Cascadian <vagrant@debian.org> wrote:
> > +           ;; Several tests fail
> > +           ((#:tests? _ #f)
> > +            #f)
> 
> Could you explain in more detail about the failing tests in the
> comment? Which tests?  Are they testing things that are not valid in a
> grub-coreboot context?  Is it not reasonable or not plausible to
> selectively disable only the failing tests?
I've looked into it, and the reason the test fails is similar than with
UEFI: many tests require to build a Coreboot image (and also to
build cbfstool which is available in Coreboot)[1].

And building Coreboot for qemu would require to deblob it first, and
simply using Libreboot for that doesn't work anymore because recent
versions don't deblob Coreboot and even ship nonfree software in the
releases.

So at some point we will likely have some clean solution for that, but
it could take some time.

In the meantime if the comment is changed for the following, would it
work for you?
> ;; TODO: Tests need a (deblobbed) Coreboot firmware for qemu.

Or do I really need to disable the failing tests[2]?

References:
-----------
[1]To be more precise in tests/util/grub-shell.in we have:
   > if [ x$boot = xcoreboot ]; then
   >   imgfile=`mktemp "${TMPDIR:-/tmp}/tmp.XXXXXXXXXX"` || exit 1
   >   cp "${GRUB_COREBOOT_ROM}" "${imgfile}"
   >   "${GRUB_CBFSTOOL}" "${imgfile}" add-payload -f \
   >   "${rom_directory}/coreboot.elf" -n fallback/payload
   >   [...]
   > fi

   And GRUB_COREBOOT_ROM and GRUB_CBFSTOOL are not provided anywhere so
   somehow the user has to provide them.  It's also pretty clear (for
   people used to Coreboot) that GRUB_COREBOOT_ROM is a Coreboot image
   because the cbfstool command above is for coreboot images.

[2]Here's the output of the build failure with tests enabled:
   make  check-TESTS
   make[3]: Entering directory '/tmp/guix-build-grub-coreboot-2.06.drv-0/grub-2.06'
   make[4]: Entering directory '/tmp/guix-build-grub-coreboot-2.06.drv-0/grub-2.06'
   SKIP: ext234_test
   SKIP: squashfs_test
   SKIP: iso9660_test
   SKIP: hfsplus_test
   SKIP: ntfs_test
   SKIP: reiserfs_test
   SKIP: fat_test
   SKIP: minixfs_test
   SKIP: xfs_test
   SKIP: f2fs_test
   SKIP: nilfs2_test
   SKIP: romfs_test
   SKIP: exfat_test
   SKIP: tar_test
   SKIP: udf_test
   SKIP: hfs_test
   SKIP: jfs_test
   SKIP: btrfs_test
   SKIP: zfs_test
   SKIP: cpio_test
   PASS: example_scripted_test
   FAIL: pata_test
   FAIL: ahci_test
   PASS: gettext_strings_test
   FAIL: uhci_test
   FAIL: ehci_test
   FAIL: example_grub_script_test
   FAIL: ohci_test
   FAIL: grub_script_eval
   FAIL: grub_script_echo1
   FAIL: grub_script_test
   FAIL: grub_script_echo_keywords
   FAIL: grub_script_vars1
   FAIL: grub_script_leading_whitespace
   FAIL: grub_script_while1
   FAIL: grub_script_for1
   PASS: grub_script_blanklines
   PASS: grub_script_final_semicolon
   PASS: grub_script_dollar
   FAIL: grub_script_comments
   FAIL: grub_script_if
   FAIL: grub_script_break
   FAIL: grub_script_functions
   FAIL: grub_script_shift
   FAIL: grub_script_continue
   FAIL: grub_script_blockarg
   FAIL: grub_script_setparams
   FAIL: grub_cmd_regexp
   FAIL: grub_script_return
   FAIL: grub_cmd_date
   FAIL: grub_script_expansion
   FAIL: grub_cmd_sleep
   PASS: grub_script_no_commands
   SKIP: partmap_test
   PASS: hddboot_test
   PASS: fddboot_test
   PASS: cdboot_test
   PASS: netboot_test
   PASS: pseries_test
   PASS: core_compress_test
   SKIP: xzcompress_test
   SKIP: gzcompress_test
   SKIP: lzocompress_test
   FAIL: grub_cmd_echo
   FAIL: help_test
   FAIL: grub_script_not
   FAIL: grub_script_gettext
   FAIL: grub_script_escape_comma
   FAIL: grub_script_strcmp
   FAIL: test_sha512sum
   FAIL: test_unset
   FAIL: grub_cmd_tr
   FAIL: file_filter_test
   PASS: grub_cmd_test
   PASS: syslinux_test
   PASS: example_unit_test
   PASS: printf_test
   PASS: date_test
   PASS: cmp_test
   PASS: priority_queue_unit_test
   ============================================================================
   Testsuite summary for GRUB 2.06
   ============================================================================
   # TOTAL: 80
   # PASS:  19
   # SKIP:  24
   # XFAIL: 0
   # FAIL:  37
   # XPASS: 0
   # ERROR: 0
   ============================================================================
   See ./test-suite.log
   Please report to bug-grub@gnu.org
   ============================================================================
   make[4]: *** [Makefile:11629: test-suite.log] Error 1
   make[4]: Leaving directory '/tmp/guix-build-grub-coreboot-2.06.drv-0/grub-2.06'
   make[3]: *** [Makefile:11737: check-TESTS] Error 2
   make[3]: Leaving directory '/tmp/guix-build-grub-coreboot-2.06.drv-0/grub-2.06'
   make[2]: *** [Makefile:12533: check-am] Error 2
   make[2]: Leaving directory '/tmp/guix-build-grub-coreboot-2.06.drv-0/grub-2.06'
   make[1]: *** [Makefile:11514: check-recursive] Error 1
   make[1]: Leaving directory '/tmp/guix-build-grub-coreboot-2.06.drv-0/grub-2.06'
   make: *** [Makefile:12535: check] Error 2
   
   Test suite failed, dumping logs.
   
   --- ./test-suite.log --------------------------------------------------------
   
   =================================
      GRUB 2.06: ./test-suite.log
   =================================
   
   # TOTAL: 80
   # PASS:  19
   # SKIP:  24
   # XFAIL: 0
   # FAIL:  37
   # XPASS: 0
   # ERROR: 0
   
   .. contents:: :depth: 2
   
   SKIP: ext234_test
   =================
   
   SKIP ext234_test (exit status: 77)
   
   SKIP: squashfs_test
   ===================
   
   mksquashfs not installed; cannot test squashfs.
   SKIP squashfs_test (exit status: 77)
   
   SKIP: iso9660_test
   ==================
   
   xorriso not installed; cannot test iso9660.
   SKIP iso9660_test (exit status: 77)
   
   SKIP: hfsplus_test
   ==================
   
   SKIP hfsplus_test (exit status: 77)
   
   SKIP: ntfs_test
   ===============
   
   SKIP ntfs_test (exit status: 77)
   
   SKIP: reiserfs_test
   ===================
   
   SKIP reiserfs_test (exit status: 77)
   
   SKIP: fat_test
   ==============
   
   SKIP fat_test (exit status: 77)
   
   SKIP: minixfs_test
   ==================
   
   SKIP minixfs_test (exit status: 77)
   
   SKIP: xfs_test
   ==============
   
   SKIP xfs_test (exit status: 77)
   
   SKIP: f2fs_test
   ===============
   
   SKIP f2fs_test (exit status: 77)
   
   SKIP: nilfs2_test
   =================
   
   SKIP nilfs2_test (exit status: 77)
   
   SKIP: romfs_test
   ================
   
   genromfs not installed; cannot test romfs.
   SKIP romfs_test (exit status: 77)
   
   SKIP: exfat_test
   ================
   
   SKIP exfat_test (exit status: 77)
   
   SKIP: tar_test
   ==============
   
   tar not installed; cannot test tar.
   SKIP tar_test (exit status: 77)
   
   SKIP: udf_test
   ==============
   
   SKIP udf_test (exit status: 77)
   
   SKIP: hfs_test
   ==============
   
   SKIP hfs_test (exit status: 77)
   
   SKIP: jfs_test
   ==============
   
   SKIP jfs_test (exit status: 77)
   
   SKIP: btrfs_test
   ================
   
   SKIP btrfs_test (exit status: 77)
   
   SKIP: zfs_test
   ==============
   
   SKIP zfs_test (exit status: 77)
   
   SKIP: cpio_test
   ===============
   
   cpio not installed; cannot test cpio.
   SKIP cpio_test (exit status: 77)
   
   FAIL: pata_test
   ===============
   
   tar: Removing leading `/' from member names
   cp: cannot stat '': No such file or directory
   FAIL pata_test (exit status: 1)
   
   FAIL: ahci_test
   ===============
   
   tar: Removing leading `/' from member names
   cp: cannot stat '': No such file or directory
   FAIL ahci_test (exit status: 1)
   
   FAIL: uhci_test
   ===============
   
   tar: Removing leading `/' from member names
   cp: cannot stat '': No such file or directory
   FAIL uhci_test (exit status: 1)
   
   FAIL: ohci_test
   ===============
   
   tar: Removing leading `/' from member names
   cp: cannot stat '': No such file or directory
   FAIL ohci_test (exit status: 1)
   
   FAIL: ehci_test
   ===============
   
   tar: Removing leading `/' from member names
   cp: cannot stat '': No such file or directory
   FAIL ehci_test (exit status: 1)
   
   FAIL: example_grub_script_test
   ==============================
   
   cp: cannot stat '': No such file or directory
   FAIL example_grub_script_test (exit status: 1)
   
   FAIL: grub_script_eval
   ======================
   
   cp: cannot stat '': No such file or directory
   FAIL grub_script_eval (exit status: 1)
   
   FAIL: grub_script_test
   ======================
   
   cp: cannot stat '': No such file or directory
   FAIL grub_script_test (exit status: 1)
   
   FAIL: grub_script_echo1
   =======================
   
   cp: cannot stat '': No such file or directory
   FAIL grub_script_echo1 (exit status: 1)
   
   FAIL: grub_script_leading_whitespace
   ====================================
   
   cp: cannot stat '': No such file or directory
   FAIL grub_script_leading_whitespace (exit status: 1)
   
   FAIL: grub_script_echo_keywords
   ===============================
   
   cp: cannot stat '': No such file or directory
   FAIL grub_script_echo_keywords (exit status: 1)
   
   FAIL: grub_script_vars1
   =======================
   
   cp: cannot stat '': No such file or directory
   FAIL grub_script_vars1 (exit status: 1)
   
   FAIL: grub_script_for1
   ======================
   
   cp: cannot stat '': No such file or directory
   FAIL grub_script_for1 (exit status: 1)
   
   FAIL: grub_script_while1
   ========================
   
   cp: cannot stat '': No such file or directory
   FAIL grub_script_while1 (exit status: 1)
   
   FAIL: grub_script_if
   ====================
   
   cp: cannot stat '': No such file or directory
   FAIL grub_script_if (exit status: 1)
   
   FAIL: grub_script_comments
   ==========================
   
   cp: cannot stat '': No such file or directory
   FAIL grub_script_comments (exit status: 1)
   
   FAIL: grub_script_functions
   ===========================
   
   cp: cannot stat '': No such file or directory
   FAIL grub_script_functions (exit status: 1)
   
   FAIL: grub_script_break
   =======================
   
   cp: cannot stat '': No such file or directory
   FAIL grub_script_break (exit status: 1)
   
   FAIL: grub_script_continue
   ==========================
   
   cp: cannot stat '': No such file or directory
   FAIL grub_script_continue (exit status: 1)
   
   FAIL: grub_script_shift
   =======================
   
   cp: cannot stat '': No such file or directory
   FAIL grub_script_shift (exit status: 1)
   
   FAIL: grub_script_blockarg
   ==========================
   
   cp: cannot stat '': No such file or directory
   [] != [{ true }]
   FAIL grub_script_blockarg (exit status: 1)
   
   FAIL: grub_script_setparams
   ===========================
   
   cp: cannot stat '': No such file or directory
   FAIL grub_script_setparams (exit status: 1)
   
   FAIL: grub_script_return
   ========================
   
   cp: cannot stat '': No such file or directory
   FAIL grub_script_return (exit status: 1)
   
   FAIL: grub_cmd_regexp
   =====================
   
   cp: cannot stat '': No such file or directory
   FAIL grub_cmd_regexp (exit status: 1)
   
   FAIL: grub_cmd_date
   ===================
   
   cp: cannot stat '': No such file or directory
   Date not in range: 1690428943 <= 1690416000 <= 1690428943
   FAIL grub_cmd_date (exit status: 1)
   
   FAIL: grub_cmd_sleep
   ====================
   
   cp: cannot stat '': No such file or directory
   FAIL grub_cmd_sleep (exit status: 1)
   
   FAIL: grub_script_expansion
   ===========================
   
   cp: cannot stat '': No such file or directory
   FAIL grub_script_expansion (exit status: 1)
   
   FAIL: grub_script_not
   =====================
   
   cp: cannot stat '': No such file or directory
   FAIL grub_script_not (exit status: 1)
   
   SKIP: partmap_test
   ==================
   
   parted not installed; cannot test partmap
   SKIP partmap_test (exit status: 77)
   
   SKIP: xzcompress_test
   =====================
   
   xz not installed; cannot test xz compression.
   SKIP xzcompress_test (exit status: 77)
   
   SKIP: gzcompress_test
   =====================
   
   gzip not installed; cannot test gzip compression.
   SKIP gzcompress_test (exit status: 77)
   
   SKIP: lzocompress_test
   ======================
   
   lzop not installed; cannot test lzo compression.
   SKIP lzocompress_test (exit status: 77)
   
   FAIL: grub_cmd_echo
   ===================
   
   cp: cannot stat '': No such file or directory
   FAIL grub_cmd_echo (exit status: 1)
   
   FAIL: help_test
   ===============
   
   cp: cannot stat '': No such file or directory
   FAIL help_test (exit status: 1)
   
   FAIL: grub_script_gettext
   =========================
   
   cp: cannot stat '': No such file or directory
   FAIL grub_script_gettext (exit status: 1)
   
   FAIL: grub_script_escape_comma
   ==============================
   
   cp: cannot stat '': No such file or directory
   FAIL grub_script_escape_comma (exit status: 1)
   
   FAIL: grub_script_strcmp
   ========================
   
   cp: cannot stat '': No such file or directory
   FAIL grub_script_strcmp (exit status: 1)
   
   FAIL: test_sha512sum
   ====================
   
   cp: cannot stat '': No such file or directory
   GRUB sha512sum output did not match sha512sum output.
   See diff -u /tmp/guix-build-grub-coreboot-2.06.drv-0/tmp.3JBlCBhBGy /tmp/guix-build-grub-coreboot-2.06.drv-0/tmp.1s7bz8jSnV
   FAIL test_sha512sum (exit status: 1)
   
   FAIL: test_unset
   ================
   
   cp: cannot stat '': No such file or directory
   FAIL test_unset (exit status: 1)
   
   FAIL: grub_cmd_tr
   =================
   
   cp: cannot stat '': No such file or directory
   FAIL grub_cmd_tr (exit status: 1)
   
   FAIL: file_filter_test
   ======================
   
   cp: cannot stat '': No such file or directory
   FAIL file_filter_test (exit status: 1)
   
   
   error: in phase 'check': uncaught exception:
   %exception #<&invoke-error program: "make" arguments: ("check" "-j" "2") exit-status: 2 term-signal: #f stop-signal: #f> 
   phase `check' failed after 34.0 seconds
   command "make" "check" "-j" "2" failed with status 2
   builder for `/gnu/store/h78fy12q7nijz54ppfdr7z3h7yvpnyxs-grub-coreboot-2.06.drv' failed with exit code 1
   build of /gnu/store/h78fy12q7nijz54ppfdr7z3h7yvpnyxs-grub-coreboot-2.06.drv failed
   View build log at '/var/log/guix/drvs/h7/8fy12q7nijz54ppfdr7z3h7yvpnyxs-grub-coreboot-2.06.drv.gz'.
   guix build: error: build of `/gnu/store/h78fy12q7nijz54ppfdr7z3h7yvpnyxs-grub-coreboot-2.06.drv' failed

Denis
Vagrant Cascadian Aug. 29, 2023, 10:58 p.m. UTC | #3
On 2023-07-27, Denis 'GNUtoo' Carikli wrote:
> On Tue, 18 Jul 2023 11:00:45 -0700
> Vagrant Cascadian <vagrant@debian.org> wrote:
>> > +           ;; Several tests fail
>> > +           ((#:tests? _ #f)
>> > +            #f)
>> 
>> Could you explain in more detail about the failing tests in the
>> comment? Which tests?  Are they testing things that are not valid in a
>> grub-coreboot context?  Is it not reasonable or not plausible to
>> selectively disable only the failing tests?
> I've looked into it, and the reason the test fails is similar than with
> UEFI: many tests require to build a Coreboot image (and also to
> build cbfstool which is available in Coreboot)[1].
>
> And building Coreboot for qemu would require to deblob it first, and
> simply using Libreboot for that doesn't work anymore because recent
> versions don't deblob Coreboot and even ship nonfree software in the
> releases.
>
> So at some point we will likely have some clean solution for that, but
> it could take some time.
>
> In the meantime if the comment is changed for the following, would it
> work for you?
>> ;; TODO: Tests need a (deblobbed) Coreboot firmware for qemu.

Still seems a bit brief, but I suppose it is not terrible. :)

I might want to identify in the comment which tests need a coreboot
image and which need cbfstool for example. If it is really involved,
perhaps a link to a more detailed explanation, such as to a comment
filed on this bug report.


> Or do I really need to disable the failing tests[2]?

Well...

>    =================================
>       GRUB 2.06: ./test-suite.log
>    =================================
>    
>    # TOTAL: 80
>    # PASS:  19
>    # SKIP:  24
>    # XFAIL: 0
>    # FAIL:  37
>    # XPASS: 0
>    # ERROR: 0

Disabling all the tests means that you would miss out on at least 19
tests that currently PASS (but might someday fail, because they are
actually presumably testing something)...

Are all of the failures or skipped tests things that cannot reasonably
be fixed, such as being unable to build a coreboot image or cbfstool?


live well,
  vagrant
Denis 'GNUtoo' Carikli Sept. 15, 2023, 2:31 p.m. UTC | #4
Hi,

On Tue, 29 Aug 2023 15:58:33 -0700
Vagrant Cascadian <vagrant@debian.org> wrote:
> Still seems a bit brief, but I suppose it is not terrible. :)

With:
> I might want to identify in the comment which tests need a coreboot
> image and which need cbfstool for example.
and:
> Are all of the failures or skipped tests things that cannot reasonably
> be fixed, such as being unable to build a coreboot image or cbfstool?
I've looked and luckily all the tests that we need to disable fail
because they miss a Coreboot image.

I'll send a v2.

> If it is really involved, perhaps a link to a more detailed
> explanation, such as to a comment filed on this bug report.
In the v2 I've also improved a bit the description of the issue.

Denis.
Denis 'GNUtoo' Carikli Nov. 23, 2023, 11:27 a.m. UTC | #5
On Fri, 15 Sep 2023 16:31:59 +0200
Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> wrote:
> I'll send a v2.
That is now done.

Ping.

Denis.
Vagrant Cascadian Nov. 24, 2023, 9:42 p.m. UTC | #6
On 2023-11-23, Denis 'GNUtoo' Carikli wrote:
> On Fri, 15 Sep 2023 16:31:59 +0200
> Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> wrote:
>> I'll send a v2.
> That is now done.
>
> Ping.

Never received the patch; it was only sent to the bug tracking system,
not the team members.

Pushed now as:

4b6f6b3e180afc5d1b286130710dd9e3eb6c2889 gnu: Add grub-coreboot

live well,
  vagrant
diff mbox series

Patch

diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 01fd1093ff..c5090d1ead 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -15,7 +15,7 @@ 
 ;;; Copyright © 2020, 2021 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2021 Vincent Legoll <vincent.legoll@gmail.com>
 ;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
-;;; Copyright © 2022 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
+;;; Copyright © 2022, 2023 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
 ;;; Copyright © 2021 Stefan <stefan-guix@vodafonemail.de>
 ;;; Copyright © 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
@@ -297,6 +297,21 @@  (define-public grub-minimal
 
                #t))))))))
 
+(define-public grub-coreboot
+  (package
+    (inherit grub)
+    (name "grub-coreboot")
+    (synopsis "GRand Unified Boot loader (Coreboot payload version)")
+    (arguments
+     `(,@(substitute-keyword-arguments (package-arguments grub)
+           ;; Several tests fail
+           ((#:tests? _ #f)
+            #f)
+           ((#:configure-flags flags
+             ''())
+            `(cons* "--with-platform=coreboot"
+                    ,flags)))))))
+
 (define-public grub-efi
   (package
     (inherit grub)