GNU bug report logs - #28377
[PATCH 00/10] Allow users to specify the UUID of disk images

Previous Next

Package: guix-patches;

Reported by: Ludovic Courtès <ludo <at> gnu.org>

Date: Wed, 6 Sep 2017 21:53:01 UTC

Severity: normal

Tags: patch

Done: ludo <at> gnu.org (Ludovic Courtès)

Bug is archived. No further changes may be made.

Full log


Message #35 received at 28377 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: 28377 <at> debbugs.gnu.org
Cc: Danny Milosavljevic <dannym <at> scratchpost.org>,
 Ludovic Courtès <ludo <at> gnu.org>,
 Tobias Geerinckx-Rice <me <at> tobias.gr>
Subject: [PATCH 07/10] system: Serialize the UUID type in the "parameters"
 file.
Date: Thu,  7 Sep 2017 00:17:53 +0200
* gnu/system.scm (read-boot-parameters)[device->sexp]: New procedure.
Use it for 'root-device' and 'store-device'.
(device->sexp): Serialize the UUID type in addition to its bytevector.
---
 gnu/system.scm | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/gnu/system.scm b/gnu/system.scm
index a8d2a8131..6f795d629 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -234,6 +234,15 @@ directly by the user."
 (define (read-boot-parameters port)
   "Read boot parameters from PORT and return the corresponding
 <boot-parameters> object or #f if the format is unrecognized."
+  (define device-sexp->device
+    (match-lambda
+      (('uuid (? symbol? type) (? bytevector? bv))
+       (bytevector->uuid bv type))
+      ((? bytevector? bv)                         ;old format
+       (bytevector->uuid bv 'dce))
+      ((? string? device)
+       device)))
+
   (match (read port)
     (('boot-parameters ('version 0)
                        ('label label) ('root-device root)
@@ -241,7 +250,7 @@ directly by the user."
                        rest ...)
      (boot-parameters
       (label label)
-      (root-device root)
+      (root-device (device->sexp root))
 
       (bootloader-name
        (match (assq 'bootloader-name rest)
@@ -269,10 +278,8 @@ directly by the user."
 
       (store-device
        (match (assq 'store rest)
-         (('store ('device (? bytevector? bv)) _ ...)
-          (bytevector->uuid bv))
          (('store ('device device) _ ...)
-          device)
+          (device-sexp->device device))
          (_                                       ;the old format
           ;; Root might be a device path like "/dev/sda1", which is not a
           ;; suitable GRUB device identifier.
@@ -925,8 +932,7 @@ kernel arguments for that derivation to <boot-parameters>."
   "Serialize DEVICE as an sexp (really, as an object with a read syntax.)"
   (match device
     ((? uuid? uuid)
-     ;; TODO: Preserve the type of UUID.
-     (uuid-bytevector uuid))
+     `(uuid ,(uuid-type uuid) ,(uuid-bytevector uuid)))
     (_
      device)))
 
-- 
2.14.1





This bug report was last modified 7 years and 258 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.