From e34ae75dc14acb97f661a2787a3c626d7ce65b24 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 15 Nov 2018 18:39:18 +0100 Subject: linux-initrd: Return file-like objects instead of monadic values. This is an incompatible change visible to users via the 'initrd' field of 'operating-system'. However, assuming the user's 'initrd' value tail-calls to 'raw-initrd' or 'base-initrd', the switch to non-monadic style is invisible. * gnu/system/linux-initrd.scm (expression->initrd): Use 'computed-file' instead of 'gexp->derivation'. (raw-initrd, base-initrd): Adjust docstring to mention non-monadic return. * gnu/system/vm.scm (expression->derivation-in-linux-vm): Adjust accordingly. * gnu/system.scm (operating-system-directory-base-entries) (operating-system-initrd-file) (operating-system-boot-parameters): Adjust accordingly. * doc/guix.texi (operating-system Reference) (Initial RAM Disk): Update. --- gnu/system/linux-initrd.scm | 13 ++++++------- gnu/system/vm.scm | 14 ++++++-------- 2 files changed, 12 insertions(+), 15 deletions(-) (limited to 'gnu/system') diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm index a5a111908f..a53d3cb106 100644 --- a/gnu/system/linux-initrd.scm +++ b/gnu/system/linux-initrd.scm @@ -20,8 +20,6 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu system linux-initrd) - #:use-module (guix monads) - #:use-module (guix store) #:use-module (guix gexp) #:use-module (guix utils) #:use-module ((guix store) @@ -63,7 +61,7 @@ (define* (expression->initrd exp (gzip gzip) (name "guile-initrd") (system (%current-system))) - "Return a derivation that builds a Linux initrd (a gzipped cpio archive) + "Return as a file-like object a Linux initrd (a gzipped cpio archive) containing GUILE and that evaluates EXP, a G-expression, upon booting. All the derivations referenced by EXP are automatically copied to the initrd." @@ -100,8 +98,9 @@ (define builder #:references-graphs '("closure") #:gzip (string-append #$gzip "/bin/gzip"))))) - (gexp->derivation name builder - #:references-graphs `(("closure" ,init)))) + (computed-file name builder + #:options + `(#:references-graphs (("closure" ,init))))) (define (flat-linux-module-directory linux modules) "Return a flat directory containing the Linux kernel modules listed in @@ -143,7 +142,7 @@ (define* (raw-initrd file-systems qemu-networking? volatile-root? (on-error 'debug)) - "Return a monadic derivation that builds a raw initrd, with kernel + "Return as a file-like object a raw initrd, with kernel modules taken from LINUX. FILE-SYSTEMS is a list of file-systems to be mounted by the initrd, possibly in addition to the root file system specified on the kernel command line via '--root'. LINUX-MODULES is a list of kernel @@ -294,7 +293,7 @@ (define* (base-initrd file-systems volatile-root? (extra-modules '()) ;deprecated (on-error 'debug)) - "Return a monadic derivation that builds a generic initrd, with kernel + "Return as a file-like object a generic initrd, with kernel modules taken from LINUX. FILE-SYSTEMS is a list of file-systems to be mounted by the initrd, possibly in addition to the root file system specified on the kernel command line via '--root'. MAPPED-DEVICES is a list of device diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm index d43b71cbaf..6064e0f899 100644 --- a/gnu/system/vm.scm +++ b/gnu/system/vm.scm @@ -189,14 +189,12 @@ (define loader #~(when (zero? (system* #$user-builder)) (reboot)))) - (mlet* %store-monad - ((initrd (if initrd ; use the default initrd? - (return initrd) - (base-initrd file-systems - #:on-error 'backtrace - #:linux linux - #:linux-modules %base-initrd-modules - #:qemu-networking? #t)))) + (let ((initrd (or initrd + (base-initrd file-systems + #:on-error 'backtrace + #:linux linux + #:linux-modules %base-initrd-modules + #:qemu-networking? #t)))) (define builder ;; Code that launches the VM that evaluates EXP. -- cgit v1.2.3