summary refs log tree commit diff
path: root/gnu/build/file-systems.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/build/file-systems.scm')
-rw-r--r--gnu/build/file-systems.scm15
1 files changed, 11 insertions, 4 deletions
diff --git a/gnu/build/file-systems.scm b/gnu/build/file-systems.scm
index d83a4f6015..f8b8697b46 100644
--- a/gnu/build/file-systems.scm
+++ b/gnu/build/file-systems.scm
@@ -295,9 +295,12 @@ the following:
     ;; The realm of canonicalization.
     (if (eq? title 'any)
         (if (string? spec)
-            (if (string-prefix? "/" spec)
-                'device
-                'label)
+            ;; The "--root=SPEC" kernel command-line option always provides a
+            ;; string, but the string can represent a device, a UUID, or a
+            ;; label.  So check for all three.
+            (cond ((string-prefix? "/" spec) 'device)
+                  ((string->uuid spec) 'uuid)
+                  (else 'label))
             'uuid)
         title))
 
@@ -323,7 +326,11 @@ the following:
      ;; Resolve the label.
      (resolve find-partition-by-label spec identity))
     ((uuid)
-     (resolve find-partition-by-uuid spec uuid->string))
+     (resolve find-partition-by-uuid
+              (if (string? spec)
+                  (string->uuid spec)
+                  spec)
+              uuid->string))
     (else
      (error "unknown device title" title))))