guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

02/03: publish: Factorize 'compress-nar'.


From: guix-commits
Subject: 02/03: publish: Factorize 'compress-nar'.
Date: Wed, 29 May 2019 17:17:10 -0400 (EDT)

civodul pushed a commit to branch master
in repository guix.

commit 73bddab54504c6380a896b7263ab6c3dd8558ef7
Author: Ludovic Courtès <address@hidden>
Date:   Wed May 29 11:38:17 2019 +0200

    publish: Factorize 'compress-nar'.
    
    * guix/scripts/publish.scm (compress-nar): New procedure.
    (bake-narinfo+nar): Use it.
---
 guix/scripts/publish.scm | 54 +++++++++++++++++++++++++++---------------------
 1 file changed, 30 insertions(+), 24 deletions(-)

diff --git a/guix/scripts/publish.scm b/guix/scripts/publish.scm
index 2875904..c55873d 100644
--- a/guix/scripts/publish.scm
+++ b/guix/scripts/publish.scm
@@ -505,6 +505,35 @@ requested using POOL."
           (else
            (not-found request #:phrase "")))))
 
+(define (compress-nar cache item compression)
+  "Save in directory CACHE the nar for ITEM compressed with COMPRESSION."
+  (define nar
+    (nar-cache-file cache item #:compression compression))
+
+  (mkdir-p (dirname nar))
+  (match (compression-type compression)
+    ('gzip
+     ;; Note: the file port gets closed along with the gzip port.
+     (call-with-gzip-output-port (open-output-file (string-append nar ".tmp"))
+       (lambda (port)
+         (write-file item port))
+       #:level (compression-level compression)
+       #:buffer-size (* 128 1024))
+     (rename-file (string-append nar ".tmp") nar))
+    ('lzip
+     ;; Note: the file port gets closed along with the lzip port.
+     (call-with-lzip-output-port (open-output-file (string-append nar ".tmp"))
+       (lambda (port)
+         (write-file item port))
+       #:level (compression-level compression))
+     (rename-file (string-append nar ".tmp") nar))
+    ('none
+     ;; Cache nars even when compression is disabled so that we can
+     ;; guarantee the TTL (see <https://bugs.gnu.org/28664>.)
+     (with-atomic-file-output nar
+       (lambda (port)
+         (write-file item port))))))
+
 (define* (bake-narinfo+nar cache item
                            #:key ttl (compression %no-compression)
                            (nar-path "/nar"))
@@ -514,30 +543,7 @@ requested using POOL."
                                       #:compression compression))
          (narinfo     (narinfo-cache-file cache item
                                           #:compression compression)))
-
-    (mkdir-p (dirname nar))
-    (match (compression-type compression)
-      ('gzip
-       ;; Note: the file port gets closed along with the gzip port.
-       (call-with-gzip-output-port (open-output-file (string-append nar 
".tmp"))
-         (lambda (port)
-           (write-file item port))
-         #:level (compression-level compression)
-         #:buffer-size (* 128 1024))
-       (rename-file (string-append nar ".tmp") nar))
-      ('lzip
-       ;; Note: the file port gets closed along with the lzip port.
-       (call-with-lzip-output-port (open-output-file (string-append nar 
".tmp"))
-         (lambda (port)
-           (write-file item port))
-         #:level (compression-level compression))
-       (rename-file (string-append nar ".tmp") nar))
-      ('none
-       ;; Cache nars even when compression is disabled so that we can
-       ;; guarantee the TTL (see <https://bugs.gnu.org/28664>.)
-       (with-atomic-file-output nar
-         (lambda (port)
-           (write-file item port)))))
+    (compress-nar cache item compression)
 
     (mkdir-p (dirname narinfo))
     (with-atomic-file-output narinfo



reply via email to

[Prev in Thread] Current Thread [Next in Thread]