guix_mirror_bot pushed a commit to branch master
in repository guix.
commit 68cfe880b40cbc908362e0d7749fbb77f94d2202
Author: Efraim Flashner <[email protected]>
AuthorDate: Fri Jul 4 14:51:56 2025 +0300
gnu: Add make-grub procedure.
* gnu/packages/bootloaders.scm (grub): Rename to make-grub.
[arguments]: Adjust configure-flags to pass a platform flag. Don't
disable the tests on armhf and aarch64.
(grub-pc): New variable.
(grub): Set to grub-pc.
(grub-minimal, grub-coreboot, grub-efi, grub-emu): Rewrite to use
make-grub.
* etc/manifests/release.scm (%bootloader-packages): Rename the grub
package.
Change-Id: If020356cb1f8fec885df5732713078ebe4ffec96
---
etc/manifests/release.scm | 2 +-
gnu/packages/bootloaders.scm | 64 +++++++++++++++++++++-----------------------
2 files changed, 32 insertions(+), 34 deletions(-)
diff --git a/etc/manifests/release.scm b/etc/manifests/release.scm
index aa8f397f20..2c0d82d67f 100644
--- a/etc/manifests/release.scm
+++ b/etc/manifests/release.scm
@@ -59,7 +59,7 @@ TARGET."
;; The bootloaders offered by the Guix System installer.
(append
(map specification->package
- '("grub" "grub-minimal" "grub-efi"))
+ '("grub-pc" "grub-minimal" "grub-efi"))
;; Add all the u-boot packages.
;; TODO: Filter by target.
(if (or (target-arm32?)
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index c6315805e6..aa8e599e32 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -109,9 +109,9 @@
(base32
"0p2vhnc18cnbmb39vq4m7hzv4mhnm2l0a2s7gx3ar277fwng3hys"))))
-(define-public grub
+(define*-public (make-grub platform)
(package
- (name "grub")
+ (name (string-append "grub-" platform))
(version "2.12")
(source (origin
(method url-fetch)
@@ -141,7 +141,8 @@
;; calling the ‘true’ binary instead. Python is only needed during
;; bootstrapping (for genptl.py), not when building from a release.
#~(append
- (list "PYTHON=true")
+ (list "PYTHON=true"
+ (string-append "--with-platform=" #$platform))
;; This needs to be compiled with clang for powerpc64le.
(if #$(and=> (%current-target-system)
target-ppc64le?)
@@ -224,12 +225,7 @@
;; 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)))))
+ "test_unset")))))))
(inputs
(append (list gettext-minimal freetype ncurses
@@ -316,18 +312,26 @@ menu to select one of the installed operating systems.")
(license license:gpl3+)
(properties '((cpe-name . "grub2")))))
+(define-public grub-pc
+ (package
+ (inherit (make-grub "pc"))
+ (supported-systems '("i686-linux" "x86_64-linux"
+ "i586-gnu" "x86_64-gnu"))))
+
+(define-public grub grub-pc)
+
(define-public grub-minimal
(package
- (inherit grub)
+ (inherit grub-pc)
(name "grub-minimal")
(inputs
- (modify-inputs (package-inputs grub)
+ (modify-inputs (package-inputs grub-pc)
(delete "lvm2" "mdadm" "fuse" "console-setup")))
(native-inputs
(modify-inputs (package-native-inputs grub)
(delete "help2man" "texinfo" "parted" "qemu" "qemu-minimal" "xorriso")))
(arguments
- (substitute-keyword-arguments (package-arguments grub)
+ (substitute-keyword-arguments (package-arguments grub-pc)
((#:tests? _ #t) #f)
((#:phases phases #~%standard-phases)
#~(modify-phases #$phases
@@ -342,12 +346,12 @@ menu to select one of the installed operating systems.")
(system* "gunzip" "unifont.bdf.gz")))))))))
(define-public grub-coreboot
+ (let ((base (make-grub "coreboot")))
(package
- (inherit grub)
- (name "grub-coreboot")
+ (inherit base)
(synopsis "GRand Unified Boot loader (Coreboot payload version)")
(arguments
- (substitute-keyword-arguments (package-arguments grub)
+ (substitute-keyword-arguments (package-arguments base)
((#:phases phases #~%standard-phases)
#~(modify-phases #$phases
(add-before 'check 'disable-broken-tests
@@ -400,17 +404,16 @@ menu to select one of the installed operating systems.")
"grub_cmd_tr"
"test_unset"
"file_filter_test")
- " "))))))
- ((#:configure-flags flags #~'())
- #~(cons* "--with-platform=coreboot" #$flags))))))
+ " "))))))))
+ (supported-systems '("i686-linux" "x86_64-linux")))))
(define-public grub-efi
+ (let ((base (make-grub "efi")))
(package
- (inherit grub)
- (name "grub-efi")
+ (inherit base)
(synopsis "GRand Unified Boot loader (UEFI version)")
(inputs
- (modify-inputs (package-inputs grub)
+ (modify-inputs (package-inputs base)
(prepend efibootmgr mtools)))
(native-inputs
(cond ((or (target-x86-64?)
@@ -418,7 +421,7 @@ menu to select one of the installed operating systems.")
(target-aarch64?)
(target-arm32?))
;; We add the firmware needed to run the tests.
- (modify-inputs (package-native-inputs grub)
+ (modify-inputs (package-native-inputs base)
(prepend
(cond ((target-x86-64?) ovmf-x86-64)
((target-x86-32?) ovmf-i686)
@@ -428,15 +431,14 @@ menu to select one of the installed operating systems.")
(else
;; The tests are skipped in this package so we remove some
;; test dependencies.
- (modify-inputs (package-native-inputs grub)
+ (modify-inputs (package-native-inputs base)
(delete "parted" "qemu-minimal" "xorriso")))))
(arguments
- (substitute-keyword-arguments (package-arguments grub)
+ (substitute-keyword-arguments (package-arguments base)
((#:tests? _ #f) (and (not (%current-target-system))
(this-package-native-input "qemu-minimal")))
((#:configure-flags flags #~'())
- #~(cons* "--with-platform=efi"
- #$@(if (string-prefix? "x86_64"
+ #~(cons* #$@(if (string-prefix? "x86_64"
(or (%current-target-system)
(%current-system)))
#~("--enable-stack-protector") ;EFI-only for now
@@ -548,13 +550,9 @@ menu to select one of the installed operating systems.")
(else (package-native-inputs grub-efi))))))
(define-public grub-emu
- (package/inherit grub
- (name "grub-emu")
- (synopsis "GRand Unified Boot loader (Emu version)")
- (arguments
- (substitute-keyword-arguments (package-arguments grub)
- ((#:configure-flags flags #~'())
- #~(cons* "--with-platform=emu" #$flags))))))
+ (package
+ (inherit (make-grub "emu"))
+ (synopsis "GRand Unified Boot loader (Emu version)")))
;; Because grub searches hardcoded paths it's easiest to just build grub
;; again to make it find both grub-pc and grub-efi. There is a command