summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2020-09-19 14:11:47 +0200
committerLudovic Courtès <ludo@gnu.org>2020-09-19 17:28:47 +0200
commitd845e3af7c410d70d240590d80ed31b8f169c266 (patch)
tree0222aae5386f553f237fd06d1d01ae246c42cee5
parenta08cb3ca951cf9ebdea5258e6c34e2664877c363 (diff)
downloadguix-d845e3af7c410d70d240590d80ed31b8f169c266.tar.gz
utils: Add 'call-with-temporary-output-file'.
* guix/utils.scm: Re-export 'call-with-temporary-output-file'.
(call-with-temporary-output-file): Move to...
* guix/build/utils.scm (call-with-temporary-output-file): ... here.
-rw-r--r--guix/build/utils.scm17
-rw-r--r--guix/utils.scm25
2 files changed, 23 insertions, 19 deletions
diff --git a/guix/build/utils.scm b/guix/build/utils.scm
index e872cfffd3..afcb71fae3 100644
--- a/guix/build/utils.scm
+++ b/guix/build/utils.scm
@@ -53,6 +53,7 @@
             directory-exists?
             executable-file?
             symbolic-link?
+            call-with-temporary-output-file
             call-with-ascii-input-file
             elf-file?
             ar-file?
@@ -198,6 +199,22 @@ introduce the version part."
   "Return #t if FILE is a symbolic link (aka. \"symlink\".)"
   (eq? (stat:type (lstat file)) 'symlink))
 
+(define (call-with-temporary-output-file proc)
+  "Call PROC with a name of a temporary file and open output port to that
+file; close the file and delete it when leaving the dynamic extent of this
+call."
+  (let* ((directory (or (getenv "TMPDIR") "/tmp"))
+         (template  (string-append directory "/guix-file.XXXXXX"))
+         (out       (mkstemp! template)))
+    (dynamic-wind
+      (lambda ()
+        #t)
+      (lambda ()
+        (proc template out))
+      (lambda ()
+        (false-if-exception (close out))
+        (false-if-exception (delete-file template))))))
+
 (define (call-with-ascii-input-file file proc)
   "Open FILE as an ASCII or binary file, and pass the resulting port to
 PROC.  FILE is closed when PROC's dynamic extent is left.  Return the
diff --git a/guix/utils.scm b/guix/utils.scm
index b816c355dc..7cc321205e 100644
--- a/guix/utils.scm
+++ b/guix/utils.scm
@@ -35,7 +35,9 @@
   #:use-module (rnrs io ports)                    ;need 'port-position' etc.
   #:use-module ((rnrs bytevectors) #:select (bytevector-u8-set!))
   #:use-module (guix memoization)
-  #:use-module ((guix build utils) #:select (dump-port mkdir-p delete-file-recursively))
+  #:use-module ((guix build utils)
+                #:select (dump-port mkdir-p delete-file-recursively
+                          call-with-temporary-output-file))
   #:use-module ((guix build syscalls) #:select (mkdtemp! fdatasync))
   #:use-module (guix diagnostics)           ;<location>, &error-location, etc.
   #:use-module (ice-9 format)
@@ -59,7 +61,9 @@
 
                &fix-hint
                fix-hint?
-               condition-fix-hint)
+               condition-fix-hint
+
+               call-with-temporary-output-file)
   #:export (strip-keyword-arguments
             default-keyword-arguments
             substitute-keyword-arguments
@@ -94,7 +98,6 @@
             tarball-sans-extension
             compressed-file?
             switch-symlinks
-            call-with-temporary-output-file
             call-with-temporary-directory
             with-atomic-file-output
 
@@ -677,22 +680,6 @@ REPLACEMENT."
                        (substring str start index)
                        pieces))))))))
 
-(define (call-with-temporary-output-file proc)
-  "Call PROC with a name of a temporary file and open output port to that
-file; close the file and delete it when leaving the dynamic extent of this
-call."
-  (let* ((directory (or (getenv "TMPDIR") "/tmp"))
-         (template  (string-append directory "/guix-file.XXXXXX"))
-         (out       (mkstemp! template)))
-    (dynamic-wind
-      (lambda ()
-        #t)
-      (lambda ()
-        (proc template out))
-      (lambda ()
-        (false-if-exception (close out))
-        (false-if-exception (delete-file template))))))
-
 (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."