diff options
author | Ludovic Courtès <ludo@gnu.org> | 2017-09-06 10:22:58 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2017-09-11 22:24:47 +0200 |
commit | 075681d3501082c6e22df8abf29dfe89d85effc1 (patch) | |
tree | 95c1c16bd84782846c70ec9eec85521fe2fb0cdf | |
parent | 9b336338cdc0e46a3bf7a2913c2f61cd2410c4d6 (diff) | |
download | patches-075681d3501082c6e22df8abf29dfe89d85effc1.tar patches-075681d3501082c6e22df8abf29dfe89d85effc1.tar.gz |
system: Serialize the UUID type in the "parameters" file.
* 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.
-rw-r--r-- | gnu/system.scm | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/gnu/system.scm b/gnu/system.scm index a8d2a81316..6f795d6292 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))) |