From 7ca533c7237622d70b423033c4506217d9ce4014 Mon Sep 17 00:00:00 2001 From: "Jan (janneke) Nieuwenhuizen" Date: Thu, 11 Jun 2020 22:52:12 +0200 Subject: [PATCH] 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. --- gnu/system/image.scm | 28 +++++++++++++--------------- gnu/tests/install.scm | 9 ++++++--- guix/scripts/system.scm | 4 +++- 3 files changed, 22 insertions(+), 19 deletions(-) diff --git a/gnu/system/image.scm b/gnu/system/image.scm index 6c4573509d..be8b6e67f7 100644 --- a/gnu/system/image.scm +++ b/gnu/system/image.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2020 Mathieu Othacehe +;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen ;;; ;;; 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 -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 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 diff --git a/gnu/tests/install.scm b/gnu/tests/install.scm index 6bd8c7d3d2..db355b85ca 100644 --- a/gnu/tests/install.scm +++ b/gnu/tests/install.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2017, 2019 Tobias Geerinckx-Rice ;;; Copyright © 2020 Mathieu Othacehe ;;; Copyright © 2020 Danny Milosavljevic +;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen ;;; ;;; 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 diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm index 3d7aa77cb7..6769a602b1 100644 --- a/guix/scripts/system.scm +++ b/guix/scripts/system.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2017, 2019 Mathieu Othacehe ;;; Copyright © 2018 Ricardo Wurmus ;;; Copyright © 2019 Christopher Baines +;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen ;;; ;;; 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