* [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