diff options
author | Maxim Cournoyer <maxim.cournoyer@gmail.com> | 2020-02-11 23:56:45 -0500 |
---|---|---|
committer | Maxim Cournoyer <maxim.cournoyer@gmail.com> | 2020-03-02 23:24:47 -0500 |
commit | 99e676db43389af3a9e4c21734987c086fcaa8ed (patch) | |
tree | 2024a396465edd8746d7837d27e3e22bed635d86 /gnu | |
parent | cc9b889e8f285719645b5a86f2583d7f1b2aef01 (diff) | |
download | guix-99e676db43389af3a9e4c21734987c086fcaa8ed.tar guix-99e676db43389af3a9e4c21734987c086fcaa8ed.tar.gz |
file-systems: Add a 'file-system-device->string' procedure.
* gnu/system/file-systems.scm (file-system-device->string): New procedure.
* gnu/system.scm (bootable-kernel-arguments): Use it.
* gnu/system/vm.scm (operating-system-uuid): Likewise.
* guix/scripts/system.scm (display-system-generation): Likewise.
Diffstat (limited to 'gnu')
-rw-r--r-- | gnu/system.scm | 15 | ||||
-rw-r--r-- | gnu/system/file-systems.scm | 15 | ||||
-rw-r--r-- | gnu/system/vm.scm | 8 |
3 files changed, 21 insertions, 17 deletions
diff --git a/gnu/system.scm b/gnu/system.scm index 01baa248a2..2e6d03272d 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -142,16 +142,11 @@ (define (bootable-kernel-arguments system root-device) "Return a list of kernel arguments (gexps) to boot SYSTEM from ROOT-DEVICE." (list (string-append "--root=" - (cond ((uuid? root-device) - - ;; Note: Always use the DCE format because that's - ;; what (gnu build linux-boot) expects for the - ;; '--root' kernel command-line option. - (uuid->string (uuid-bytevector root-device) - 'dce)) - ((file-system-label? root-device) - (file-system-label->string root-device)) - (else root-device))) + ;; Note: Always use the DCE format because that's what + ;; (gnu build linux-boot) expects for the '--root' + ;; kernel command-line option. + (file-system-device->string root-device + #:uuid-type 'dce)) #~(string-append "--system=" #$system) #~(string-append "--load=" #$system "/boot"))) diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm index d47a514b66..3b599efa8e 100644 --- a/gnu/system/file-systems.scm +++ b/gnu/system/file-systems.scm @@ -30,6 +30,7 @@ #:export (file-system file-system? file-system-device + file-system-device->string file-system-title ;deprecated file-system-mount-point file-system-type @@ -235,6 +236,20 @@ where both FILE1 and FILE2 are absolute file name. For example: (() #f))))))) +(define* (file-system-device->string device #:key uuid-type) + "Return the string representations of the DEVICE field of a <file-system> +record. When the device is a UUID, its representation is chosen depending on +UUID-TYPE, a symbol such as 'dce or 'iso9660." + (match device + ((? file-system-label?) + (file-system-label->string device)) + ((? uuid?) + (if uuid-type + (uuid->string (uuid-bytevector device) uuid-type) + (uuid->string device))) + ((? string?) + device))) + (define (file-system-needed-for-boot? fs) "Return true if FS has the 'needed-for-boot?' flag set, or if it holds the store--e.g., if FS is the root file system." diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm index 81b2e06ba2..03a511cdde 100644 --- a/gnu/system/vm.scm +++ b/gnu/system/vm.scm @@ -609,13 +609,7 @@ TYPE (one of 'iso9660 or 'dce). Return a UUID object." (let ((device (file-system-device fs))) (list (file-system-mount-point fs) (file-system-type fs) - (cond ((file-system-label? device) - (file-system-label->string device)) - ((uuid? device) - (uuid->string device)) - ((string? device) - device) - (else #f)) + (file-system-device->string device) (file-system-options fs)))) (if (eq? type 'iso9660) |