summary refs log tree commit diff
path: root/gnu/packages/grub.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/grub.scm')
-rw-r--r--gnu/packages/grub.scm61
1 files changed, 28 insertions, 33 deletions
diff --git a/gnu/packages/grub.scm b/gnu/packages/grub.scm
index ef7395e95e..3658f221ce 100644
--- a/gnu/packages/grub.scm
+++ b/gnu/packages/grub.scm
@@ -36,38 +36,7 @@
   #:use-module (gnu packages man)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages ncurses)
-  #:use-module (gnu packages cdrom)
-  #:use-module (srfi srfi-1))
-
-(define qemu-for-tests
-  ;; Newer QEMU versions, such as 1.5.1, no longer support the 'shutdown'
-  ;; instruction.  This leads to test hangs, as reported at
-  ;; <https://bugs.launchpad.net/bugs/947597> and fixed at
-  ;; <http://bzr.savannah.gnu.org/lh/grub/trunk/grub/revision/4828>.
-  ;; Work around it by using an older QEMU.
-  (package (inherit qemu-minimal)
-    (version "1.3.1")
-    (source (origin
-             (method url-fetch)
-             (uri (string-append "http://wiki.qemu-project.org/download/qemu-"
-                                 version ".tar.bz2"))
-             (sha256
-              (base32
-               "1bqfrb5dlsxm8gxhkksz8qzi5fhj3xqhxyfwbqcphhcv1kpyfwip"))))
-
-    ;; With recent GLib versions, we get a test failure:
-    ;;   ERROR:tests/rtc-test.c:176:check_time: assertion failed (ABS(t - s) <= wiggle): (382597824 <= 2)
-    ;; Simply disable the tests.
-    (arguments `(#:tests? #f
-                 ,@(substitute-keyword-arguments (package-arguments qemu-minimal)
-                     ((#:phases phases)
-                      ;; We disable the tests so we also skip the phase disabling
-                      ;; the qga test, which fails due to changes in QEMU
-                      `(modify-phases ,phases
-                         (delete 'disable-test-qga))))))
-
-    ;; The manual fails to build with Texinfo 5.x.
-    (native-inputs (alist-delete "texinfo" (package-native-inputs qemu)))))
+  #:use-module (gnu packages cdrom))
 
 (define unifont
   ;; GNU Unifont, <http://gnu.org/s/unifont>.
@@ -151,7 +120,7 @@
        ;; Dependencies for the test suite.  The "real" QEMU is needed here,
        ;; because several targets are used.
        ("parted" ,parted)
-       ("qemu" ,qemu-for-tests)
+       ("qemu" ,qemu-minimal)
        ("xorriso" ,xorriso)))
     (home-page "https://www.gnu.org/software/grub/")
     (synopsis "GRand Unified Boot loader")
@@ -164,3 +133,29 @@ on the same computer; upon booting the computer, the user is presented with a
 menu to select one of the installed operating systems.")
     (license gpl3+)
     (properties '((cpe-name . "grub2")))))
+
+(define-public grub-efi
+  (package
+    (inherit grub)
+    (name "grub-efi")
+    (synopsis "GRand Unified Boot loader (UEFI version)")
+    (inputs
+     `(("efibootmgr" ,efibootmgr)
+       ,@(package-inputs grub)))
+    (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".
+       #:tests? #f
+       ,@(substitute-keyword-arguments (package-arguments grub)
+           ((#:configure-flags flags) `(cons* "--with-platform=efi"
+                                              ,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")
+                      (string-append (assoc-ref inputs "efibootmgr")
+                                     "/sbin/efibootmgr")))
+                   #t)))))))))