all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* [bug#71348] [PATCH 0/2] Update GRUB to 2.12
@ 2024-06-03 19:21 Ludovic Courtès
  2024-06-03 20:01 ` [bug#71348] [PATCH 1/2] gnu: grub: Update " Ludovic Courtès
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Ludovic Courtès @ 2024-06-03 19:21 UTC (permalink / raw)
  To: 71348
  Cc: Ludovic Courtès, Ada Stevenson, Efraim Flashner,
	Vagrant Cascadian

Hello Guix!

Following the discussion with Ada Stevenson¹ who reported that
the e2fsprogs upgrade to 1.47.0 broke system installation, here
is an upgrade of GRUB.

I tested it on x86_64-linux with:

  ./pre-inst-env guix build grub-efi{,32} grub-coreboot grub-hybrid grub{,-minimal}
  ./pre-inst-env guix build grub --target=aarch64-linux-gnu
  ./pre-inst-env guix build grub --target=i586-pc-gnu

and:

  make check-system TESTS="installed-os encrypted-root-os"

Feedback welcome!

Thanks,
Ludo'.

¹ https://lists.gnu.org/archive/html/guix-devel/2024-05/msg00006.html

Ludovic Courtès (2):
  gnu: grub: Update to 2.12.
  gnu: grub: Remove input labels and use gexps.

 gnu/local.mk                                  |   1 -
 gnu/packages/bootloaders.scm                  | 535 +++++++++---------
 .../grub-ignore-metadata-csum-seed.patch      |  54 --
 3 files changed, 268 insertions(+), 322 deletions(-)
 delete mode 100644 gnu/packages/patches/grub-ignore-metadata-csum-seed.patch


base-commit: 2e53fa5346bf52f6d6d26e035bc905ebd410dabb
-- 
2.45.1





^ permalink raw reply	[flat|nested] 6+ messages in thread

* [bug#71348] [PATCH 1/2] gnu: grub: Update to 2.12.
  2024-06-03 19:21 [bug#71348] [PATCH 0/2] Update GRUB to 2.12 Ludovic Courtès
@ 2024-06-03 20:01 ` Ludovic Courtès
  2024-06-03 20:01 ` [bug#71348] [PATCH 2/2] gnu: grub: Remove input labels and use gexps Ludovic Courtès
  2024-06-09  1:47 ` [bug#71348] [PATCH 0/2] Update GRUB to 2.12 Maxim Cournoyer
  2 siblings, 0 replies; 6+ messages in thread
From: Ludovic Courtès @ 2024-06-03 20:01 UTC (permalink / raw)
  To: 71348; +Cc: Ludovic Courtès, Efraim Flashner, Vagrant Cascadian

* 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 <ludo@gnu.org>
+;;; Copyright © 2013-2019, 2021, 2023-2024 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
@@ -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 <javierm@redhat.com>
-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 <esandeen@redhat.com>
-    Suggested-by: Lukas Czerner <lczerner@redhat.com>
-    Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
-    Reviewed-by: Lukas Czerner <lczerner@redhat.com>
-    Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
-
-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





^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [bug#71348] [PATCH 2/2] gnu: grub: Remove input labels and use gexps.
  2024-06-03 19:21 [bug#71348] [PATCH 0/2] Update GRUB to 2.12 Ludovic Courtès
  2024-06-03 20:01 ` [bug#71348] [PATCH 1/2] gnu: grub: Update " Ludovic Courtès
@ 2024-06-03 20:01 ` Ludovic Courtès
  2024-06-09  1:47 ` [bug#71348] [PATCH 0/2] Update GRUB to 2.12 Maxim Cournoyer
  2 siblings, 0 replies; 6+ messages in thread
From: Ludovic Courtès @ 2024-06-03 20:01 UTC (permalink / raw)
  To: 71348; +Cc: Ludovic Courtès, Efraim Flashner, Vagrant Cascadian

* gnu/packages/bootloaders.scm (grub)[arguments]: Use gexps.
[inputs, native-inputs]: Remove labels.
(grub-minimal, grub-coreboot, grub-efi, grub-efi32)
(grub-hybrid): Likewise.

Change-Id: I2773e6d96d170fae991d9c5db9e10196ea603371
---
 gnu/packages/bootloaders.scm | 512 +++++++++++++++++------------------
 1 file changed, 254 insertions(+), 258 deletions(-)

diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 4e932ee3288..503c7d4a194 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -128,140 +128,140 @@ (define-public grub
                      (("exit 99") "exit 77"))))))
     (build-system gnu-build-system)
     (arguments
-     `(#:configure-flags
-       ;; Counterintuitively, this *disables* a spurious Python dependency by
-       ;; calling the ‘true’ binary instead.  Python is only needed during
-       ;; bootstrapping (for genptl.py), not when building from a release.
-       (list "PYTHON=true")
-       ;; Grub fails to load modules stripped with --strip-unneeded.
-       #:strip-flags '("--strip-debug" "--enable-deterministic-archives")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-stuff
-           (lambda* (#:key native-inputs inputs #:allow-other-keys)
-             (substitute* "grub-core/Makefile.in"
-               (("/bin/sh") (which "sh")))
+     (list #:configure-flags
+           ;; Counterintuitively, this *disables* a spurious Python dependency by
+           ;; calling the ‘true’ binary instead.  Python is only needed during
+           ;; bootstrapping (for genptl.py), not when building from a release.
+           #~(list "PYTHON=true")
 
-             ;; Give the absolute file name of 'mdadm', used to determine the
-             ;; root file system when it's a RAID device.  Failing to do that,
-             ;; 'grub-probe' silently fails if 'mdadm' is not in $PATH.
-             (when (assoc-ref inputs "mdadm")
-               (substitute* "grub-core/osdep/linux/getroot.c"
-                 (("argv\\[0\\] = \"mdadm\"")
-                  (string-append "argv[0] = \""
-                                 (assoc-ref inputs "mdadm")
-                                 "/sbin/mdadm\""))))
+           ;; GRUB fails to load modules stripped with --strip-unneeded.
+           #:strip-flags
+           #~(list "--strip-debug" "--enable-deterministic-archives")
 
-             ;; Make the font visible.
-             (copy-file (assoc-ref (or native-inputs inputs)
-                                   "unifont")
-                        "unifont.bdf.gz")
-             (system* "gunzip" "unifont.bdf.gz")
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'patch-stuff
+                 (lambda* (#:key native-inputs inputs #:allow-other-keys)
+                   (substitute* "grub-core/Makefile.in"
+                     (("/bin/sh") (which "sh")))
 
-             ;; Give the absolute file name of 'ckbcomp'.
-             (substitute* "util/grub-kbdcomp.in"
-               (("^ckbcomp ")
-                (string-append
-                 (search-input-file inputs "/bin/ckbcomp")
-                 " ")))))
-         (add-after 'unpack 'set-freetype-variables
-           ;; These variables need to be set to the native versions of the
-           ;; dependencies because they are used to build programs which are
-           ;; executed during build time.
-           (lambda* (#:key native-inputs #:allow-other-keys)
-             (when (assoc-ref native-inputs "freetype")
-               (let ((freetype (assoc-ref native-inputs "freetype")))
-                 (setenv "BUILD_FREETYPE_LIBS"
-                         (string-append "-L" freetype
-                                        "/lib -lfreetype"))
-                 (setenv "BUILD_FREETYPE_CFLAGS"
-                         (string-append "-I" freetype
-                                        "/include/freetype2"))))))
-         (add-before 'check 'disable-flaky-test
-           (lambda _
-             ;; This test is unreliable. For more information, see:
-             ;; <https://bugs.gnu.org/26936>.
-             (substitute* "Makefile.in"
-               (("grub_cmd_date grub_cmd_set_date grub_cmd_sleep")
-                "grub_cmd_date grub_cmd_sleep"))))
-         (add-before 'check 'disable-pixel-perfect-test
-           (lambda _
-             ;; This test compares many screenshots rendered with an older
-             ;; Unifont (9.0.06) than that packaged in Guix.
-             (substitute* "Makefile.in"
-               (("test_unset grub_func_test")
-                "test_unset")))))
-       ;; Disable tests on ARM and AARCH64 platforms or when cross-compiling.
-       #:tests? ,(not (or (any (cute string-prefix? <> (or (%current-target-system)
-                                                           (%current-system)))
-                               '("arm" "aarch64"))
-                          (%current-target-system)))))
+                   ;; Give the absolute file name of 'mdadm', used to determine the
+                   ;; root file system when it's a RAID device.  Failing to do that,
+                   ;; 'grub-probe' silently fails if 'mdadm' is not in $PATH.
+                   (let ((mdadm (false-if-exception
+                                 (search-input-file inputs "/sbin/mdadm"))))
+                     (when mdadm
+                       (substitute* "grub-core/osdep/linux/getroot.c"
+                         (("argv\\[0\\] = \"mdadm\"")
+                          (string-append "argv[0] = \"" mdadm "/sbin/mdadm\"")))))
+
+                   ;; Make the font visible.
+                   (copy-file #+unifont "unifont.bdf.gz")
+                   (system* "gunzip" "unifont.bdf.gz")
+
+                   ;; Give the absolute file name of 'ckbcomp'.
+                   (substitute* "util/grub-kbdcomp.in"
+                     (("^ckbcomp ")
+                      (string-append
+                       (search-input-file inputs "/bin/ckbcomp")
+                       " ")))))
+               (add-after 'unpack 'set-freetype-variables
+                 ;; These variables need to be set to the native versions of the
+                 ;; dependencies because they are used to build programs which are
+                 ;; executed during build time.
+                 (lambda* (#:key native-inputs #:allow-other-keys)
+                   (when (assoc-ref native-inputs "freetype")
+                     (let ((freetype (assoc-ref native-inputs "freetype")))
+                       (setenv "BUILD_FREETYPE_LIBS"
+                               (string-append "-L" freetype
+                                              "/lib -lfreetype"))
+                       (setenv "BUILD_FREETYPE_CFLAGS"
+                               (string-append "-I" freetype
+                                              "/include/freetype2"))))))
+               (add-before 'check 'disable-flaky-test
+                 (lambda _
+                   ;; This test is unreliable. For more information, see:
+                   ;; <https://bugs.gnu.org/26936>.
+                   (substitute* "Makefile.in"
+                     (("grub_cmd_date grub_cmd_set_date grub_cmd_sleep")
+                      "grub_cmd_date grub_cmd_sleep"))))
+               (add-before 'check 'disable-pixel-perfect-test
+                 (lambda _
+                   ;; This test compares many screenshots rendered with an older
+                   ;; Unifont (9.0.06) than that packaged in Guix.
+                   (substitute* "Makefile.in"
+                     (("test_unset grub_func_test")
+                      "test_unset")))))
+
+           ;; Disable tests on ARM and AARCH64 platforms or when cross-compiling.
+           #:tests? (not (or (any (cute string-prefix? <> (%current-system))
+                                  '("arm" "aarch64"))
+                             (%current-target-system)))))
     (inputs
-     `(("gettext" ,gettext-minimal)
+     (append (list gettext-minimal freetype ncurses
 
-       ;; Depend on LVM2 for libdevmapper, used by 'grub-probe' and
-       ;; 'grub-install' to recognize mapped devices (LUKS, etc.)
-       ,@(if (member (or (%current-target-system)
-                         (%current-system))
-                     (package-supported-systems lvm2))
-             `(("lvm2" ,lvm2))
-             '())
+                   ;; Console-setup's ckbcomp is invoked by grub-kbdcomp.  It
+                   ;; is required for generating alternative keyboard layouts.
+                   console-setup)
 
