aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2025-04-04 16:07:15 +0200
committerLudovic Courtès <ludo@gnu.org>2025-05-05 14:33:59 +0200
commitd4c3b31b86dcdc29dee5ae9f7e3399b388cded7e (patch)
tree03c3a825bc6b9b1a61c5ea69371973c1c1c5e9af
parente9cd72875e9bd07656c7926865310e6562f0b466 (diff)
downloadguix-d4c3b31b86dcdc29dee5ae9f7e3399b388cded7e.tar.gz
guix-d4c3b31b86dcdc29dee5ae9f7e3399b388cded7e.zip
linux-container: Add #:mounts to ‘eval/container’.
* gnu/system/linux-container.scm (eval/container): Add #:mounts parameter and honor it. Change-Id: I1d5970f53a3d67db93e937e392f9bf36e75d1573
-rw-r--r--gnu/system/linux-container.scm26
1 files changed, 14 insertions, 12 deletions
diff --git a/gnu/system/linux-container.scm b/gnu/system/linux-container.scm
index c1705f491c..3622328500 100644
--- a/gnu/system/linux-container.scm
+++ b/gnu/system/linux-container.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 David Thompson <davet@gnu.org>
-;;; Copyright © 2016-2017, 2019-2023 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016-2017, 2019-2023, 2025 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2019 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2020 Google LLC
@@ -319,13 +319,14 @@ Run the container with the given options."))
(define* (eval/container exp
#:key
(mappings '())
+ (mounts '())
(namespaces %namespaces)
(guest-uid 0) (guest-gid 0))
"Evaluate EXP, a gexp, in a new process executing in separate namespaces as
-listed in NAMESPACES. Add MAPPINGS, a list of <file-system-mapping>, to the
-set of directories visible in the process's mount namespace. Inside the
-namespaces, run code as GUEST-UID and GUEST-GID. Return the process' exit
-status as a monadic value.
+listed in NAMESPACES. Add MOUNTS, a list of <file-system>, and MAPPINGS, a
+list of <file-system-mapping>, to the set of directories visible in the
+process's mount namespace. Inside the namespaces, run code as GUEST-UID and
+GUEST-GID. Return the process' exit status as a monadic value.
This is useful to implement processes that, unlike derivations, are not
entirely pure and need to access the outside world or to perform side
@@ -342,13 +343,14 @@ effects."
(mbegin %store-monad
(built-derivations inputs)
(mlet %store-monad ((closure ((store-lift requisites) items)))
- (return (call-with-container (map file-system-mapping->bind-mount
- (append (map (lambda (item)
- (file-system-mapping
- (source item)
- (target source)))
- closure)
- mappings))
+ (return (call-with-container (append mounts
+ (map file-system-mapping->bind-mount
+ (append (map (lambda (item)
+ (file-system-mapping
+ (source item)
+ (target source)))
+ closure)
+ mappings)))
(lambda ()
(apply execl
(string-append (derivation-input-output-path