image: Make 'find-image' non-monadic.

* gnu/system/image.scm (find-image): Make non-monadic.  Add 'target'
parameter.
* gnu/tests/install.scm (run-install): Update caller,
passing (%current-target-system).
* guix/scripts/system.scm (perform-action): Likewise.
This commit is contained in:
Jan (janneke) Nieuwenhuizen 2020-06-11 22:52:12 +02:00 committed by Jan Nieuwenhuizen
parent 3857aba7ab
commit 7ca533c723
No known key found for this signature in database
GPG key ID: F3C1A0D9C1D65273
3 changed files with 22 additions and 19 deletions

View file

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -556,20 +557,17 @@ (define substitutable? (image-substitutable? image))
#:grub-mkrescue-environment
'(("MKRESCUE_SED_MODE" . "mbr_only")))))))
(define (find-image file-system-type)
"Find and return an image that could match the given FILE-SYSTEM-TYPE. This
is useful to adapt to interfaces written before the addition of the <image>
record."
(mlet %store-monad ((target (current-target-system)))
(mbegin %store-monad
(return
(match file-system-type
("iso9660" iso9660-image)
(_ (cond
((and target
(hurd-triplet? target))
hurd-disk-image)
(else
efi-disk-image))))))))
(define (find-image file-system-type target)
"Find and return an image built that could match the given FILE-SYSTEM-TYPE,
built for TARGET. This is useful to adapt to interfaces written before the
addition of the <image> record."
(match file-system-type
("iso9660" iso9660-image)
(_ (cond
((and target
(hurd-triplet? target))
hurd-disk-image)
(else
efi-disk-image)))))
;;; image.scm ends here

View file

@ -3,6 +3,7 @@
;;; Copyright © 2017, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2020 Danny Milosavljevic <dannym@scratchpost.org>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -227,15 +228,17 @@ (define* (run-install target-os target-os-source
(mlet* %store-monad ((_ (set-grafting #f))
(system (current-system))
(target (operating-system-derivation target-os))
(base-image (find-image
installation-disk-image-file-system-type))
(target (current-target-system))
(base-image -> (find-image
installation-disk-image-file-system-type
target))
;; Since the installation system has no network access,
;; we cheat a little bit by adding TARGET to its GC
;; roots. This way, we know 'guix system init' will
;; succeed. Also add guile-final, which is pulled in
;; through provenance.drv and may not always be present.
(target (operating-system-derivation target-os))
(image ->
(system-image
(image

View file

@ -5,6 +5,7 @@
;;; Copyright © 2017, 2019 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2019 Christopher Baines <mail@cbaines.net>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -801,7 +802,8 @@ (define bootcfg
(check-initrd-modules os)))
(mlet* %store-monad
((image (find-image file-system-type))
((target (current-target-system))
(image -> (find-image file-system-type target))
(sys (system-derivation-for-action os image action
#:file-system-type file-system-type
#:image-size image-size