-       ;; Depend on mdadm, which is invoked by 'grub-probe' and 'grub-install'
-       ;; to determine whether the root file system is RAID.
-       ,@(if (member (or (%current-target-system)
-                         (%current-system))
-                     (package-supported-systems mdadm))
-             `(("mdadm" ,mdadm))
-             '())
+             ;; Depend on LVM2 for libdevmapper, used by 'grub-probe' and
+             ;; 'grub-install' to recognize mapped devices (LUKS, etc.)
+             (if (member (or (%current-target-system)
+                               (%current-system))
+                           (package-supported-systems lvm2))
+                 (list lvm2)
+                 '())
 
-       ;; Console-setup's ckbcomp is invoked by grub-kbdcomp.  It is required
-       ;; for generating alternative keyboard layouts.
-       ("console-setup" ,console-setup)
+             ;; Depend on mdadm, which is invoked by 'grub-probe' and
+             ;; 'grub-install' to determine whether the root file system is
+             ;; RAID.
+             (if (member (or (%current-target-system)
+                             (%current-system))
+                         (package-supported-systems mdadm))
+                 (list mdadm)
+                 '())
 
-       ;; Needed for ‘grub-mount’, the only reliable way to tell whether a given
-       ;; file system will be readable by GRUB without rebooting.
-       ,@(if (member (or (%current-target-system)
-                         (%current-system))
-                     (package-supported-systems fuse-2))
-             `(("fuse" ,fuse-2))
-             '())
-
-       ("freetype" ,freetype)
-       ;; ("libusb" ,libusb)
-       ("ncurses" ,ncurses)))
+             ;; Needed for ‘grub-mount’, the only reliable way to tell whether
+             ;; a given file system will be readable by GRUB without
+             ;; rebooting.
+             (if (member (or (%current-target-system)
+                             (%current-system))
+                           (package-supported-systems fuse-2))
+                 (list fuse-2)
+                 '())))
     (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("unifont" ,unifont)
-       ("bison" ,bison)
-       ("flex" ,flex)
-       ("texinfo" ,texinfo)
-       ("help2man" ,help2man)
-       ("freetype" ,freetype)     ;native version needed for build-grub-mkfont
+     (append (list pkg-config
+                   bison
+                   flex
+                   texinfo
+                   help2man
+                   freetype       ;native version needed for build-grub-mkfont
 
-       ;; XXX: When building GRUB 2.02 on 32-bit x86, we need a binutils
-       ;; capable of assembling 64-bit instructions.  However, our default
-       ;; binutils on 32-bit x86 is not 64-bit capable.
-       ,@(if (string-match "^i[3456]86-" (%current-system))
-             (let ((binutils (package/inherit
-                                 binutils
-                               (name "binutils-i386")
-                               (arguments
-                                (substitute-keyword-arguments (package-arguments binutils)
-                                  ((#:configure-flags flags ''())
-                                   `(cons "--enable-64-bit-bfd" ,flags)))))))
-               `(("ld-wrapper" ,(make-ld-wrapper "ld-wrapper-i386"
-                                                 #:binutils binutils))
-                 ("binutils" ,binutils)))
-             '())
+                   ;; Dependencies of the test suite.
+                   parted
+                   xorriso)
 
-       ;; Dependencies for the test suite.  The "real" QEMU is needed here,
-       ;; because several targets are used.
-       ("parted" ,parted)
-       ,@(if (member (%current-system) (package-supported-systems qemu-minimal))
-             `(("qemu" ,qemu-minimal))
-             '())
-       ("xorriso" ,xorriso)))
+             ;; For the test suite, the "real" QEMU is needed because several
+             ;; targets are used.
+             (if (member (%current-system) (package-supported-systems qemu-minimal))
+                 (list qemu-minimal)
+                 '())
+
+             ;; XXX: When building GRUB 2.02 on 32-bit x86, we need a binutils
+             ;; capable of assembling 64-bit instructions.  However, our default
+             ;; binutils on 32-bit x86 is not 64-bit capable.
+             (if (string-match "^i[3456]86-" (%current-system))
+                 (let ((binutils (package/inherit
+                                     binutils
+                                   (name "binutils-i386")
+                                   (arguments
+                                    (substitute-keyword-arguments (package-arguments binutils)
+                                      ((#:configure-flags flags ''())
+                                       `(cons "--enable-64-bit-bfd" ,flags)))))))
+                   (list (make-ld-wrapper "ld-wrapper-i386"
+                                          #:binutils binutils)
+                         binutils))
+                 '())))
     (home-page "https://www.gnu.org/software/grub/")
     (synopsis "GRand Unified Boot loader")
     (description
@@ -286,24 +286,21 @@ (define-public grub-minimal
        (delete "help2man" "texinfo" "parted" "qemu" "xorriso")))
     (arguments
      (substitute-keyword-arguments (package-arguments grub)
-       ((#:configure-flags _ ''())
-        '(list "PYTHON=true"))
+       ((#:configure-flags _ #~'())
+        #~(list "PYTHON=true"))
        ((#:tests? _ #t)
         #f)
-       ((#:phases phases '%standard-phases)
-        `(modify-phases ,phases
-           (replace 'patch-stuff
-             (lambda* (#:key native-inputs inputs #:allow-other-keys)
-               (substitute* "grub-core/Makefile.in"
-                 (("/bin/sh") (which "sh")))
+       ((#:phases phases #~%standard-phases)
+        #~(modify-phases #$phases
+            (replace 'patch-stuff
+              (lambda* (#:key native-inputs inputs #:allow-other-keys)
+                (substitute* "grub-core/Makefile.in"
+                  (("/bin/sh")
+                   (which "sh")))
 
-               ;; Make the font visible.
-               (copy-file (assoc-ref (or native-inputs inputs)
-                                     "unifont")
-                          "unifont.bdf.gz")
-               (system* "gunzip" "unifont.bdf.gz")
-
-               #t))))))))
+                ;; Make the font visible.
+                (copy-file #+unifont "unifont.bdf.gz")
+                (system* "gunzip" "unifont.bdf.gz")))))))))
 
 (define-public grub-coreboot
   (package
@@ -311,66 +308,62 @@ (define-public grub-coreboot
     (name "grub-coreboot")
     (synopsis "GRand Unified Boot loader (Coreboot payload version)")
     (arguments
-     `(,@(substitute-keyword-arguments (package-arguments grub)
-           ((#:phases phases '%standard-phases)
-            `(modify-phases ,phases
-               (add-before 'check 'disable-broken-tests
-                 (lambda _
-                   (setenv "DISABLE_HARD_ERRORS" "1")
-                   (setenv
-                    "XFAIL_TESTS"
-                    (string-join
-                     ;; TODO: All the tests below use grub shell
-                     ;; (tests/util/grub-shell.in), and here grub-shell uses
-                     ;; QEMU and a Coreboot image to run the tests. Since we
-                     ;; don't have a Coreboot package in Guix yet these tests
-                     ;; are disabled. See the Guix bug #64667 for more details
-                     ;; (https://debbugs.gnu.org/cgi/bugreport.cgi?bug=64667).
-                     (list
-                      "pata_test"
-                      "ahci_test"
-                      "uhci_test"
-                      "ehci_test"
-                      "example_grub_script_test"
-                      "ohci_test"
-                      "grub_script_eval"
-                      "grub_script_echo1"
-                      "grub_script_test"
-                      "grub_script_leading_whitespace"
-                      "grub_script_echo_keywords"
-                      "grub_script_vars1"
-                      "grub_script_for1"
-                      "grub_script_while1"
-                      "grub_script_if"
-                      "grub_script_comments"
-                      "grub_script_functions"
-                      "grub_script_continue"
-                      "grub_script_break"
-                      "grub_script_shift"
-                      "grub_script_blockarg"
-                      "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"
-                      "grub_script_gettext"
-                      "grub_script_escape_comma"
-                      "help_test"
-                      "grub_script_strcmp"
-                      "test_sha512sum"
-                      "grub_cmd_tr"
-                      "test_unset"
-                      "file_filter_test")
-                     " "))))))
-           ((#:configure-flags flags
-             ''())
-            `(cons* "--with-platform=coreboot"
-                    ,flags)))))))
+     (substitute-keyword-arguments (package-arguments grub)
+       ((#:phases phases #~%standard-phases)
+        #~(modify-phases #$phases
+            (add-before 'check 'disable-broken-tests
+              (lambda _
+                (setenv "DISABLE_HARD_ERRORS" "1")
+                (setenv "XFAIL_TESTS"
+                        (string-join
+                         ;; TODO: All the tests below use grub shell
+                         ;; (tests/util/grub-shell.in), and here grub-shell uses
+                         ;; QEMU and a Coreboot image to run the tests. Since we
+                         ;; don't have a Coreboot package in Guix yet these tests
+                         ;; are disabled. See the Guix bug #64667 for more details
+                         ;; (https://debbugs.gnu.org/cgi/bugreport.cgi?bug=64667).
+                         (list "pata_test"
+                               "ahci_test"
+                               "uhci_test"
+                               "ehci_test"
+                               "example_grub_script_test"
+                               "ohci_test"
+                               "grub_script_eval"
+                               "grub_script_echo1"
+                               "grub_script_test"
+                               "grub_script_leading_whitespace"
+                               "grub_script_echo_keywords"
+                               "grub_script_vars1"
+                               "grub_script_for1"
+                               "grub_script_while1"
+                               "grub_script_if"
+                               "grub_script_comments"
+                               "grub_script_functions"
+                               "grub_script_continue"
+                               "grub_script_break"
+                               "grub_script_shift"
+                               "grub_script_blockarg"
+                               "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"
+                               "grub_script_gettext"
+                               "grub_script_escape_comma"
+                               "help_test"
+                               "grub_script_strcmp"
+                               "test_sha512sum"
+                               "grub_cmd_tr"
+                               "test_unset"
+                               "file_filter_test")
+                         " "))))))
+       ((#:configure-flags flags #~'())
+        #~(cons* "--with-platform=coreboot" #$flags))))))
 
 (define-public grub-efi
   (package
@@ -385,39 +378,38 @@ (define-public grub-efi
      (modify-inputs (package-native-inputs grub)
        (delete "parted" "qemu" "xorriso")))
     (arguments
-     `(;; TODO: Tests need a UEFI firmware for qemu. There is one at
-       ;; https://github.com/tianocore/edk2/tree/master/OvmfPkg .
-       ;; Search for 'OVMF' in "tests/util/grub-shell.in".
-       ,@(substitute-keyword-arguments (package-arguments grub)
-           ((#:tests? _ #f) #f)
-           ((#:configure-flags flags ''())
-            `(cons* "--with-platform=efi"
-                    ,@(if (string-prefix? "x86_64"
-                                          (or (%current-target-system)
-                                              (%current-system)))
-                          '("--enable-stack-protector") ; EFI-only for now
-                          '())
-                    ,flags))
-           ((#:phases phases)
-            `(modify-phases ,phases
-               (add-after 'patch-stuff 'use-absolute-efibootmgr-path
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   (substitute* "grub-core/osdep/unix/platform.c"
-                     (("efibootmgr")
-                      (search-input-file inputs
-                                         "/sbin/efibootmgr")))))
-               (add-after 'patch-stuff 'use-absolute-mtools-path
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   (let ((mtools (assoc-ref inputs "mtools")))
-                     (substitute* "util/grub-mkrescue.c"
-                       (("\"mformat\"")
-                        (string-append "\"" mtools
-                                       "/bin/mformat\"")))
-                     (substitute* "util/grub-mkrescue.c"
-                       (("\"mcopy\"")
-                        (string-append "\"" mtools
-                                       "/bin/mcopy\"")))
-                     #t))))))))))
+     ;; TODO: Tests need a UEFI firmware for qemu. There is one at
+     ;; https://github.com/tianocore/edk2/tree/master/OvmfPkg .
+     ;; Search for 'OVMF' in "tests/util/grub-shell.in".
+     (substitute-keyword-arguments (package-arguments grub)
+       ((#:tests? _ #f) #f)
+       ((#:configure-flags flags #~'())
+        #~(cons* "--with-platform=efi"
+                 #$@(if (string-prefix? "x86_64"
+                                        (or (%current-target-system)
+                                            (%current-system)))
+                        #~("--enable-stack-protector") ;EFI-only for now
+                        #~())
+                 #$flags))
+       ((#:phases phases)
+        #~(modify-phases #$phases
+            (add-after 'patch-stuff 'use-absolute-efibootmgr-path
+              (lambda* (#:key inputs #:allow-other-keys)
+                (substitute* "grub-core/osdep/unix/platform.c"
+                  (("efibootmgr")
+                   (search-input-file inputs "/sbin/efibootmgr")))))
+            (add-after 'patch-stuff 'use-absolute-mtools-path
+              (lambda* (#:key inputs #:allow-other-keys)
+                (substitute* "util/grub-mkrescue.c"
+                  (("\"mformat\"")
+                   (string-append "\""
+                                  (search-input-file inputs "/bin/mformat")
+                                  "\"")))
+                (substitute* "util/grub-mkrescue.c"
+                  (("\"mcopy\"")
+                   (string-append "\""
+                                  (search-input-file inputs "/bin/mcopy")
+                                  "\"")))))))))))
 
 (define-public grub-efi32
   (package
@@ -425,17 +417,19 @@ (define-public grub-efi32
     (name "grub-efi32")
     (synopsis "GRand Unified Boot loader (UEFI 32bit version)")
     (arguments
-     `(,@(substitute-keyword-arguments (package-arguments grub-efi)
-           ((#:configure-flags flags ''())
-            `(cons*
-              ,@(cond ((target-x86?) '("--target=i386"))
-                      ((target-aarch64?)
-                       (list "--target=arm"
-                             (string-append "TARGET_CC="
-                                            (cc-for-target "arm-linux-gnueabihf"))))
-                      ((target-arm?) '("--target=arm"))
-                      (else '()))
-              ,flags)))))
+     (substitute-keyword-arguments (package-arguments grub-efi)
+       ((#:configure-flags flags #~'())
+        #~(cons* #$@(cond ((target-x86?)
+                           #~("--target=i386"))
+                          ((target-aarch64?)
+                           #~("--target=arm"
+                              (string-append "TARGET_CC="
+                                             #$(cc-for-target
+                                                "arm-linux-gnueabihf"))))
+                          ((target-arm?)
+                           #~("--target=arm"))
+                          (else #~()))
+                 #$flags))))
     (native-inputs
      (if (target-aarch64?)
          (modify-inputs (package-native-inputs grub-efi)
@@ -459,24 +453,26 @@ (define-public grub-hybrid
        (prepend grub)))
     (arguments
      (substitute-keyword-arguments (package-arguments grub-efi)
-       ((#:modules modules `((guix build utils) (guix build gnu-build-system)))
+       ((#:modules modules `((guix build utils)
+                             (guix build gnu-build-system)))
         `((ice-9 ftw) ,@modules))
        ((#:phases phases)
-        `(modify-phases ,phases
-           (add-after 'install 'install-non-efi
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (let ((input-dir (search-input-directory inputs
-                                                        "/lib/grub"))
-                     (output-dir (string-append (assoc-ref outputs "out")
-                                                "/lib/grub")))
-                 (for-each
-                  (lambda (basename)
-                    (if (not (or (string-prefix? "." basename)
-                                 (file-exists? (string-append output-dir "/" basename))))
-                        (symlink (string-append input-dir "/" basename)
-                                 (string-append output-dir "/" basename))))
-                  (scandir input-dir))
-                 #t)))))))))
+        #~(modify-phases #$phases
+            (add-after 'install 'install-non-efi
+              (lambda* (#:key inputs outputs #:allow-other-keys)
+                (let ((input-dir (search-input-directory inputs "/lib/grub"))
+                      (output-dir (string-append (assoc-ref outputs "out")
+                                                 "/lib/grub")))
+                  (for-each (lambda (basename)
+                              (unless (or (string-prefix? "." basename)
+                                          (file-exists? (string-append
+                                                         output-dir "/"
+                                                         basename)))
+                                (symlink (string-append input-dir "/"
+                                                        basename)
+                                         (string-append output-dir "/"
+                                                        basename))))
+                            (scandir input-dir)))))))))))
 
 (define-public (make-grub-efi-netboot name subdir)
   "Make a grub-efi-netboot package named NAME, which will be able to boot over
-- 
2.45.1





^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [bug#71348] [PATCH 0/2] Update GRUB to 2.12
  2024-06-03 19:21 [bug#71348] [PATCH 0/2] Update GRUB to 2.12 Ludovic Courtès
  2024-06-03 20:01 ` [bug#71348] [PATCH 1/2] gnu: grub: Update " Ludovic Courtès
  2024-06-03 20:01 ` [bug#71348] [PATCH 2/2] gnu: grub: Remove input labels and use gexps Ludovic Courtès
@ 2024-06-09  1:47 ` Maxim Cournoyer
  2024-06-24  2:51   ` Maxim Cournoyer
  2 siblings, 1 reply; 6+ messages in thread
From: Maxim Cournoyer @ 2024-06-09  1:47 UTC (permalink / raw)
  To: Ludovic Courtès
  Cc: Vagrant Cascadian, Ada Stevenson, 71348, Efraim Flashner,
	Josselin Poiret

Hi Ludovic,

+CC Josselin, who also had a GRUB 2.12 patch somewhere (can't find it)

Ludovic Courtès <ludo@gnu.org> writes:

> Hello Guix!
>
> Following the discussion with Ada Stevenson¹ who reported that
> the e2fsprogs upgrade to 1.47.0 broke system installation, here
> is an upgrade of GRUB.
>
> I tested it on x86_64-linux with:
>
>   ./pre-inst-env guix build grub-efi{,32} grub-coreboot grub-hybrid grub{,-minimal}

That's a welcome update.  I believe it'll fix our LUKS2 issues and we
could do without mentioning the caveats in the manual, like so:

--8<---------------cut here---------------start------------->8---
modified   doc/guix.texi
@@ -2384,21 +2384,12 @@ Keyboard Layout and Networking and Partitioning
 @uref{https://linux.die.net/man/8/cryptsetup, @code{man cryptsetup}},
 @code{man cryptsetup}} for more information).
 
-@quotation Warning
-While efforts are in progress to extend support to LUKS2, please note
-that Guix only supports devices of type LUKS1 at the moment. You can
-verify that your existing LUKS device is of the right type by running
-@command{cryptsetup luksDump @var{device}}. Alternatively, you can
-create a new LUKS1 device with @command{cryptsetup luksFormat --type
-luks1 @var{device}}.
-@end quotation
-
 Assuming you want to store the root partition on @file{/dev/sda2}, the
-command sequence to format it as a LUKS1 partition would be along these
+command sequence to format it as a LUKS partition would be along these
 lines:
 
 @example
-cryptsetup luksFormat --type luks1 /dev/sda2
+cryptsetup luksFormat /dev/sda2
 cryptsetup open /dev/sda2 my-partition
 mkfs.ext4 -L my-root /dev/mapper/my-partition
 @end example
--8<---------------cut here---------------end--------------->8---

Reviewed-by: Maxim Cournoyer <maxim.cournoyer@gmail>

-- 
Thanks,
Maxim




^ permalink raw reply	[flat|nested] 6+ messages in thread

* [bug#71348] [PATCH 0/2] Update GRUB to 2.12
  2024-06-09  1:47 ` [bug#71348] [PATCH 0/2] Update GRUB to 2.12 Maxim Cournoyer
@ 2024-06-24  2:51   ` Maxim Cournoyer
       [not found]     ` <a06db78c-b96c-804f-9487-e7a16b14b83e@gmail.com>
  0 siblings, 1 reply; 6+ messages in thread
From: Maxim Cournoyer @ 2024-06-24  2:51 UTC (permalink / raw)
  To: Ludovic Courtès
  Cc: Josselin Poiret, 71348, Vagrant Cascadian, Efraim Flashner,
	Ada Stevenson, 71348-done

Hi,

Maxim Cournoyer <maxim.cournoyer@gmail.com> writes:

> Hi Ludovic,
>
> +CC Josselin, who also had a GRUB 2.12 patch somewhere (can't find it)
>
> Ludovic Courtès <ludo@gnu.org> writes:
>
>> Hello Guix!
>>
>> Following the discussion with Ada Stevenson¹ who reported that
>> the e2fsprogs upgrade to 1.47.0 broke system installation, here
>> is an upgrade of GRUB.
>>
>> I tested it on x86_64-linux with:
>>
>>   ./pre-inst-env guix build grub-efi{,32} grub-coreboot grub-hybrid grub{,-minimal}
>
> That's a welcome update.  I believe it'll fix our LUKS2 issues and we
> could do without mentioning the caveats in the manual, like so:
>
> modified   doc/guix.texi
> @@ -2384,21 +2384,12 @@ Keyboard Layout and Networking and Partitioning
>  @uref{https://linux.die.net/man/8/cryptsetup, @code{man cryptsetup}},
>  @code{man cryptsetup}} for more information).
>  
> -@quotation Warning
> -While efforts are in progress to extend support to LUKS2, please note
> -that Guix only supports devices of type LUKS1 at the moment. You can
> -verify that your existing LUKS device is of the right type by running
> -@command{cryptsetup luksDump @var{device}}. Alternatively, you can
> -create a new LUKS1 device with @command{cryptsetup luksFormat --type
> -luks1 @var{device}}.
> -@end quotation
> -
>  Assuming you want to store the root partition on @file{/dev/sda2}, the
> -command sequence to format it as a LUKS1 partition would be along these
> +command sequence to format it as a LUKS partition would be along these
>  lines:
>  
>  @example
> -cryptsetup luksFormat --type luks1 /dev/sda2
> +cryptsetup luksFormat /dev/sda2
>  cryptsetup open /dev/sda2 my-partition
>  mkfs.ext4 -L my-root /dev/mapper/my-partition
>  @end example
>
> Reviewed-by: Maxim Cournoyer <maxim.cournoyer@gmail>

I've now applied this with the above.

Closing!

-- 
Thanks,
Maxim




^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [bug#71348] [PATCH 0/2] Update GRUB to 2.12
       [not found]     ` <a06db78c-b96c-804f-9487-e7a16b14b83e@gmail.com>
@ 2024-06-24 13:10       ` Maxim Cournoyer
  0 siblings, 0 replies; 6+ messages in thread
From: Maxim Cournoyer @ 2024-06-24 13:10 UTC (permalink / raw)
  To: adanskana, guix-devel

Hello!

adanskana@gmail.com writes:

> Hi Maxim, On 24/06/2024 02:51, Maxim Cournoyer
> <maxim.cournoyer@gmail.com> wrote:
>> Hi,
>> Maxim Cournoyer <maxim.cournoyer@gmail.com> writes:
>>  > Hi Ludovic,
>> >
>> > +CC Josselin, who also had a GRUB 2.12 patch somewhere (can't find it)
>> >
>> > Ludovic Courtès <ludo@gnu.org> writes:
>> >
>> >> Hello Guix!
>> >>
>> >> Following the discussion with Ada Stevenson¹ who reported that
>> >> the e2fsprogs upgrade to 1.47.0 broke system installation, here
>> >> is an upgrade of GRUB.
>> >>
>> >> I tested it on x86_64-linux with:
>> >>
>> >>    ./pre-inst-env guix build grub-efi{,32} grub-coreboot grub-hybrid grub{,-minimal}
>> >
>> > That's a welcome update.  I believe it'll fix our LUKS2 issues and we
>> > could do without mentioning the caveats in the manual, like so:
>> >
>> > modified   doc/guix.texi
>> > @@ -2384,21 +2384,12 @@ Keyboard Layout and Networking and Partitioning
>> >   @uref{https://linux.die.net/man/8/cryptsetup, @code{man cryptsetup}},
>> >   @code{man cryptsetup}} for more information).
>> >    > -@quotation Warning
>> > -While efforts are in progress to extend support to LUKS2, please note
>> > -that Guix only supports devices of type LUKS1 at the moment. You can
>> > -verify that your existing LUKS device is of the right type by running
>> > -@command{cryptsetup luksDump @var{device}}. Alternatively, you can
>> > -create a new LUKS1 device with @command{cryptsetup luksFormat --type
>> > -luks1 @var{device}}.
>> > -@end quotation
>> > -
>> >   Assuming you want to store the root partition on @file{/dev/sda2}, the
>> > -command sequence to format it as a LUKS1 partition would be along these
>> > +command sequence to format it as a LUKS partition would be along these
>> >   lines:
>> >    >   @example
>> > -cryptsetup luksFormat --type luks1 /dev/sda2
>> > +cryptsetup luksFormat /dev/sda2
>> >   cryptsetup open /dev/sda2 my-partition
>> >   mkfs.ext4 -L my-root /dev/mapper/my-partition
>> >   @end example
>> >
>> > Reviewed-by: Maxim Cournoyer <maxim.cournoyer@gmail>
>> I've now applied this with the above.
> I can't see it on the repo; do you mean you have applied it to your
> local checkout and will push later? No pressure either, just a bit
> confused :)

Sorry, yes, I had applied it locally, and ran some manual sanity checks
(building, linting) on my side before pushing.

It's now live.

-- 
Thanks,
Maxim


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2024-06-24 13:11 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-03 19:21 [bug#71348] [PATCH 0/2] Update GRUB to 2.12 Ludovic Courtès
2024-06-03 20:01 ` [bug#71348] [PATCH 1/2] gnu: grub: Update " Ludovic Courtès
2024-06-03 20:01 ` [bug#71348] [PATCH 2/2] gnu: grub: Remove input labels and use gexps Ludovic Courtès
2024-06-09  1:47 ` [bug#71348] [PATCH 0/2] Update GRUB to 2.12 Maxim Cournoyer
2024-06-24  2:51   ` Maxim Cournoyer
     [not found]     ` <a06db78c-b96c-804f-9487-e7a16b14b83e@gmail.com>
2024-06-24 13:10       ` Maxim Cournoyer

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.