diff options
author | Ludovic Courtès <ludo@gnu.org> | 2017-10-03 22:27:27 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2017-10-11 11:12:33 +0200 |
commit | 9976c76aab2fe75d7fc672034090e19bdab6879c (patch) | |
tree | ca63380f7b926c21df7f9cc4edbedc641d43d41d | |
parent | 1c65cca5743e9171bbd94307195f123d26c0535e (diff) | |
download | patches-9976c76aab2fe75d7fc672034090e19bdab6879c.tar patches-9976c76aab2fe75d7fc672034090e19bdab6879c.tar.gz |
file-systems: Preserve UUID types when serializing.
Reported by Roel Janssen <roel@gnu.org>
at <https://lists.gnu.org/archive/html/help-guix/2017-09/msg00094.html>.
* gnu/system/file-systems.scm (file-system->spec): When DEVICE is a
UUID, serialize it in a way that preserves its type.
(spec->file-system): Adjust accordingly.
* gnu/build/file-systems.scm (canonicalize-device-spec): Add case for
when SPEC is 'uuid?'.
-rw-r--r-- | gnu/build/file-systems.scm | 11 | ||||
-rw-r--r-- | gnu/system/file-systems.scm | 10 |
2 files changed, 14 insertions, 7 deletions
diff --git a/gnu/build/file-systems.scm b/gnu/build/file-systems.scm index bcb0c53628..093f60d701 100644 --- a/gnu/build/file-systems.scm +++ b/gnu/build/file-systems.scm @@ -450,8 +450,7 @@ the following: \"/dev/sda1\"; • 'label', in which case SPEC is known to designate a partition label--e.g., \"my-root-part\"; - • 'uuid', in which case SPEC must be a UUID (a 16-byte bytevector) - designating a partition; + • 'uuid', in which case SPEC must be a UUID designating a partition; • 'any', in which case SPEC can be anything. " (define max-trials @@ -497,9 +496,11 @@ the following: (resolve find-partition-by-label spec identity)) ((uuid) (resolve find-partition-by-uuid - (if (string? spec) - (string->uuid spec) - spec) + (cond ((string? spec) + (string->uuid spec)) + ((uuid? spec) + (uuid-bytevector spec)) + (else spec)) uuid->string)) (else (error "unknown device title" title)))) diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm index 92f040425d..27734e892a 100644 --- a/gnu/system/file-systems.scm +++ b/gnu/system/file-systems.scm @@ -18,6 +18,7 @@ (define-module (gnu system file-systems) #:use-module (ice-9 match) + #:use-module (rnrs bytevectors) #:use-module (srfi srfi-1) #:use-module (guix records) #:use-module (gnu system uuid) @@ -161,7 +162,7 @@ initrd code." (match fs (($ <file-system> device title mount-point type flags options _ _ check?) (list (if (uuid? device) - (uuid-bytevector device) + `(uuid ,(uuid-type device) ,(uuid-bytevector device)) device) title mount-point type flags options check?)))) @@ -170,7 +171,12 @@ initrd code." (match sexp ((device title mount-point type flags options check?) (file-system - (device device) (title title) + (device (match device + (('uuid (? symbol? type) (? bytevector? bv)) + (bytevector->uuid bv type)) + (_ + device))) + (title title) (mount-point mount-point) (type type) (flags flags) (options options) (check? check?))))) |