guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/01: system: Don't emit a GRUB 'search' command when passed a GRUB fil


From: Ludovic Courtès
Subject: 01/01: system: Don't emit a GRUB 'search' command when passed a GRUB file name.
Date: Sun, 25 Sep 2016 15:55:33 +0000 (UTC)

civodul pushed a commit to branch master
in repository guix.

commit 5babe521c8adc722c2411b255cbeeef308339d06
Author: Ludovic Courtès <address@hidden>
Date:   Mon Sep 26 00:12:50 2016 +0900

    system: Don't emit a GRUB 'search' command when passed a GRUB file name.
    
    Reported by Tomáš Čech <address@hidden>
    at <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=20067#26>.
    
    * gnu/system/grub.scm (grub-root-search): Don't emit anything when FILE
    is a string that does not denote an absolute file name.
---
 gnu/system/grub.scm |   29 +++++++++++++++++------------
 1 file changed, 17 insertions(+), 12 deletions(-)

diff --git a/gnu/system/grub.scm b/gnu/system/grub.scm
index 3d29428..ead48f0 100644
--- a/gnu/system/grub.scm
+++ b/gnu/system/grub.scm
@@ -234,18 +234,23 @@ fi~%"
   "Return the GRUB 'search' command to look for ROOT-FS, which contains FILE,
 a gexp.  The result is a gexp that can be inserted in the grub.cfg-generation
 code."
-  (case (file-system-title root-fs)
-    ;; Preferably refer to ROOT-FS by its UUID or label.  This is more
-    ;; efficient and less ambiguous, see <>.
-    ((uuid)
-     (format #f "search --fs-uuid --set ~a"
-             (uuid->string (file-system-device root-fs))))
-    ((label)
-     (format #f "search --label --set ~a"
-             (file-system-device root-fs)))
-    (else
-     ;; As a last resort, look for any device containing FILE.
-     #~(format #f "search --file --set ~a" #$file))))
+  ;; Usually FILE is a file name gexp like "/gnu/store/…-linux/vmlinuz", but
+  ;; it can also be something like "(hd0,msdos1)/vmlinuz" in the case of
+  ;; custom menu entries.  In the latter case, don't emit a 'search' command.
+  (if (and (string? file) (not (string-prefix? "/" file)))
+      ""
+      (case (file-system-title root-fs)
+        ;; Preferably refer to ROOT-FS by its UUID or label.  This is more
+        ;; efficient and less ambiguous, see <>.
+        ((uuid)
+         (format #f "search --fs-uuid --set ~a"
+                 (uuid->string (file-system-device root-fs))))
+        ((label)
+         (format #f "search --label --set ~a"
+                 (file-system-device root-fs)))
+        (else
+         ;; As a last resort, look for any device containing FILE.
+         #~(format #f "search --file --set ~a" #$file)))))
 
 (define* (grub-configuration-file config store-fs entries
                                   #:key



reply via email to

[Prev in Thread] Current Thread [Next in Thread]