~ruther/guix-local

1feb3076cb30e0c1ce1cf435b859e515b0e1c574 — Danny Milosavljevic 8 years ago 1ec0c1f
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.
2 files changed, 15 insertions(+), 5 deletions(-)

M gnu/build/file-systems.scm
M gnu/build/vm.scm
M gnu/build/file-systems.scm => gnu/build/file-systems.scm +1 -0
@@ 48,6 48,7 @@
            string->ext3-uuid
            string->ext4-uuid
            string->btrfs-uuid
            iso9660-uuid->string

            bind-mount


M gnu/build/vm.scm => gnu/build/vm.scm +14 -5
@@ 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