diff options
author | Ludovic Courtès <ludo@gnu.org> | 2019-06-23 19:43:39 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2019-06-23 19:53:03 +0200 |
commit | 40c369b23442ace588d8c85f62f1741c17ed65c0 (patch) | |
tree | 69b15677a23e5a62a6460babcc9e765d61ac4b43 /gnu/build | |
parent | 92359aed40fe76dcfb13ddf521fa8ac4c2735611 (diff) | |
download | guix-40c369b23442ace588d8c85f62f1741c17ed65c0.tar guix-40c369b23442ace588d8c85f62f1741c17ed65c0.tar.gz |
linux-container: Remove dependency on (guix utils).
Fixes a bug whereby derivations importing (gnu build linux-container),
such as the 'bitlbee' and 'tor' services, would depend on the
user's (guix config) file, which was pulled as a dependency of (guix
utils). As a result, those derivations would vary from user to user.
* gnu/build/linux-container.scm (call-with-temporary-directory): New
procedure.
Diffstat (limited to 'gnu/build')
-rw-r--r-- | gnu/build/linux-container.scm | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/gnu/build/linux-container.scm b/gnu/build/linux-container.scm index 3d7b52f098..e86ac606c0 100644 --- a/gnu/build/linux-container.scm +++ b/gnu/build/linux-container.scm @@ -22,7 +22,6 @@ #:use-module (ice-9 match) #:use-module (ice-9 rdelim) #:use-module (srfi srfi-98) - #:use-module (guix utils) #:use-module (guix build utils) #:use-module (guix build syscalls) #:use-module (gnu system file-systems) ;<file-system> @@ -279,6 +278,21 @@ that host UIDs (respectively GIDs) map to in the namespace." (_ ;unexpected termination #f))))))))) +;; FIXME: This is copied from (guix utils), which we cannot use because it +;; would pull (guix config) and all. +(define (call-with-temporary-directory proc) + "Call PROC with a name of a temporary directory; close the directory and +delete it when leaving the dynamic extent of this call." + (let* ((directory (or (getenv "TMPDIR") "/tmp")) + (template (string-append directory "/guix-directory.XXXXXX")) + (tmp-dir (mkdtemp! template))) + (dynamic-wind + (const #t) + (lambda () + (proc tmp-dir)) + (lambda () + (false-if-exception (delete-file-recursively tmp-dir)))))) + (define* (call-with-container mounts thunk #:key (namespaces %namespaces) (host-uids 1) (guest-uid 0) (guest-gid 0)) "Run THUNK in a new container process and return its exit status. |