Subject: [bug#71348] [PATCH 1/2] gnu: grub: Update to 2.12.

From: Ludovic Courtès <[email-masked]>
Date: Mon, 3 Jun 2024 22:01:22 +0200

* gnu/packages/bootloaders.scm (grub): Update to 2.12.
[source](patches): Remove ‘grub-ignore-metadata-csum-seed.patch’.
(snippet): Create ‘grub-core/extra_deps.lst’.  Replace “exit 99”
by “exit 77”.
(grub-coreboot): Update value of ‘XFAIL_TESTS’.
* gnu/packages/patches/grub-ignore-metadata-csum-seed.patch: Remove.
* gnu/local.mk (dist_patch_DATA): Remove it.

Change-Id: Ia31b3b7e0a2e7de42d30229733e9c196fcd12fd9
---
 gnu/local.mk                                  |  1 -
 gnu/packages/bootloaders.scm                  | 27 ++++++----
 .../grub-ignore-metadata-csum-seed.patch      | 54 -------------------
 3 files changed, 16 insertions(+), 66 deletions(-)
 delete mode 100644 gnu/packages/patches/grub-ignore-metadata-csum-seed.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 6934d5ccc77..eab949f0775 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1424,7 +1424,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/groovy-add-exceptionutilsgenerator.patch	\
   %D%/packages/patches/grub-efi-fat-serial-number.patch		\
   %D%/packages/patches/grub-setup-root.patch			\
-  %D%/packages/patches/grub-ignore-metadata-csum-seed.patch			\
   %D%/packages/patches/guile-1.8-cpp-4.5.patch			\
   %D%/packages/patches/guile-2.2-skip-oom-test.patch            \
   %D%/packages/patches/guile-2.2-skip-so-test.patch             \
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index f37344c25bb..4e932ee3288 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013-2019, 2021, 2023 Ludovic Courtès <[email-masked]>
+;;; Copyright © 2013-2019, 2021, 2023-2024 Ludovic Courtès <[email-masked]>
 ;;; Copyright © 2015, 2018 Mark H Weaver <[email-masked]>
 ;;; Copyright © 2015 Leo Famulari <[email-masked]>
 ;;; Copyright © 2016, 2020 Jan (janneke) Nieuwenhuizen <[email-masked]>
@@ -104,25 +104,28 @@ (define unifont
 (define-public grub
   (package
     (name "grub")
-    (version "2.06")
+    (version "2.12")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/grub/grub-" version ".tar.xz"))
               (sha256
                (base32
-                "1qbycnxkx07arj9f2nlsi9kp0dyldspbv07ysdyd34qvz55a97mp"))
+                "1ahgzvvvwdxx7rl08pv5dyqlgp76jxz0q2cflxvsdsn4yy8p7jgk"))
               (patches (search-patches
                         "grub-efi-fat-serial-number.patch"
-                        "grub-setup-root.patch"
-                        "grub-ignore-metadata-csum-seed.patch"))
+                        "grub-setup-root.patch"))
               (modules '((guix build utils)))
               (snippet
-               '(begin
-                  ;; Adjust QEMU invocation to not use a deprecated device
-                  ;; name that was removed in QEMU 6.0.  Remove for >2.06.
-                  (substitute* "tests/ahci_test.in"
-                    (("ide-drive")
-                     "ide-hd"))))))
+               #~(begin
+                   ;; Add file missing from the release tarball.
+                   (call-with-output-file "grub-core/extra_deps.lst"
+                     (lambda (port)
+                       (display "depends bli part_gpt\n" port)))
+
+                   ;; Use exit code 77, not 99, to tell Automake that a test
+                   ;; is skipped.
+                   (substitute* (find-files "tests" "\\.in$")
+                     (("exit 99") "exit 77"))))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -348,8 +351,10 @@ (define-public grub-coreboot
                       "grub_script_return"
                       "grub_script_setparams"
                       "grub_cmd_date"
+                      "grub_cmd_set_date"
                       "grub_cmd_sleep"
                       "grub_cmd_regexp"
+                      "grub_cmd_test"
                       "grub_script_not"
                       "grub_cmd_echo"
                       "grub_script_expansion"
diff --git a/gnu/packages/patches/grub-ignore-metadata-csum-seed.patch b/gnu/packages/patches/grub-ignore-metadata-csum-seed.patch
deleted file mode 100644
index cd9b897aa65..00000000000
--- a/gnu/packages/patches/grub-ignore-metadata-csum-seed.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-commit 7fd5feff97c4b1f446f8fcf6d37aca0c64e7c763
-Author: Javier Martinez Canillas <[email-masked]>
-Date:   Fri Jun 11 21:36:16 2021 +0200
-
-    fs/ext2: Ignore checksum seed incompat feature
-    
-    This incompat feature is used to denote that the filesystem stored its
-    metadata checksum seed in the superblock. This is used to allow tune2fs
-    changing the UUID on a mounted metdata_csum filesystem without having
-    to rewrite all the disk metadata. However, the GRUB doesn't use the
-    metadata checksum at all. So, it can just ignore this feature if it
-    is enabled. This is consistent with the GRUB filesystem code in general
-    which just does a best effort to access the filesystem's data.
-    
-    The checksum seed incompat feature has to be removed from the ignore
-    list if the support for metadata checksum verification is added to the
-    GRUB ext2 driver later.
-    
-    Suggested-by: Eric Sandeen <[email-masked]>
-    Suggested-by: Lukas Czerner <[email-masked]>
-    Signed-off-by: Javier Martinez Canillas <[email-masked]>
-    Reviewed-by: Lukas Czerner <[email-masked]>
-    Reviewed-by: Daniel Kiper <[email-masked]>
-
-diff --git a/grub-core/fs/ext2.c b/grub-core/fs/ext2.c
-index e7dd78e66..4953a1591 100644
---- a/grub-core/fs/ext2.c
-+++ b/grub-core/fs/ext2.c
-@@ -103,6 +103,7 @@ GRUB_MOD_LICENSE ("GPLv3+");
- #define EXT4_FEATURE_INCOMPAT_64BIT		0x0080
- #define EXT4_FEATURE_INCOMPAT_MMP		0x0100
- #define EXT4_FEATURE_INCOMPAT_FLEX_BG		0x0200
-+#define EXT4_FEATURE_INCOMPAT_CSUM_SEED		0x2000
- #define EXT4_FEATURE_INCOMPAT_ENCRYPT          0x10000
- 
- /* The set of back-incompatible features this driver DOES support. Add (OR)
-@@ -123,10 +124,15 @@ GRUB_MOD_LICENSE ("GPLv3+");
-  * mmp:            Not really back-incompatible - was added as such to
-  *                 avoid multiple read-write mounts. Safe to ignore for this
-  *                 RO driver.
-+ * checksum seed:  Not really back-incompatible - was added to allow tools
-+ *                 such as tune2fs to change the UUID on a mounted metadata
-+ *                 checksummed filesystem. Safe to ignore for now since the
-+ *                 driver doesn't support checksum verification. However, it
-+ *                 has to be removed from this list if the support is added later.
-  */
- #define EXT2_DRIVER_IGNORED_INCOMPAT ( EXT3_FEATURE_INCOMPAT_RECOVER \
--				     | EXT4_FEATURE_INCOMPAT_MMP)
--
-+				     | EXT4_FEATURE_INCOMPAT_MMP \
-+				     | EXT4_FEATURE_INCOMPAT_CSUM_SEED)
- 
- #define EXT3_JOURNAL_MAGIC_NUMBER	0xc03b3998U
- 
-- 
2.45.1