aboutsummaryrefslogtreecommitdiff
path: root/gnu/compression.scm
blob: 6e48de5979f9fd9680fc83a7c5277ec1afc4db1d (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2022 Mathieu Othacehe <othacehe@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (gnu compression)
  #:use-module (guix gexp)
  #:use-module (guix ui)
  #:use-module ((gnu packages compression) #:hide (zip))
  #:use-module (srfi srfi-1)
  #:use-module (srfi srfi-9)
  #:use-module (ice-9 match)
  #:export (compressor
            compressor?
            compressor-name
            compressor-extension
            compressor-command
            %compressors
            lookup-compressor))

;; Type of a compression tool.
(define-record-type <compressor>
  (compressor name extension command)
  compressor?
  (name       compressor-name)      ;string (e.g., "gzip")
  (extension  compressor-extension) ;string (e.g., ".lz")
  (command    compressor-command))  ;gexp (e.g., #~(list "/gnu/store/…/gzip"
                                    ;                    "-9n" ))

(define %compressors
  ;; Available compression tools.
  (list (compressor "gzip"  ".gz"
                    #~(list #+(file-append gzip "/bin/gzip") "-9n"))
        (compressor "lzip"  ".lz"
                    #~(list #+(file-append lzip "/bin/lzip") "-9"))
        (compressor "xz"    ".xz"
                    #~(append (list #+(file-append xz "/bin/xz")
                                    "-e")
                              (%xz-parallel-args)))
        (compressor "bzip2" ".bz2"
                    #~(list #+(file-append bzip2 "/bin/bzip2") "-9"))
        (compressor "zstd" ".zst"
                    ;; The default level 3 compresses better than gzip in a
                    ;; fraction of the time, while the highest level 19
                    ;; (de)compresses more slowly and worse than xz.
                    #~(list #+(file-append zstd "/bin/zstd") "-3"
                            (format #f "--threads=~a" (parallel-job-count))))
        (compressor "none" "" #f)))

(define (lookup-compressor name)
  "Return the compressor object called NAME.  Error out if it could not be
found."
  (or (find (match-lambda
              (($ <compressor> name*)
               (string=? name* name)))
            %compressors)
      (leave (G_ "~a: compressor not found~%") name)))
r> 2019-01-16gnu: php: Update to 7.3.1....* gnu/packages/php.scm (php): Update to 7.3.1. Julien Lepiller 2019-01-16gnu: Move dbm databases to new module....* gnu/packages/databases.scm (gdbm, bdb, bdb-5.3): Move from here... * gnu/packages/dbm.scm: ...to this new module. * gnu/local.mk (GNU_SYSTEM_MODULES): Add it. * gnu/packages/audio.scm, gnu/packages/avahi.scm, gnu/packages/backup.scm, gnu/packages/cobol.scm, gnu/packages/cyrus-sasl.scm, gnu/packages/databases.scm, gnu/packages/finance.scm, gnu/packages/game-development.scm, gnu/packages/gnome.scm, gnu/packages/guile.scm, gnu/packages/ibus.scm, gnu/packages/kerberos.scm, gnu/packages/linux.scm, gnu/packages/mail.scm, gnu/packages/man.scm, gnu/packages/nvi.scm, gnu/packages/openldap.scm, gnu/packages/package-management.scm, gnu/packages/php.scm, gnu/packages/pulseaudio.scm, gnu/packages/python.scm, gnu/packages/rdf.scm, gnu/packages/ruby.scm, gnu/packages/sawfish.scm: Update module references. Ricardo Wurmus 2019-01-16gnu: Move sqlite to separate module....* gnu/packages/databases.scm (sqlite, sqlite-3.26.0, sqlite-with-fts5, sqlite-with-column-metadata): Move variables from here... * gnu/packages/sqlite.scm: ...to this new module. * gnu/local.mk (GNU_SYSTEM_MODULES): Add it. * gnu/packages/apl.scm, gnu/packages/bittorrent.scm, gnu/packages/calendar.scm, gnu/packages/code.scm, gnu/packages/crypto.scm, gnu/packages/databases.scm, gnu/packages/dc.scm, gnu/packages/disk.scm, gnu/packages/ebook.scm, gnu/packages/education.scm, gnu/packages/emacs.scm, gnu/packages/emulators.scm, gnu/packages/file-systems.scm, gnu/packages/freedesktop.scm, gnu/packages/ftp.scm, gnu/packages/games.scm, gnu/packages/geo.scm, gnu/packages/gnome.scm, gnu/packages/gnunet.scm, gnu/packages/gnupg.scm, gnu/packages/gnuzilla.scm, gnu/packages/gps.scm, gnu/packages/guile.scm, gnu/packages/ibus.scm, gnu/packages/kerberos.scm, gnu/packages/kodi.scm, gnu/packages/lisp.scm, gnu/packages/mail.scm, gnu/packages/messaging.scm, gnu/packages/mpd.scm, gnu/packages/music.scm, gnu/packages/networking.scm, gnu/packages/nfs.scm, gnu/packages/ocaml.scm, gnu/packages/package-management.scm, gnu/packages/pdf.scm, gnu/packages/photo.scm, gnu/packages/php.scm, gnu/packages/python.scm, gnu/packages/qt.scm, gnu/packages/ruby.scm, gnu/packages/scheme.scm, gnu/packages/sync.scm, gnu/packages/syndication.scm, gnu/packages/version-control.scm, gnu/packages/video.scm, gnu/packages/web-browsers.scm, gnu/packages/webkit.scm: Adjust module references. Ricardo Wurmus 2019-01-01gnu: php-with-bcmath: Deprecate in favour of 'php'....This is a follow-up to 4629d26755aa06344fb8f515fb0202776e70c429. * gnu/packages/php.scm (php-with-bcmath): Deprecate in favour of 'php'. * gnu/tests/monitoring.scm (%zabbix-os): Use this. Oleg Pykhalov 2018-12-29gnu: php: Build bcmath....* gnu/packages/php.scm (php)[arguments]: Add "--enable-bcmath" to configure flags. Ricardo Wurmus 2018-12-17gnu: Add php-with-bcmath....* gnu/packages/php.scm (php-with-bcmath): New variable. Oleg Pykhalov 2018-12-13gnu: php: Update to 7.3.0....* gnu/packages/php.scm (php)[version]: Update to 7.3.0. [arguments]: Delete "sapi/cli/tests/upload_2G.phpt" substitution and delete "ext/pcre/tests/bug76909.phpt" file. [inputs]: Replace 'pcre' with 'pcre2'. Oleg Pykhalov 2018-11-14Merge branch 'master' into core-updatesMarius Bakke 2018-11-12gnu: php: Update to 7.2.12....* gnu/packages/php.scm (php): Update to 7.2.12. Julien Lepiller