build: Allow specifying volume-uuid with make-iso9660-image.

* gnu/build/file-systems.scm (iso9660-uuid->string): Export.
* gnu/build/vm.scm (make-iso9660-image): Add volume-uuid.
master
Danny Milosavljevic 2017-07-03 13:10:43 +02:00
parent 1ec0c1f30e
commit 1feb3076cb
No known key found for this signature in database
GPG Key ID: E71A35542C30BAA5
2 changed files with 15 additions and 5 deletions

View File

@ -48,6 +48,7 @@
string->ext3-uuid
string->ext4-uuid
string->btrfs-uuid
iso9660-uuid->string
bind-mount

View File

@ -353,18 +353,27 @@ SYSTEM-DIRECTORY is the name of the directory of the 'system' derivation."
(error "failed to create GRUB EFI image"))))
(define* (make-iso9660-image grub config-file os-drv target
#:key (volume-id "GuixSD"))
#:key (volume-id "GuixSD") (volume-uuid #f))
"Given a GRUB package, creates an iso image as TARGET, using CONFIG-FILE as
Grub configuration and OS-DRV as the stuff in it."
(let ((grub-mkrescue (string-append grub "/bin/grub-mkrescue")))
(mkdir-p "/tmp/root/var/run")
(mkdir-p "/tmp/root/run")
(unless (zero? (system* grub-mkrescue "-o" target
(string-append "boot/grub/grub.cfg=" config-file)
(string-append "gnu/store=" os-drv "/..")
(unless (zero? (apply system*
`(,grub-mkrescue "-o" ,target
,(string-append "boot/grub/grub.cfg=" config-file)
,(string-append "gnu/store=" os-drv "/..")
"var=/tmp/root/var"
"run=/tmp/root/run"
"--" "-volid" (string-upcase volume-id)))
"--"
"-volid" ,(string-upcase volume-id)
,@(if volume-uuid
`("-volume_date" "uuid"
,(string-filter (lambda (value)
(not (char=? #\- value)))
(iso9660-uuid->string
volume-uuid)))
`()))))
(error "failed to create ISO image"))))
(define* (initialize-hard-disk device