[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
03/07: utils: Support zstd compression via Guile-zstd.
From: |
guix-commits |
Subject: |
03/07: utils: Support zstd compression via Guile-zstd. |
Date: |
Wed, 13 Jan 2021 17:06:00 -0500 (EST) |
civodul pushed a commit to branch master
in repository guix.
commit db0cecdf6b2f2b8f9c5a3cebe8fc60e79a692be0
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Sat Dec 26 23:01:05 2020 +0100
utils: Support zstd compression via Guile-zstd.
* guix/utils.scm (lzip-port): Return a single value.
(zstd-port): New procedure.
(decompressed-port, compressed-output-port): Add 'zstd' case.
* tests/utils.scm (test-compression/decompression): Test 'zstd' when
the (zstd) module is available.
---
guix/utils.scm | 12 +++++++++++-
tests/utils.scm | 6 ++++--
2 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/guix/utils.scm b/guix/utils.scm
index c321ad9..f8b05e7 100644
--- a/guix/utils.scm
+++ b/guix/utils.scm
@@ -210,7 +210,13 @@ buffered data is lost."
"Return the lzip port produced by calling PROC (a symbol) on PORT and ARGS.
Raise an error if lzlib support is missing."
(let ((make-port (module-ref (resolve-interface '(lzlib)) proc)))
- (values (make-port port) '())))
+ (make-port port)))
+
+(define (zstd-port proc port . args)
+ "Return the zstd port produced by calling PROC (a symbol) on PORT and ARGS.
+Raise an error if zstd support is missing."
+ (let ((make-port (module-ref (resolve-interface '(zstd)) proc)))
+ (make-port port)))
(define (decompressed-port compression input)
"Return an input port where INPUT is decompressed according to COMPRESSION,
@@ -222,6 +228,8 @@ a symbol such as 'xz."
('gzip (filtered-port `(,%gzip "-dc") input))
('lzip (values (lzip-port 'make-lzip-input-port input)
'()))
+ ('zstd (values (zstd-port 'make-zstd-input-port input)
+ '()))
(_ (error "unsupported compression scheme" compression))))
(define (call-with-decompressed-port compression port proc)
@@ -281,6 +289,8 @@ program--e.g., '(\"--fast\")."
('gzip (filtered-output-port `(,%gzip "-c" ,@options) output))
('lzip (values (lzip-port 'make-lzip-output-port output)
'()))
+ ('zstd (values (zstd-port 'make-zstd-output-port output)
+ '()))
(_ (error "unsupported compression scheme" compression))))
(define* (call-with-compressed-output-port compression port proc
diff --git a/tests/utils.scm b/tests/utils.scm
index c278b2a..9bce446 100644
--- a/tests/utils.scm
+++ b/tests/utils.scm
@@ -228,8 +228,10 @@ skip these tests."
get-bytevector-all)))))
(for-each test-compression/decompression
- '(gzip xz lzip)
- (list (const #t) (const #t) (const #t)))
+ `(gzip xz lzip zstd)
+ (list (const #t) (const #t) (const #t)
+ (lambda ()
+ (resolve-module '(zstd) #t #f #:ensure #f))))
;; This is actually in (guix store).
(test-equal "store-path-package-name"
- branch master updated (e9f3a80 -> 2386201), guix-commits, 2021/01/13
- 01/07: services: shepherd: 'shepherd-service-type' requires documentation., guix-commits, 2021/01/13
- 02/07: utils: Remove 'compressed-output-port'., guix-commits, 2021/01/13
- 03/07: utils: Support zstd compression via Guile-zstd.,
guix-commits <=
- 05/07: substitute: Add zstd support., guix-commits, 2021/01/13
- 06/07: doc: Mention optional dependency on Guile-zstd., guix-commits, 2021/01/13
- 04/07: publish: Add support for zstd compression., guix-commits, 2021/01/13
- 07/07: tests: Fix JSON syntax error in 'crate.scm'., guix-commits, 2021/01/13