vm: Use 'invoke' instead of 'system*'.
* gnu/build/vm.scm (load-in-linux-vm, initialize-partition-table) (create-ext-file-system, create-fat-file-system) (install-efi, make-iso9660-image): Use 'invoke' instead of (unless (zero? (system* ...)) (error ...)).
This commit is contained in:
parent
0ab5aa056d
commit
e1d0f2aa87
|
@ -1,5 +1,5 @@
|
||||||
;;; GNU Guix --- Functional package management for GNU
|
;;; GNU Guix --- Functional package management for GNU
|
||||||
;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
|
;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
|
||||||
;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
|
;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
|
||||||
;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
|
;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
|
||||||
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
|
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||||
|
@ -121,10 +121,8 @@ the #:references-graphs parameter of 'derivation'."
|
||||||
(format #t "creating ~a image of ~,2f MiB...~%"
|
(format #t "creating ~a image of ~,2f MiB...~%"
|
||||||
disk-image-format (/ disk-image-size (expt 2 20)))
|
disk-image-format (/ disk-image-size (expt 2 20)))
|
||||||
(force-output)
|
(force-output)
|
||||||
(unless (zero? (system* "qemu-img" "create" "-f" disk-image-format
|
(invoke "qemu-img" "create" "-f" disk-image-format output
|
||||||
output
|
|
||||||
(number->string disk-image-size)))
|
(number->string disk-image-size)))
|
||||||
(error "qemu-img failed")))
|
|
||||||
|
|
||||||
(mkdir "xchg")
|
(mkdir "xchg")
|
||||||
|
|
||||||
|
@ -136,8 +134,7 @@ the #:references-graphs parameter of 'derivation'."
|
||||||
graph-files))
|
graph-files))
|
||||||
(_ #f))
|
(_ #f))
|
||||||
|
|
||||||
(unless (zero?
|
(apply invoke qemu "-nographic" "-no-reboot"
|
||||||
(apply system* qemu "-nographic" "-no-reboot"
|
|
||||||
"-m" (number->string memory-size)
|
"-m" (number->string memory-size)
|
||||||
"-object" "rng-random,filename=/dev/urandom,id=guixsd-vm-rng"
|
"-object" "rng-random,filename=/dev/urandom,id=guixsd-vm-rng"
|
||||||
"-device" "virtio-rng-pci,rng=guixsd-vm-rng"
|
"-device" "virtio-rng-pci,rng=guixsd-vm-rng"
|
||||||
|
@ -159,8 +156,7 @@ the #:references-graphs parameter of 'derivation'."
|
||||||
",format=" disk-image-format
|
",format=" disk-image-format
|
||||||
",id=myhd"))
|
",id=myhd"))
|
||||||
'())
|
'())
|
||||||
arch-specific-flags)))
|
arch-specific-flags))
|
||||||
(error "qemu failed" qemu))
|
|
||||||
|
|
||||||
;; When MAKE-DISK-IMAGE? is true, the image is in OUTPUT already.
|
;; When MAKE-DISK-IMAGE? is true, the image is in OUTPUT already.
|
||||||
(unless make-disk-image?
|
(unless make-disk-image?
|
||||||
|
@ -240,10 +236,9 @@ actual /dev name based on DEVICE."
|
||||||
partition-size)
|
partition-size)
|
||||||
partitions)
|
partitions)
|
||||||
", "))
|
", "))
|
||||||
(unless (zero? (apply system* "parted" "--script"
|
(apply invoke "parted" "--script"
|
||||||
device "mklabel" label-type
|
device "mklabel" label-type
|
||||||
(options partitions offset)))
|
(options partitions offset))
|
||||||
(error "failed to create partition table"))
|
|
||||||
|
|
||||||
;; Set the 'device' field of each partition.
|
;; Set the 'device' field of each partition.
|
||||||
(reverse
|
(reverse
|
||||||
|
@ -265,7 +260,7 @@ actual /dev name based on DEVICE."
|
||||||
"Create an ext-family file system of TYPE on PARTITION. If LABEL is true,
|
"Create an ext-family file system of TYPE on PARTITION. If LABEL is true,
|
||||||
use that as the volume name. If UUID is true, use it as the partition UUID."
|
use that as the volume name. If UUID is true, use it as the partition UUID."
|
||||||
(format #t "creating ~a partition...\n" type)
|
(format #t "creating ~a partition...\n" type)
|
||||||
(unless (zero? (apply system* (string-append "mkfs." type)
|
(apply invoke (string-append "mkfs." type)
|
||||||
"-F" partition
|
"-F" partition
|
||||||
`(,@(if label
|
`(,@(if label
|
||||||
`("-L" ,label)
|
`("-L" ,label)
|
||||||
|
@ -273,7 +268,6 @@ use that as the volume name. If UUID is true, use it as the partition UUID."
|
||||||
,@(if uuid
|
,@(if uuid
|
||||||
`("-U" ,(uuid->string uuid))
|
`("-U" ,(uuid->string uuid))
|
||||||
'()))))
|
'()))))
|
||||||
(error "failed to create partition")))
|
|
||||||
|
|
||||||
(define* (create-fat-file-system partition
|
(define* (create-fat-file-system partition
|
||||||
#:key label uuid)
|
#:key label uuid)
|
||||||
|
@ -282,11 +276,8 @@ will be determined based on file system size. If LABEL is true, use that as the
|
||||||
volume name."
|
volume name."
|
||||||
;; FIXME: UUID is ignored!
|
;; FIXME: UUID is ignored!
|
||||||
(format #t "creating FAT partition...\n")
|
(format #t "creating FAT partition...\n")
|
||||||
(unless (zero? (apply system* "mkfs.fat" partition
|
(apply invoke "mkfs.fat" partition
|
||||||
(if label
|
(if label `("-n" ,label) '())))
|
||||||
`("-n" ,label)
|
|
||||||
'())))
|
|
||||||
(error "failed to create FAT partition")))
|
|
||||||
|
|
||||||
(define* (format-partition partition type
|
(define* (format-partition partition type
|
||||||
#:key label uuid)
|
#:key label uuid)
|
||||||
|
@ -388,12 +379,11 @@ SYSTEM-DIRECTORY is the name of the directory of the 'system' derivation."
|
||||||
(setenv "TMPDIR" esp)
|
(setenv "TMPDIR" esp)
|
||||||
|
|
||||||
(mkdir-p efi-directory)
|
(mkdir-p efi-directory)
|
||||||
(unless (zero? (system* grub-mkstandalone "-O" (car efi-targets)
|
(invoke grub-mkstandalone "-O" (car efi-targets)
|
||||||
"-o" (string-append efi-directory "/"
|
"-o" (string-append efi-directory "/"
|
||||||
(cdr efi-targets))
|
(cdr efi-targets))
|
||||||
;; Graft the configuration file onto the image.
|
;; Graft the configuration file onto the image.
|
||||||
(string-append "boot/grub/grub.cfg=" config-file)))
|
(string-append "boot/grub/grub.cfg=" config-file))))
|
||||||
(error "failed to create GRUB EFI image"))))
|
|
||||||
|
|
||||||
(define* (make-iso9660-image grub config-file os-drv target
|
(define* (make-iso9660-image grub config-file os-drv target
|
||||||
#:key (volume-id "GuixSD_image") (volume-uuid #f)
|
#:key (volume-id "GuixSD_image") (volume-uuid #f)
|
||||||
|
@ -416,7 +406,7 @@ GRUB configuration and OS-DRV as the stuff in it."
|
||||||
#:deduplicate? #f))
|
#:deduplicate? #f))
|
||||||
closures))
|
closures))
|
||||||
|
|
||||||
(unless (zero? (apply system*
|
(apply invoke
|
||||||
`(,grub-mkrescue "-o" ,target
|
`(,grub-mkrescue "-o" ,target
|
||||||
,(string-append "boot/grub/grub.cfg=" config-file)
|
,(string-append "boot/grub/grub.cfg=" config-file)
|
||||||
,(string-append "gnu/store=" os-drv "/..")
|
,(string-append "gnu/store=" os-drv "/..")
|
||||||
|
@ -435,8 +425,7 @@ GRUB configuration and OS-DRV as the stuff in it."
|
||||||
(not (char=? #\- value)))
|
(not (char=? #\- value)))
|
||||||
(iso9660-uuid->string
|
(iso9660-uuid->string
|
||||||
volume-uuid)))
|
volume-uuid)))
|
||||||
`()))))
|
`())))))
|
||||||
(error "failed to create ISO9660 image"))))
|
|
||||||
|
|
||||||
(define* (initialize-hard-disk device
|
(define* (initialize-hard-disk device
|
||||||
#:key
|
#:key
|
||||||
|
|
Loading…
Reference in New Issue