gnu: openblas: Build with LAPACK.
[jackhill/guix/guix.git] / gnu / packages / compression.scm
CommitLineData
233e7676 1;;; GNU Guix --- Functional package management for GNU
b2859a4f 2;;; Copyright © 2012, 2013, 2014, 2015, 2017 Ludovic Courtès <ludo@gnu.org>
b357faac 3;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
0a5c3087 4;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
27f76fe6 5;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
69d9792a 6;;; Copyright © 2015, 2016 Eric Bavier <bavier@member.fsf.org>
e7c76b06 7;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
b496bfea 8;;; Copyright © 2015, 2017 Leo Famulari <leo@famulari.name>
820dc3f5 9;;; Copyright © 2015 Jeff Mickey <j@codemac.net>
2b8bea03 10;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
23f3cbb8 11;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
3fd4b90d 12;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
36df995c 13;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <me@tobias.gr>
e4c2136d 14;;; Copyright © 2016 David Craven <david@craven.ch>
3c8ba11a 15;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
618089f9 16;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
1ae60db8 17;;; Copyright © 2017 ng0 <contact.ng0@cryptolab.net>
9e6ada8f 18;;; Copyright © 2017 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
d109b1e8 19;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
ef5c40aa 20;;; Copyright © 2017 Stefan Reichör <stefan@xsteve.at>
b44ecca6 21;;; Copyright © 2017 Petter <petter@mykolab.ch>
9869bb12 22;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
a268f085 23;;;
233e7676 24;;; This file is part of GNU Guix.
a268f085 25;;;
233e7676 26;;; GNU Guix is free software; you can redistribute it and/or modify it
a268f085
LC
27;;; under the terms of the GNU General Public License as published by
28;;; the Free Software Foundation; either version 3 of the License, or (at
29;;; your option) any later version.
30;;;
233e7676 31;;; GNU Guix is distributed in the hope that it will be useful, but
a268f085
LC
32;;; WITHOUT ANY WARRANTY; without even the implied warranty of
33;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
34;;; GNU General Public License for more details.
35;;;
36;;; You should have received a copy of the GNU General Public License
233e7676 37;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
a268f085 38
1ffa7090 39(define-module (gnu packages compression)
b5b73a82 40 #:use-module ((guix licenses) #:prefix license:)
21b2ec4d 41 #:use-module (guix utils)
a268f085 42 #:use-module (guix packages)
87f5d366 43 #:use-module (guix download)
646898b3 44 #:use-module (guix git-download)
cea83466 45 #:use-module (guix build-system ant)
9e6ada8f 46 #:use-module (guix build-system cmake)
b357faac 47 #:use-module (guix build-system gnu)
73f542c3 48 #:use-module (guix build-system perl)
1ae60db8 49 #:use-module (guix build-system python)
e99dd67a 50 #:use-module (gnu packages)
389eb3fa 51 #:use-module (gnu packages assembly)
69d9792a 52 #:use-module (gnu packages autotools)
23f3cbb8 53 #:use-module (gnu packages backup)
73f542c3 54 #:use-module (gnu packages base)
0f03c531 55 #:use-module (gnu packages check)
9e6ada8f 56 #:use-module (gnu packages curl)
ef5c40aa 57 #:use-module (gnu packages file)
cea83466 58 #:use-module (gnu packages java)
9869bb12 59 #:use-module (gnu packages maths)
646898b3 60 #:use-module (gnu packages perl)
23f3cbb8 61 #:use-module (gnu packages pkg-config)
1ae60db8 62 #:use-module (gnu packages python)
9e6ada8f 63 #:use-module (gnu packages tls)
82aa2a28 64 #:use-module (gnu packages valgrind)
36df995c 65 #:use-module (ice-9 match)
646898b3 66 #:use-module ((srfi srfi-1) #:select (last)))
a268f085 67
6a92093d
LC
68(define-public zlib
69 (package
70 (name "zlib")
2b8bea03 71 (version "1.2.11")
6a92093d
LC
72 (source
73 (origin
87f5d366 74 (method url-fetch)
a67f97fe
CR
75 (uri (list (string-append "http://zlib.net/zlib-"
76 version ".tar.gz")
b2859a4f
LC
77 (string-append "mirror://sourceforge/libpng/zlib/"
78 version "/zlib-" version ".tar.gz")))
6a92093d
LC
79 (sha256
80 (base32
2b8bea03 81 "18dighcs333gsvajvvgqp8l4cx7h1x7yx9gd5xacnk80spyykrf3"))))
6a92093d
LC
82 (build-system gnu-build-system)
83 (arguments
6cd00453
EF
84 `(#:phases
85 (modify-phases %standard-phases
86 (replace 'configure
87 (lambda* (#:key outputs #:allow-other-keys)
88 ;; Zlib's home-made `configure' fails when passed
89 ;; extra flags like `--enable-fast-install', so we need to
90 ;; invoke it with just what it understand.
91 (let ((out (assoc-ref outputs "out")))
92 ;; 'configure' doesn't understand '--host'.
93 ,@(if (%current-target-system)
94 `((setenv "CHOST" ,(%current-target-system)))
95 '())
96 (zero?
97 (system* "./configure"
98 (string-append "--prefix=" out)))))))))
6a92093d 99 (home-page "http://zlib.net/")
35b9e423 100 (synopsis "Compression library")
6a92093d
LC
101 (description
102 "zlib is designed to be a free, general-purpose, legally unencumbered --
103that is, not covered by any patents -- lossless data-compression library for
104use on virtually any computer hardware and operating system. The zlib data
35b9e423 105format is itself portable across platforms. Unlike the LZW compression method
6a92093d
LC
106used in Unix compress(1) and in the GIF image format, the compression method
107currently used in zlib essentially never expands the data. (LZW can double or
108triple the file size in extreme cases.) zlib's memory footprint is also
109independent of the input data and can be reduced, if necessary, at some cost
110in compression.")
4a44e743 111 (license license:zlib)))
6a92093d 112
8298df96
MB
113(define-public minizip
114 (package
115 (name "minizip")
116 (version (package-version zlib))
117 (source (package-source zlib))
118 (build-system gnu-build-system)
119 (arguments
120 `(#:phases
121 (modify-phases %standard-phases
122 (add-after 'unpack 'enter-source
123 (lambda _ (chdir "contrib/minizip") #t))
d10092b8 124 (add-after 'enter-source 'autoreconf
8298df96
MB
125 (lambda _
126 (zero? (system* "autoreconf" "-vif")))))))
127 (native-inputs
128 `(("autoconf" ,autoconf)
129 ("automake" ,automake)
130 ("libtool" ,libtool)))
131 (propagated-inputs `(("zlib" ,zlib)))
132 (home-page (package-home-page zlib))
133 (synopsis "Zip Compression library")
134 (description
135 "Minizip is a minimalistic library that supports compressing,
136extracting and viewing ZIP archives. This version is extracted from
137the @code{zlib} source.")
138 (license (package-license zlib))))
139
ee97be9f
RW
140(define-public fastjar
141 (package
142 (name "fastjar")
143 (version "0.98")
144 (source (origin
145 (method url-fetch)
146 (uri (string-append "mirror://savannah/fastjar/fastjar-"
147 version ".tar.gz"))
148 (sha256
149 (base32
150 "0iginbz2m15hcsa3x4y7v3mhk54gr1r7m3ghx0pg4n46vv2snmpi"))))
151 (build-system gnu-build-system)
152 (inputs `(("zlib" ,zlib)))
153 (home-page "http://savannah.nongnu.org/projects/fastjar")
154 (synopsis "Replacement for Sun's 'jar' utility")
155 (description
156 "FastJar is an attempt to create a much faster replacement for Sun's 'jar'
157utility. Instead of being written in Java, FastJar is written in C.")
158 (license license:gpl2+)))
159
58593975
RW
160(define-public libtar
161 (package
162 (name "libtar")
89d80159 163 (version "1.2.20")
58593975
RW
164 (source (origin
165 (method url-fetch)
89d80159
EF
166 (uri (list
167 (string-append
168 "ftp://ftp.feep.net/pub/software/libtar/libtar-"
169 version ".tar.gz")
170 (string-append
171 "mirror://debian/pool/main/libt/libtar/libtar_"
172 version ".orig.tar.gz")))
58593975
RW
173 (sha256
174 (base32
e99dd67a
EF
175 "02cihzl77ia0dcz7z2cga2412vyhhs5pa2355q4wpwbyga2lrwjh"))
176 (patches (search-patches "libtar-CVE-2013-4420.patch"))))
58593975 177 (build-system gnu-build-system)
89d80159
EF
178 (arguments
179 `(#:tests? #f ;no "check" target
180 #:phases
181 (modify-phases %standard-phases
182 (add-after 'unpack 'autoconf
183 (lambda _ (zero? (system* "sh" "autoreconf" "-vfi")))))))
184 (native-inputs
185 `(("autoconf" ,autoconf)
186 ("automake" ,automake)
187 ("libtool" ,libtool)))
188 (inputs
189 `(("zlib" ,zlib)))
58593975
RW
190 (synopsis "C library for manipulating POSIX tar files")
191 (description
192 "libtar is a C library for manipulating POSIX tar files. It handles
193adding and extracting files to/from a tar archive.")
89d80159 194 (home-page "https://repo.or.cz/libtar.git")
58593975
RW
195 (license license:bsd-3)))
196
a268f085
LC
197(define-public gzip
198 (package
199 (name "gzip")
0bfb9b43 200 (version "1.8")
a268f085 201 (source (origin
87f5d366 202 (method url-fetch)
0db342a5 203 (uri (string-append "mirror://gnu/gzip/gzip-"
28181faf 204 version ".tar.xz"))
a268f085
LC
205 (sha256
206 (base32
0bfb9b43 207 "1lxv3p4iyx7833mlihkn5wfwmz4cys5nybwpz3dfawag8kn6f5zz"))))
a268f085 208 (build-system gnu-build-system)
f50d2669 209 (synopsis "General file (de)compression (using lzw)")
a268f085
LC
210 (arguments
211 ;; FIXME: The test suite wants `less', and optionally Perl.
212 '(#:tests? #f))
213 (description
79c311b8
LC
214 "GNU Gzip provides data compression and decompression utilities; the
215typical extension is \".gz\". Unlike the \"zip\" format, it compresses a single
216file; as a result, it is often used in conjunction with \"tar\", resulting in
217\".tar.gz\" or \".tgz\", etc.")
4a44e743 218 (license license:gpl3+)
6fd52309 219 (home-page "https://www.gnu.org/software/gzip/")))
a268f085
LC
220
221(define-public bzip2
03bc86b8
CB
222 (package
223 (name "bzip2")
224 (version "1.0.6")
225 (source (origin
226 (method url-fetch)
227 (uri (string-append "http://www.bzip.org/" version "/bzip2-"
228 version ".tar.gz"))
229 (sha256
230 (base32
231 "1kfrc7f0ja9fdn6j1y6yir6li818npy6217hvr3wzmnmzhs8z152"))))
232 (build-system gnu-build-system)
233 (arguments
234 `(#:modules ((guix build gnu-build-system)
235 (guix build utils)
236 (srfi srfi-1))
237 #:phases
238 (modify-phases %standard-phases
239 (replace 'configure
240 (lambda* (#:key target #:allow-other-keys)
241 (if ,(%current-target-system)
242 ;; Cross-compilation: use the cross tools.
243 (substitute* (find-files "." "Makefile")
244 (("CC=.*$")
245 (string-append "CC = " target "-gcc\n"))
246 (("AR=.*$")
247 (string-append "AR = " target "-ar\n"))
248 (("RANLIB=.*$")
249 (string-append "RANLIB = " target "-ranlib\n"))
250 (("^all:(.*)test" _ prerequisites)
251 ;; Remove 'all' -> 'test' dependency.
252 (string-append "all:" prerequisites "\n")))
253 #t)))
254 (add-before 'build 'build-shared-lib
255 (lambda* (#:key inputs #:allow-other-keys)
256 (patch-makefile-SHELL "Makefile-libbz2_so")
257 (zero? (system* "make" "-f" "Makefile-libbz2_so"))))
258 (add-after 'install 'install-shared-lib
259 (lambda* (#:key outputs #:allow-other-keys)
260 (let* ((out (assoc-ref outputs "out"))
261 (libdir (string-append out "/lib")))
262 (for-each (lambda (file)
263 (let ((base (basename file)))
264 (format #t "installing `~a' to `~a'~%"
265 base libdir)
266 (copy-file file
267 (string-append libdir "/" base))))
268 (find-files "." "^libbz2\\.so")))
e7ee50f2
CB
269 #t))
270 (add-after 'install-shared-lib 'patch-scripts
271 (lambda* (#:key outputs inputs #:allow-other-keys)
272 (let* ((out (assoc-ref outputs "out")))
273 (substitute* (string-append out "/bin/bzdiff")
274 (("/bin/rm") "rm")))
03bc86b8 275 #t)))
ab4fab19 276
03bc86b8
CB
277 #:make-flags (list (string-append "PREFIX="
278 (assoc-ref %outputs "out")))
ab4fab19 279
03bc86b8
CB
280 ;; Don't attempt to run the tests when cross-compiling.
281 ,@(if (%current-target-system)
282 '(#:tests? #f)
283 '())))
284 (synopsis "High-quality data compression program")
285 (description
286 "bzip2 is a freely available, patent free (see below), high-quality data
a268f085
LC
287compressor. It typically compresses files to within 10% to 15% of the best
288available techniques (the PPM family of statistical compressors), whilst
289being around twice as fast at compression and six times faster at
290decompression.")
03bc86b8
CB
291 (license (license:non-copyleft "file://LICENSE"
292 "See LICENSE in the distribution."))
293 (home-page "http://www.bzip.org/")))
a268f085 294
669b7b83
RW
295(define-public lbzip2
296 (package
297 (name "lbzip2")
298 (version "2.5")
299 (source (origin
300 (method url-fetch)
301 (uri (string-append "http://archive.lbzip2.org/lbzip2-"
302 version ".tar.gz"))
303 (sha256
304 (base32
305 "1sahaqc5bw4i0iyri05syfza4ncf5cml89an033fspn97klmxis6"))))
306 (build-system gnu-build-system)
307 (synopsis "Parallel bzip2 compression utility")
308 (description
309 "lbzip2 is a multi-threaded compression utility with support for the
310bzip2 compressed file format. lbzip2 can process standard bz2 files in
311parallel. It uses POSIX threading model (pthreads), which allows it to take
312full advantage of symmetric multiprocessing (SMP) systems. It has been proven
313to scale linearly, even to over one hundred processor cores. lbzip2 is fully
314compatible with bzip2 – both at file format and command line level.")
315 (home-page "http://www.lbzip2.org/")
316 (license license:gpl3+)))
317
5d47eab0
EF
318(define-public pbzip2
319 (package
320 (name "pbzip2")
321 (version "1.1.12")
322 (source (origin
323 (method url-fetch)
21b2ec4d
EF
324 (uri (string-append "https://launchpad.net/pbzip2/"
325 (version-major+minor version) "/" version
326 "/+download/" name "-" version ".tar.gz"))
5d47eab0
EF
327 (sha256
328 (base32
329 "1vk6065dv3a47p86vmp8hv3n1ygd9hraz0gq89gvzlx7lmcb6fsp"))))
330 (build-system gnu-build-system)
331 (inputs
b3546174 332 `(("bzip2" ,bzip2)))
5d47eab0
EF
333 (arguments
334 `(#:tests? #f ; no tests
335 #:phases (modify-phases %standard-phases
21b2ec4d
EF
336 (delete 'configure))
337 #:make-flags (list (string-append "PREFIX=" %output))))
5d47eab0
EF
338 (home-page "http://compression.ca/pbzip2/")
339 (synopsis "Parallel bzip2 implementation")
340 (description
341 "Pbzip2 is a parallel implementation of the bzip2 block-sorting file
342compressor that uses pthreads and achieves near-linear speedup on SMP machines.
21b2ec4d 343The output of this version is fully compatible with bzip2 v1.0.2 (i.e. anything
5d47eab0
EF
344compressed with pbzip2 can be decompressed with bzip2).")
345 (license (license:non-copyleft "file://COPYING"
21b2ec4d 346 "See COPYING in the distribution."))))
5d47eab0 347
a268f085
LC
348(define-public xz
349 (package
350 (name "xz")
4655f515 351 (version "5.2.2")
a268f085 352 (source (origin
87f5d366 353 (method url-fetch)
52d76b64
LC
354 (uri (list (string-append "http://tukaani.org/xz/xz-" version
355 ".tar.gz")
356 (string-append "http://multiprecision.org/guix/xz-"
357 version ".tar.gz")))
a268f085
LC
358 (sha256
359 (base32
4655f515 360 "18h2k4jndhzjs8ln3a54qdnfv59y6spxiwh9gpaqniph6iflvpvk"))))
a268f085 361 (build-system gnu-build-system)
35b9e423 362 (synopsis "General-purpose data compression")
a268f085
LC
363 (description
364 "XZ Utils is free general-purpose data compression software with high
365compression ratio. XZ Utils were written for POSIX-like systems, but also
366work on some not-so-POSIX systems. XZ Utils are the successor to LZMA Utils.
367
368The core of the XZ Utils compression code is based on LZMA SDK, but it has
369been modified quite a lot to be suitable for XZ Utils. The primary
370compression algorithm is currently LZMA2, which is used inside the .xz
371container format. With typical files, XZ Utils create 30 % smaller output
372than gzip and 15 % smaller output than bzip2.")
38bbd61d 373 (license (list license:gpl2+ license:lgpl2.1+)) ; bits of both
a268f085 374 (home-page "http://tukaani.org/xz/")))
c6eac761
LC
375
376(define-public lzo
377 (package
378 (name "lzo")
c0ec516d 379 (version "2.09")
c6eac761
LC
380 (source
381 (origin
382 (method url-fetch)
383 (uri (string-append "http://www.oberhumer.com/opensource/lzo/download/lzo-"
384 version ".tar.gz"))
385 (sha256
386 (base32
c0ec516d 387 "0k5kpj3jnsjfxqqkblpfpx0mqcy86zs5fhjhgh2kq1hksg7ag57j"))))
c6eac761 388 (build-system gnu-build-system)
165fd9d5 389 (arguments '(#:configure-flags '("--enable-shared")))
c6eac761
LC
390 (home-page "http://www.oberhumer.com/opensource/lzo")
391 (synopsis
e881752c 392 "Data compression library suitable for real-time data de-/compression")
c6eac761
LC
393 (description
394 "LZO is a data compression library which is suitable for data
395de-/compression in real-time. This means it favours speed over
396compression ratio.
397
398LZO is written in ANSI C. Both the source code and the compressed data
399format are designed to be portable across platforms.")
4a44e743 400 (license license:gpl2+)))
0f323dad 401
1a0a5509 402(define-public python-lzo
403 (package
404 (name "python-lzo")
405 (version "1.11")
406 (source
407 (origin
408 (method url-fetch)
409 (uri (pypi-uri "python-lzo" version))
410 (sha256
411 (base32
412 "11p3ifg14p086byhhin6azx5svlkg8dzw2b5abixik97xd6fm81q"))))
413 (build-system python-build-system)
414 (arguments
415 `(#:test-target "check"
416 #:phases
417 (modify-phases %standard-phases
418 (add-after 'unpack 'patch-setuppy
419 (lambda _
420 (substitute* "setup.py"
421 (("include_dirs.append\\(.*\\)")
422 (string-append "include_dirs.append('"
423 (assoc-ref %build-inputs "lzo")
424 "/include/lzo"
425 "')")))
426 #t)))))
427 (inputs
428 `(("lzo" ,lzo)))
429 (home-page "https://github.com/jd-boyd/python-lzo")
430 (synopsis "Python bindings for the LZO data compression library")
431 (description
432 "Python-LZO provides Python bindings for LZO, i.e. you can access
433the LZO library from your Python scripts thereby compressing ordinary
434Python strings.")
435 (license license:gpl2+)))
436
437(define-public python2-lzo
438 (package-with-python2 python-lzo))
439
a9f48ff0
EB
440(define-public lzop
441 (package
442 (name "lzop")
443 (version "1.03")
444 (source
445 (origin
446 (method url-fetch)
447 (uri (string-append "http://www.lzop.org/download/lzop-"
448 version ".tar.gz"))
449 (sha256
450 (base32
451 "1jdjvc4yjndf7ihmlcsyln2rbnbaxa86q4jskmkmm7ylfy65nhn1"))))
452 (build-system gnu-build-system)
453 (inputs `(("lzo" ,lzo)))
454 (home-page "http://www.lzop.org/")
455 (synopsis "Compress or expand files")
456 (description
457 "Lzop is a file compressor which is very similar to gzip. Lzop uses the
458LZO data compression library for compression services, and its main advantages
459over gzip are much higher compression and decompression speed (at the cost of
460some compression ratio).")
461 (license license:gpl2+)))
462
0f323dad
LC
463(define-public lzip
464 (package
465 (name "lzip")
dede6449 466 (version "1.18")
0f323dad
LC
467 (source (origin
468 (method url-fetch)
469 (uri (string-append "mirror://savannah/lzip/lzip-"
470 version ".tar.gz"))
471 (sha256
472 (base32
28938feb 473 "1p8lvc22sv3damld9ng8y6i8z2dvvpsbi9v7yhr5bc2a20m8iya7"))))
0f323dad
LC
474 (build-system gnu-build-system)
475 (home-page "http://www.nongnu.org/lzip/lzip.html")
476 (synopsis "Lossless data compressor based on the LZMA algorithm")
477 (description
478 "Lzip is a lossless data compressor with a user interface similar to the
479one of gzip or bzip2. Lzip decompresses almost as fast as gzip and compresses
0963e3e4 480more than bzip2, which makes it well-suited for software distribution and data
0f323dad
LC
481archiving. Lzip is a clean implementation of the LZMA algorithm.")
482 (license license:gpl3+)))
b357faac 483
9d9fc399
TGR
484(define-public lziprecover
485 (package
486 (name "lziprecover")
487 (version "1.19")
488 (source (origin
489 (method url-fetch)
490 (uri (string-append "mirror://savannah/lzip/" name "/"
491 name "-" version ".tar.gz"))
492 (sha256
493 (base32
494 "0z5fbkm0qprypjf7kxkqganniibj0zml13zvfkrchnjafcmmzyld"))))
495 (build-system gnu-build-system)
496 (home-page "http://www.nongnu.org/lzip/lziprecover.html")
497 (synopsis "Recover and decompress data from damaged lzip files")
498 (description
499 "Lziprecover is a data recovery tool and decompressor for files in the lzip
500compressed data format (.lz). It can test the integrity of lzip files, extract
501data from damaged ones, and repair most files with small errors (up to one
502single-byte error per member) entirely.
503
504Lziprecover is not a replacement for regular backups, but a last line of defence
505when even the backups are corrupt. It can recover files by merging the good
506parts of two or more damaged copies, such as can be easily produced by running
507@command{ddrescue} on a failing device.
508
509This package also includes @command{unzcrash}, a tool to test the robustness of
510decompressors when faced with corrupted input.")
511 (license (list license:bsd-2 ; arg_parser.{cc,h}
512 license:gpl2+)))) ; everything else
513
b357faac
AE
514(define-public sharutils
515 (package
516 (name "sharutils")
9a59ce24 517 (version "4.15.2")
b357faac
AE
518 (source
519 (origin
520 (method url-fetch)
521 (uri (string-append "mirror://gnu/sharutils/sharutils-"
522 version ".tar.xz"))
523 (sha256
524 (base32
9a59ce24 525 "16isapn8f39lnffc3dp4dan05b7x6mnc76v6q5nn8ysxvvvwy19b"))))
b357faac
AE
526 (build-system gnu-build-system)
527 (inputs
528 `(("which" ,which)))
529 (arguments
530 `(#:phases
dc1d3cde
KK
531 (modify-phases %standard-phases
532 (add-after 'patch-source-shebangs 'unpatch-source-shebang
533 ;; revert the patch-shebang phase on a script which is
534 ;; in fact test data
535 (lambda _
536 (substitute* "tests/shar-1.ok"
537 (((which "sh")) "/bin/sh"))
538 #t)))))
6fd52309 539 (home-page "https://www.gnu.org/software/sharutils/")
b357faac
AE
540 (synopsis "Archives in shell scripts, uuencode/uudecode")
541 (description
79c311b8
LC
542 "GNU sharutils is a package for creating and manipulating shell
543archives that can be readily emailed. A shell archive is a file that can be
e881752c 544processed by a Bourne-type shell to unpack the original collection of files.
79c311b8 545This package is mostly for compatibility and historical interest.")
b357faac 546 (license license:gpl3+)))
28469ab0 547
646898b3
RW
548(define-public sfarklib
549 (package
550 (name "sfarklib")
979f9e8a 551 (version "2.24")
646898b3 552 (source (origin
979f9e8a
RW
553 (method url-fetch)
554 (uri (string-append "https://github.com/raboof/sfArkLib/archive/"
555 version ".tar.gz"))
556 (file-name (string-append name "-" version ".tar.gz"))
646898b3
RW
557 (sha256
558 (base32
979f9e8a 559 "0bzs2d98rk1xw9qwpnc7gmlbxwmwc3dg1rpn310afy9pq1k9clzi"))))
646898b3
RW
560 (build-system gnu-build-system)
561 (arguments
562 `(#:tests? #f ;no "check" target
563 #:phases
564 (modify-phases %standard-phases
565 (replace 'configure
566 (lambda* (#:key outputs #:allow-other-keys)
567 (substitute* "Makefile"
568 (("/usr/local") (assoc-ref outputs "out")))
569 #t)))))
570 (inputs
571 `(("zlib" ,zlib)))
572 (home-page "https://github.com/raboof/sfArkLib")
573 (synopsis "Library for SoundFont decompression")
574 (description
575 "SfArkLib is a C++ library for decompressing SoundFont files compressed
576with the sfArk algorithm.")
577 (license license:gpl3+)))
578
b5ad1659 579(define-public sfarkxtc
698bd297 580 (let ((commit "b5e0a2ba3921f019d74d4b92bd31c36dd19d2cf1"))
b5ad1659
RW
581 (package
582 (name "sfarkxtc")
698bd297 583 (version (string-take commit 10))
b5ad1659
RW
584 (source (origin
585 ;; There are no release tarballs, so we just fetch the latest
586 ;; commit at this time.
587 (method git-fetch)
588 (uri (git-reference
589 (url "https://github.com/raboof/sfarkxtc.git")
698bd297 590 (commit commit)))
b5ad1659
RW
591 (sha256
592 (base32
593 "0f5x6i46qfl6ry21s7g2p4sd4b2r1g4fb03yqi2vv4kq3saryhvj"))))
594 (build-system gnu-build-system)
595 (arguments
596 `(#:tests? #f ;no "check" target
597 #:phases
598 (modify-phases %standard-phases
599 (replace 'configure
600 (lambda* (#:key outputs #:allow-other-keys)
601 (substitute* "Makefile"
602 (("/usr/local") (assoc-ref outputs "out")))
603 #t)))))
604 (inputs
605 `(("zlib" ,zlib)
606 ("sfarklib" ,sfarklib)))
607 (home-page "https://github.com/raboof/sfarkxtc")
608 (synopsis "Basic sfArk decompressor")
609 (description "SfArk extractor converts SoundFonts in the compressed legacy
610sfArk file format to the uncompressed sf2 format.")
698bd297 611 (license license:gpl3+))))
b5ad1659 612
27f76fe6
TUBK
613(define-public libmspack
614 (package
615 (name "libmspack")
9fa0c0e6 616 (version "0.6")
27f76fe6
TUBK
617 (source
618 (origin
619 (method url-fetch)
620 (uri (string-append "http://www.cabextract.org.uk/libmspack/libmspack-"
621 version "alpha.tar.gz"))
622 (sha256
9fa0c0e6 623 (base32 "08gr2pcinas6bdqz3k0286g5cnksmcx813skmdwyca6bmj1fxnqy"))))
27f76fe6
TUBK
624 (build-system gnu-build-system)
625 (home-page "http://www.cabextract.org.uk/libmspack/")
626 (synopsis "Compression tools for some formats used by Microsoft")
627 (description
628 "The purpose of libmspack is to provide both compression and
629decompression of some loosely related file formats used by Microsoft.")
630 (license license:lgpl2.1+)))
73f542c3
EB
631
632(define-public perl-compress-raw-bzip2
633 (package
634 (name "perl-compress-raw-bzip2")
c0b7b797 635 (version "2.074")
73f542c3
EB
636 (source
637 (origin
638 (method url-fetch)
639 (uri (string-append "mirror://cpan/authors/id/P/PM/PMQS/"
640 "Compress-Raw-Bzip2-" version ".tar.gz"))
641 (sha256
642 (base32
c0b7b797 643 "0b5jwqf15zr787acnx8sfyy2zavdd7gfkd98n1dgy8fs6r8yb8a4"))))
73f542c3
EB
644 (build-system perl-build-system)
645 ;; TODO: Use our bzip2 package.
646 (home-page "http://search.cpan.org/dist/Compress-Raw-Bzip2")
647 (synopsis "Low-level interface to bzip2 compression library")
648 (description "This module provides a Perl interface to the bzip2
649compression library.")
2f3108ad 650 (license license:perl-license)))
8e18514a
EB
651
652(define-public perl-compress-raw-zlib
653 (package
654 (name "perl-compress-raw-zlib")
79425167 655 (version "2.076")
8e18514a
EB
656 (source
657 (origin
658 (method url-fetch)
659 (uri (string-append "mirror://cpan/authors/id/P/PM/PMQS/"
660 "Compress-Raw-Zlib-" version ".tar.gz"))
661 (sha256
662 (base32
79425167 663 "1al2h0i6mspldmlf5c09fy5a4j8swsxd31v6zi8zx9iyqk1lw7in"))))
8e18514a
EB
664 (build-system perl-build-system)
665 (inputs
666 `(("zlib" ,zlib)))
667 (arguments
668 `(#:phases (modify-phases %standard-phases
669 (add-before
40b084a3 670 'configure 'configure-zlib
8e18514a
EB
671 (lambda* (#:key inputs #:allow-other-keys)
672 (call-with-output-file "config.in"
673 (lambda (port)
674 (format port "
675BUILD_ZLIB = False
676INCLUDE = ~a/include
677LIB = ~:*~a/lib
678OLD_ZLIB = False
679GZIP_OS_CODE = AUTO_DETECT"
680 (assoc-ref inputs "zlib")))))))))
681 (home-page "http://search.cpan.org/dist/Compress-Raw-Zlib")
682 (synopsis "Low-level interface to zlib compression library")
683 (description "This module provides a Perl interface to the zlib
684compression library.")
2f3108ad 685 (license license:perl-license)))
8aaafd34
EB
686
687(define-public perl-io-compress
688 (package
689 (name "perl-io-compress")
c70b50ef 690 (version "2.074")
8aaafd34
EB
691 (source
692 (origin
693 (method url-fetch)
694 (uri (string-append "mirror://cpan/authors/id/P/PM/PMQS/"
695 "IO-Compress-" version ".tar.gz"))
696 (sha256
697 (base32
c70b50ef 698 "1wlpy2026djfmq0bjync531yq6s695jf7bcnpvjphrasi776igdl"))))
8aaafd34
EB
699 (build-system perl-build-system)
700 (propagated-inputs
c70b50ef
EF
701 `(("perl-compress-raw-zlib" ,perl-compress-raw-zlib) ; >=2.074
702 ("perl-compress-raw-bzip2" ,perl-compress-raw-bzip2))) ; >=2.074
8aaafd34
EB
703 (home-page "http://search.cpan.org/dist/IO-Compress")
704 (synopsis "IO Interface to compressed files/buffers")
705 (description "IO-Compress provides a Perl interface to allow reading and
706writing of compressed data created with the zlib and bzip2 libraries.")
2f3108ad 707 (license license:perl-license)))
82aa2a28
LF
708
709(define-public lz4
710 (package
711 (name "lz4")
b7585ca3 712 (version "1.8.0")
82aa2a28
LF
713 (source
714 (origin
715 (method url-fetch)
b496bfea 716 (uri (string-append "https://github.com/lz4/lz4/archive/"
fc89cb69 717 "v" version ".tar.gz"))
82aa2a28 718 (sha256
b496bfea 719 (base32
b7585ca3 720 "1xnckwwah74gl98gylf1b00vk4km1d8sgd8865h07ccvgbm8591c"))
82aa2a28
LF
721 (file-name (string-append name "-" version ".tar.gz"))))
722 (build-system gnu-build-system)
fc89cb69 723 (native-inputs `(("valgrind" ,valgrind))) ; for tests
82aa2a28
LF
724 (arguments
725 `(#:test-target "test"
726 #:parallel-tests? #f ; tests fail if run in parallel
727 #:make-flags (list "CC=gcc"
728 (string-append "PREFIX=" (assoc-ref %outputs "out")))
729 #:phases (modify-phases %standard-phases
fc89cb69 730 (delete 'configure)))) ; no configure script
00d9124d 731 (home-page "http://www.lz4.org")
82aa2a28
LF
732 (synopsis "Compression algorithm focused on speed")
733 (description "LZ4 is a lossless compression algorithm, providing
734compression speed at 400 MB/s per core (0.16 Bytes/cycle). It also features an
735extremely fast decoder, with speed in multiple GB/s per core (0.71 Bytes/cycle).
736A high compression derivative, called LZ4_HC, is also provided. It trades CPU
737time for compression ratio.")
b7585ca3 738 ;; The libraries (lz4, lz4hc, and xxhash) are BSD licenced. The command
82aa2a28
LF
739 ;; line interface programs (lz4, fullbench, fuzzer, datagen) are GPL2+.
740 (license (list license:bsd-2 license:gpl2+))))
dd8d6d65 741
1ae60db8 742(define-public python-lz4
743 (package
744 (name "python-lz4")
e9f6a935 745 (version "0.10.1")
1ae60db8 746 (source
747 (origin
748 (method url-fetch)
749 (uri (pypi-uri "lz4" version))
750 (sha256
751 (base32
e9f6a935 752 "0ghv1xbaq693kgww1x9c22bplz479ls9szjsaa4ig778ls834hm0"))))
1ae60db8 753 (build-system python-build-system)
754 (native-inputs
e9f6a935
TGR
755 `(("python-nose" ,python-nose)
756 ("python-setuptools-scm" ,python-setuptools-scm)))
1ae60db8 757 (home-page "https://github.com/python-lz4/python-lz4")
b316caaa 758 (synopsis "LZ4 bindings for Python")
1ae60db8 759 (description
760 "This package provides python bindings for the lz4 compression library
761by Yann Collet. The project contains bindings for the LZ4 block format and
762the LZ4 frame format.")
763 (license license:bsd-3)))
764
765(define-public python2-lz4
766 (package-with-python2 python-lz4))
767
e7c76b06
RW
768(define-public python-lzstring
769 (package
770 (name "python-lzstring")
771 (version "1.0.3")
772 (source
773 (origin
774 (method url-fetch)
775 (uri (pypi-uri "lzstring" version))
776 (sha256
777 (base32
778 "1d3ck454y41mii0gcjabpmp2skb7n0f9zk232gycqdv8z2jxakfm"))))
779 (build-system python-build-system)
780 (propagated-inputs
781 `(("python-future" ,python-future)))
782 (home-page "https://github.com/gkovacs/lz-string-python")
783 (synopsis "String compression")
784 (description "Lz-string is a string compressor library for Python.")
785 (license license:expat)))
786
787(define-public python2-lzstring
788 (package-with-python2 python-lzstring))
789
dd8d6d65
SB
790(define-public squashfs-tools
791 (package
792 (name "squashfs-tools")
793 (version "4.3")
794 (source (origin
795 (method url-fetch)
de67e922
LF
796 (uri (string-append "mirror://sourceforge/squashfs/squashfs/"
797 "squashfs" version "/"
dd8d6d65
SB
798 "squashfs" version ".tar.gz"))
799 (sha256
800 (base32
801 "1xpklm0y43nd9i6jw43y2xh5zvlmj9ar2rvknh0bh7kv8c95aq0d"))))
802 (build-system gnu-build-system)
803 (arguments
804 '(#:tests? #f ; no check target
805 #:make-flags
806 (list "CC=gcc"
807 "XZ_SUPPORT=1"
808 "LZO_SUPPORT=1"
809 "LZ4_SUPPORT=1"
810 (string-append "INSTALL_DIR=" %output "/bin"))
811 #:phases
812 (modify-phases %standard-phases
813 (replace 'configure
814 (lambda _
815 (chdir "squashfs-tools"))))))
816 (inputs
817 `(("lz4" ,lz4)
818 ("lzo" ,lzo)
819 ("xz" ,xz)
820 ("zlib" ,zlib)))
821 (home-page "http://squashfs.sourceforge.net/")
8f65585b 822 (synopsis "Tools to create and extract squashfs file systems")
dd8d6d65 823 (description
8f65585b 824 "Squashfs is a highly compressed read-only file system for Linux. It uses
dd8d6d65
SB
825zlib to compress files, inodes, and directories. All blocks are packed to
826minimize the data overhead, and block sizes of between 4K and 1M are supported.
827It is intended to be used for archival use, for live CDs, and for embedded
828systems where low overhead is needed. This package allows you to create and
8f65585b 829extract such file systems.")
dd8d6d65 830 (license license:gpl2+)))
820dc3f5
JM
831
832(define-public pigz
833 (package
834 (name "pigz")
835 (version "2.3.3")
836 (source (origin
837 (method url-fetch)
838 (uri (string-append "http://zlib.net/pigz/"
839 name "-" version ".tar.gz"))
840 (sha256
841 (base32
842 "172hdf26k4zmm7z8md7nl0dph2a7mhf3x7slb9bhfyff6as6g2sf"))))
843 (build-system gnu-build-system)
844 (arguments
845 `(#:phases
846 (modify-phases %standard-phases
847 (delete 'configure)
848 (replace 'install
849 (lambda* (#:key outputs #:allow-other-keys)
850 (let* ((out (assoc-ref outputs "out"))
851 (bin (string-append out "/bin"))
852 (man (string-append out "/share/man/man1")))
853 (install-file "pigz" bin)
854 (symlink "pigz" (string-append bin "/unpigz"))
855 (install-file "pigz.1" man)
856 #t))))
857 #:make-flags (list "CC=gcc")
858 #:test-target "tests"))
859 (inputs `(("zlib" ,zlib)))
860 (home-page "http://zlib.net/pigz/")
861 (synopsis "Parallel implementation of gzip")
862 (description
863 "This package provides a parallel implementation of gzip that exploits
864multiple processors and multiple cores when compressing data.")
865
866 ;; Things under zopfli/ are under ASL2.0, but 4 files at the top-level,
867 ;; written by Mark Adler, are under another non-copyleft license.
868 (license license:asl2.0)))
23f3cbb8
BW
869
870(define-public pixz
871 (package
872 (name "pixz")
873 (version "1.0.6")
874 (source (origin
875 (method url-fetch)
876 (uri (string-append
877 "https://github.com/vasi/pixz/releases/download/v" version
878 "/pixz-" version ".tar.xz"))
879 (sha256
880 (base32
881 "1s3j7zw6j5zi3fhdxg287ndr3wf6swac7z21mqd1pyiln530gi82"))))
882 (build-system gnu-build-system)
883 (native-inputs
884 `(("pkg-config" ,pkg-config)
885 ("libarchive" ,libarchive)))
886 (home-page "https://github.com/vasi/pixz")
887 (synopsis "Parallel indexing implementation of LZMA")
888 (description
889 "The existing XZ Utils provide great compression in the .xz file format,
890but they produce just one big block of compressed data. Pixz instead produces
891a collection of smaller blocks which makes random access to the original data
892possible and can compress in parallel. This is especially useful for large
893tarballs.")
894 (license license:bsd-2)))
69d9792a
EB
895
896(define-public brotli
897 (let ((commit "e992cce7a174d6e2b3486616499d26bb0bad6448")
898 (revision "1"))
899 (package
900 (name "brotli")
901 (version (string-append "0.1-" revision "."
902 (string-take commit 7)))
903 (source (origin
904 (method git-fetch)
905 (uri (git-reference
906 (url "https://github.com/bagder/libbrotli.git")
907 (commit commit)
908 (recursive? #t)))
909 (file-name (string-append name "-" version ".tar.xz"))
910 (sha256
911 (base32
912 "1qxxsasvwbbbh6dl3138y9h3fg0q2v7xdk5jjc690bdg7g1wrj6n"))
913 (modules '((guix build utils)))
914 (snippet
915 ;; This is a recursive submodule that is unnecessary for this
916 ;; package, so delete it.
917 '(delete-file-recursively "brotli/terryfy"))))
918 (build-system gnu-build-system)
919 (native-inputs
920 `(("autoconf" ,autoconf)
921 ("automake" ,automake)
922 ("libtool" ,libtool)))
923 (arguments
924 `(#:phases (modify-phases %standard-phases
925 (add-after 'unpack 'autogen
926 (lambda _
927 (mkdir "m4")
928 (zero? (system* "autoreconf" "-vfi")))))))
929 (home-page "https://github.com/bagder/libbrotli/")
930 (synopsis "Implementation of the Brotli compression algorithm")
931 (description
932 "Brotli is a general-purpose lossless compression algorithm. It is
933similar in speed to deflate but offers denser compression. This package
934provides encoder and a decoder libraries: libbrotlienc and libbrotlidec,
935respectively, based on the reference implementation from Google.")
936 (license license:expat))))
3fd4b90d
DM
937
938(define-public cabextract
939 (package
940 (name "cabextract")
941 (version "1.6")
942 (source (origin
943 (method url-fetch)
944 (uri (string-append
945 "http://cabextract.org.uk/cabextract-" version ".tar.gz"))
946 (sha256
947 (base32
948 "1ysmmz25fjghq7mxb2anyyvr1ljxqxzi4piwjhk0sdamcnsn3rnf"))))
949 (build-system gnu-build-system)
950 (arguments '(#:configure-flags '("--with-external-libmspack")))
951 (native-inputs
952 `(("pkg-config" ,pkg-config)))
953 (inputs
954 `(("libmspack" ,libmspack)))
955 (home-page "http://www.cabextract.org.uk/")
956 (synopsis "Tool to unpack Cabinet archives")
957 (description "Extracts files out of Microsoft Cabinet (.cab) archives")
958 ;; Some source files specify gpl2+, lgpl2+, however COPYING is gpl3.
959 (license license:gpl3+)))
0b073506
TGR
960
961(define-public xdelta
962 (package
963 (name "xdelta")
964 (version "3.1.0")
965 (source
966 (origin
967 (method url-fetch)
968 (uri (string-append "https://github.com/jmacd/xdelta/archive/v"
969 version ".tar.gz"))
970 (sha256
971 (base32
972 "17g2pbbqy6h20qgdjq7ykib7kg5ajh8fwbsfgyjqg8pwg19wy5bm"))
973 (file-name (string-append name "-" version ".tar.gz"))
974 (snippet
975 ;; This file isn't freely distributable and has no effect on building.
976 '(delete-file "xdelta3/draft-korn-vcdiff.txt"))))
977 (build-system gnu-build-system)
978 (native-inputs
979 `(("autoconf" ,autoconf)
980 ("automake" ,automake)))
981 (arguments
982 `(#:phases
983 (modify-phases %standard-phases
984 (add-after 'unpack 'enter-build-directory
985 (lambda _ (chdir "xdelta3")))
d10092b8 986 (add-after 'enter-build-directory 'autoconf
0b073506
TGR
987 (lambda _ (zero? (system* "autoreconf" "-vfi")))))))
988 (home-page "http://xdelta.com")
989 (synopsis "Delta encoder for binary files")
990 (description "xdelta encodes only the differences between two binary files
991using the VCDIFF algorithm and patch file format described in RFC 3284. It can
992also be used to apply such patches. xdelta is similar to @command{diff} and
993@command{patch}, but is not limited to plain text and does not generate
994human-readable output.")
995 (license license:asl2.0)))
389eb3fa
TGR
996
997(define-public lrzip
998 (package
999 (name "lrzip")
666619d0 1000 (version "0.631")
389eb3fa
TGR
1001 (source
1002 (origin
1003 (method url-fetch)
1004 (uri (string-append
1005 "http://ck.kolivas.org/apps/lrzip/lrzip-" version ".tar.bz2"))
1006 (sha256
1007 (base32
666619d0 1008 "0mb449vmmwpkalq732jdyginvql57nxyd31sszb108yps1lf448d"))))
389eb3fa
TGR
1009 (build-system gnu-build-system)
1010 (native-inputs
1011 `(;; nasm is only required when building for 32-bit x86 platforms
1012 ,@(if (string-prefix? "i686" (or (%current-target-system)
1013 (%current-system)))
1014 `(("nasm" ,nasm))
1015 '())
1016 ("perl" ,perl)))
1017 (inputs
1018 `(("bzip2" ,bzip2)
1019 ("lzo" ,lzo)
1020 ("zlib" ,zlib)))
1021 (home-page "http://ck.kolivas.org/apps/lrzip/")
1022 (synopsis "Large file compressor with a very high compression ratio")
1023 (description "lrzip is a compression utility that uses long-range
1024redundancy reduction to improve the subsequent compression ratio of
1025larger files. It can then further compress the result with the ZPAQ or
1026LZMA algorithms for maximum compression, or LZO for maximum speed. This
1027choice between size or speed allows for either better compression than
1028even LZMA can provide, or a higher speed than gzip while compressing as
1029well as bzip2.")
1030 (license (list license:gpl3+
1031 license:public-domain)))) ; most files in lzma/
e4c2136d 1032
9869bb12
JL
1033(define-public bitshuffle
1034 (package
1035 (name "bitshuffle")
1036 (version "0.3.2")
1037 (source (origin
1038 (method url-fetch)
1039 (uri (pypi-uri "bitshuffle" version))
1040 (sha256
1041 (base32
1042 "01vcjrvsxjvv47y5hf9rps69zwv0vwd4ydhhms2jfs4rpcnlak6v"))))
1043 (build-system python-build-system)
1044 (arguments
1045 `(#:tests? #f
1046 #:phases
1047 (modify-phases %standard-phases
1048 (add-before 'check 'make-required-dir
1049 (lambda _
b8e2af9a
RW
1050 (mkdir-p "bitshuffle/plugin")
1051 #t)))))
9869bb12
JL
1052 (inputs
1053 `(("numpy" ,python-numpy)
1054 ("h5py" ,python-h5py)
1055 ("hdf5" ,hdf5)))
1056 (native-inputs
1057 `(("cython" ,python-cython)))
1058 (home-page "https://github.com/kiyo-masui/bitshuffle")
1059 (synopsis "Filter for improving compression of typed binary data")
1060 (description "Bitshuffle is an algorithm that rearranges typed, binary data
1061for improving compression, as well as a python/C package that implements this
1062algorithm within the Numpy framework.")
1063 (license license:expat)))
1064
e4c2136d
DC
1065(define-public snappy
1066 (package
1067 (name "snappy")
ad31b4fe 1068 (version "1.1.3")
e4c2136d
DC
1069 (source (origin
1070 (method url-fetch)
1071 (uri (string-append
1072 "https://github.com/google/snappy/releases/download/"
1073 version "/" name "-" version ".tar.gz"))
1074 (sha256
1075 (base32
ad31b4fe 1076 "1wzf8yif5ym2gj52db6v5m1pxnmn258i38x7llk9x346y2nq47ig"))))
e4c2136d
DC
1077 (build-system gnu-build-system)
1078 (home-page "https://github.com/google/snappy")
1079 (synopsis "Fast compressor/decompressor")
1080 (description "Snappy is a compression/decompression library. It does not
1081aim for maximum compression, or compatibility with any other compression library;
1082instead, it aims for very high speeds and reasonable compression. For instance,
1083compared to the fastest mode of zlib, Snappy is an order of magnitude faster
1084for most inputs, but the resulting compressed files are anywhere from 20% to
1085100% bigger.")
1086 (license license:asl2.0)))
adbd7faf 1087
cea83466
JL
1088(define bitshuffle-for-snappy
1089 (package
1090 (inherit bitshuffle)
1091 (name "bitshuffle-for-snappy")
1092 (build-system gnu-build-system)
1093 (arguments
1094 `(#:tests? #f
1095 #:phases
1096 (modify-phases %standard-phases
1097 (replace 'configure
1098 (lambda* (#:key outputs #:allow-other-keys)
1099 (with-output-to-file "Makefile"
1100 (lambda _
04e91134
RW
1101 (format #t "\
1102libbitshuffle.so: src/bitshuffle.o src/bitshuffle_core.o src/iochain.o lz4/lz4.o
1103\tgcc -O3 -ffast-math -std=c99 -o $@ -shared -fPIC $^
1104
1105%.o: %.c
1106\tgcc -O3 -ffast-math -std=c99 -fPIC -Isrc -Ilz4 -c $< -o $@
1107
1108PREFIX:=~a
1109LIBDIR:=$(PREFIX)/lib
1110INCLUDEDIR:=$(PREFIX)/include
1111
1112install: libbitshuffle.so
1113\tinstall -dm755 $(LIBDIR)
1114\tinstall -dm755 $(INCLUDEDIR)
1115\tinstall -m755 libbitshuffle.so $(LIBDIR)
1116\tinstall -m644 src/bitshuffle.h $(INCLUDEDIR)
1117\tinstall -m644 src/bitshuffle_core.h $(INCLUDEDIR)
1118\tinstall -m644 src/iochain.h $(INCLUDEDIR)
1119\tinstall -m644 lz4/lz4.h $(INCLUDEDIR)
1120" (assoc-ref outputs "out"))))
1121 #t)))))
cea83466
JL
1122 (inputs '())
1123 (native-inputs '())))
1124
1125(define-public java-snappy
1126 (package
1127 (name "java-snappy")
1128 (version "1.1.4")
1129 (source (origin
1130 (method url-fetch)
1131 (uri (string-append "https://github.com/xerial/snappy-java/archive/"
1132 version ".tar.gz"))
1133 (file-name (string-append name "-" version ".tar.gz"))
1134 (sha256
1135 (base32
1136 "1w58diryma7qz7aa24yv8shf3flxcbbw8jgcn2lih14wgmww58ww"))))
1137 (build-system ant-build-system)
1138 (arguments
1139 `(#:jar-name "snappy.jar"
1140 #:source-dir "src/main/java"
1141 #:phases
1142 (modify-phases %standard-phases
1143 (add-before 'build 'remove-binaries
1144 (lambda _
1145 (delete-file "lib/org/xerial/snappy/OSInfo.class")
1146 (delete-file-recursively "src/main/resources/org/xerial/snappy/native")
1147 #t))
1148 (add-before 'build 'build-jni
1149 (lambda _
1150 ;; Rebuild one of the binaries we removed earlier
1151 (system* "javac" "src/main/java/org/xerial/snappy/OSInfo.java"
1152 "-d" "lib")
1153 ;; Link to the dynamic bitshuffle and snappy, not the static ones
1154 (substitute* "Makefile.common"
1155 (("-shared")
1156 "-shared -lbitshuffle -lsnappy"))
1157 (substitute* "Makefile"
1158 ;; Don't try to use git, don't download bitshuffle source
1159 ;; and don't build it.
1160 (("\\$\\(SNAPPY_GIT_UNPACKED\\) ")
1161 "")
1162 ((": \\$\\(SNAPPY_GIT_UNPACKED\\)")
1163 ":")
1164 (("\\$\\(BITSHUFFLE_UNPACKED\\) ")
1165 "")
1166 ((": \\$\\(SNAPPY_SOURCE_CONFIGURED\\)") ":")
1167 ;; What we actually want to build
1168 (("SNAPPY_OBJ:=.*")
1169 "SNAPPY_OBJ:=$(addprefix $(SNAPPY_OUT)/, \
1170 SnappyNative.o BitShuffleNative.o)\n")
1171 ;; Since we removed the directory structure in "native" during
1172 ;; the previous phase, we need to recreate it.
1173 (("NAME\\): \\$\\(SNAPPY_OBJ\\)")
1174 "NAME): $(SNAPPY_OBJ)\n\t@mkdir -p $(@D)"))
1175 ;; Finally we can run the Makefile to build the dynamic library.
1176 (zero? (system* "make" "native"))))
1177 ;; Once we have built the shared library, we need to place it in the
1178 ;; "build" directory so it can be added to the jar file.
1179 (add-after 'build-jni 'copy-jni
1180 (lambda _
1181 (copy-recursively "src/main/resources/org/xerial/snappy/native"
1182 "build/classes/org/xerial/snappy/native")))
1183 (add-before 'check 'fix-failing
1184 (lambda _
1185 ;; This package assumes maven build, which puts results in "target".
1186 ;; We put them in "build" instead, so fix that.
1187 (substitute* "src/test/java/org/xerial/snappy/SnappyLoaderTest.java"
1188 (("target/classes") "build/classes"))
1189 ;; FIXME: probably an error
1190 (substitute* "src/test/java/org/xerial/snappy/SnappyOutputStreamTest.java"
1191 (("91080") "91013")))))))
1192 (inputs
1193 `(("osgi-framework" ,java-osgi-framework)))
1194 (propagated-inputs
1195 `(("bitshuffle" ,bitshuffle-for-snappy)
1196 ("snappy" ,snappy)))
1197 (native-inputs
1198 `(("junit" ,java-junit)
1199 ("hamcrest" ,java-hamcrest-core)
1200 ("xerial-core" ,java-xerial-core)
1201 ("classworlds" ,java-plexus-classworlds)
1202 ("perl" ,perl)))
1203 (home-page "https://github.com/xerial/snappy-java")
1204 (synopsis "Compression/decompression algorithm in Java")
1205 (description "Snappy-java is a Java port of the snappy, a fast C++
1206compresser/decompresser.")
1207 (license license:asl2.0)))
1208
933ad809
RW
1209(define-public java-snappy-1
1210 (package
1211 (inherit java-snappy)
1212 (version "1.0.3-rc3")
1213 (source (origin
1214 (method url-fetch)
1215 (uri (string-append "https://github.com/xerial/snappy-java/archive/"
1216 "snappy-java-" version ".tar.gz"))
1217 (sha256
1218 (base32
1219 "08hsxlqidiqck0q57fshwyv3ynyxy18vmhrai9fyc8mz17m7gsa3"))))
1220 (arguments
1221 `(#:jar-name "snappy.jar"
1222 #:source-dir "src/main/java"
1223 #:phases
1224 (modify-phases %standard-phases
1225 (add-before 'build 'remove-binaries
1226 (lambda _
1227 (delete-file "lib/org/xerial/snappy/OSInfo.class")
1228 (delete-file-recursively "src/main/resources/org/xerial/snappy/native")
1229 #t))
1230 (add-before 'build 'build-jni
1231 (lambda _
1232 ;; Rebuild one of the binaries we removed earlier
1233 (system* "javac" "src/main/java/org/xerial/snappy/OSInfo.java"
1234 "-d" "lib")
1235 ;; Link to the dynamic snappy, not the static ones
1236 (substitute* "Makefile.common"
1237 (("-shared") "-shared -lsnappy"))
1238 (substitute* "Makefile"
1239 ;; Don't download the sources here.
1240 (("\\$\\(SNAPPY_UNPACKED\\) ") "")
1241 ((": \\$\\(SNAPPY_UNPACKED\\) ") ":")
1242 ;; What we actually want to build
1243 (("SNAPPY_OBJ:=.*")
1244 "SNAPPY_OBJ:=$(addprefix $(SNAPPY_OUT)/, SnappyNative.o)\n")
1245 ;; Since we removed the directory structure in "native" during
1246 ;; the previous phase, we need to recreate it.
1247 (("NAME\\): \\$\\(SNAPPY_OBJ\\)")
1248 "NAME): $(SNAPPY_OBJ)\n\t@mkdir -p $(@D)"))
1249 ;; Finally we can run the Makefile to build the dynamic library.
1250 (zero? (system* "make" "native"))))
1251 ;; Once we have built the shared library, we need to place it in the
1252 ;; "build" directory so it can be added to the jar file.
1253 (add-after 'build-jni 'copy-jni
1254 (lambda _
1255 (copy-recursively "src/main/resources/org/xerial/snappy/native"
1256 "build/classes/org/xerial/snappy/native")
1257 #t))
1258 (add-before 'check 'fix-tests
1259 (lambda _
1260 (mkdir-p "src/test/resources/org/xerial/snappy/")
1261 (copy-recursively "src/test/java/org/xerial/snappy/testdata"
1262 "src/test/resources/org/xerial/snappy/testdata")
1263 (install-file "src/test/java/org/xerial/snappy/alice29.txt"
1264 "src/test/resources/org/xerial/snappy/")
1265 #t)))))))
1266
823997e9
JL
1267(define-public java-iq80-snappy
1268 (package
1269 (name "java-iq80-snappy")
1270 (version "0.4")
1271 (source (origin
1272 (method url-fetch)
1273 (uri (string-append "https://github.com/dain/snappy/archive/snappy-"
1274 version ".tar.gz"))
1275 (sha256
1276 (base32
1277 "0rb3zhci7w9wzd65lfnk7p3ip0n6gb58a9qpx8n7r0231gahyamf"))))
1278 (build-system ant-build-system)
1279 (arguments
1280 `(#:jar-name "iq80-snappy.jar"
1281 #:source-dir "src/main/java"
1282 #:test-dir "src/test"
1283 #:jdk ,icedtea-8
1284 #:phases
1285 (modify-phases %standard-phases
1286 (replace 'check
1287 (lambda _
1288 (define (test class)
1289 (zero? (system* "java" "-cp" (string-append (getenv "CLASSPATH")
1290 ":build/classes"
1291 ":build/test-classes")
1292 "-Dtest.resources.dir=src/test/resources"
1293 "org.testng.TestNG" "-testclass"
1294 class)))
1295 (system* "ant" "compile-tests")
1296 (and
1297 (test "org.iq80.snappy.SnappyFramedStreamTest")
1298 (test "org.iq80.snappy.SnappyStreamTest"))))
1299 (add-before 'build 'remove-hadoop-dependency
1300 (lambda _
1301 ;; We don't have hadoop
1302 (delete-file "src/main/java/org/iq80/snappy/HadoopSnappyCodec.java")
1303 (delete-file "src/test/java/org/iq80/snappy/TestHadoopSnappyCodec.java")
1304 #t)))))
1305 (home-page "https://github.com/dain/snappy")
1306 (native-inputs
1307 `(("guava" ,java-guava)
1308 ("java-snappy" ,java-snappy)
1309 ("hamcrest" ,java-hamcrest-core)
1310 ("testng" ,java-testng)))
1311 (synopsis "Java port of snappy")
1312 (description "Iq80-snappy is a rewrite (port) of Snappy writen in pure
1313Java. This compression code produces a byte-for-byte exact copy of the output
1314created by the original C++ code, and extremely fast.")
1315 (license license:asl2.0)))
1316
776d2fb1
RW
1317(define-public java-jbzip2
1318 (package
1319 (name "java-jbzip2")
1320 (version "0.9.1")
1321 (source (origin
1322 (method url-fetch)
1323 (uri (string-append "https://storage.googleapis.com/"
1324 "google-code-archive-source/v2/"
1325 "code.google.com/jbzip2/"
1326 "source-archive.zip"))
1327 (file-name (string-append name "-" version ".zip"))
1328 (sha256
1329 (base32
1330 "0ncmhlqmrfmj96nqf6p77b9ws35lcfsvpfxzwxi2asissc83z1l3"))))
1331 (build-system ant-build-system)
1332 (native-inputs
1333 `(("unzip" ,unzip)
1334 ("java-junit" ,java-junit)))
1335 (arguments
1336 `(#:tests? #f ; no tests
1337 #:jar-name "jbzip2.jar"
1338 #:source-dir "tags/release-0.9.1/src"
1339 #:phases
1340 (modify-phases %standard-phases
1341 (add-after 'unpack 'fix-encoding-problems
1342 (lambda _
1343 ;; Some of the files we're patching are
1344 ;; ISO-8859-1-encoded, so choose it as the default
1345 ;; encoding so the byte encoding is preserved.
1346 (with-fluids ((%default-port-encoding #f))
1347 (substitute* "tags/release-0.9.1/src/org/itadaki/bzip2/HuffmanAllocator.java"
1348 (("Milidi.") "Milidiu")))
1349 #t)))))
1350 (home-page "https://code.google.com/archive/p/jbzip2/")
1351 (synopsis "Java bzip2 compression/decompression library")
1352 (description "Jbzip2 is a Java bzip2 compression/decompression library.
1353It can be used as a replacement for the Apache @code{CBZip2InputStream} /
1354@code{CBZip2OutputStream} classes.")
1355 (license license:expat)))
1356
adbd7faf
KK
1357(define-public p7zip
1358 (package
1359 (name "p7zip")
1360 (version "16.02")
1361 (source (origin
1362 (method url-fetch)
1363 (uri (string-append "mirror://sourceforge/" name "/" name "/"
1364 version "/" name "_" version
1365 "_src_all.tar.bz2"))
1366 (sha256
1367 (base32
1368 "07rlwbbgszq8i7m8jh3x6j2w2hc9a72dc7fmqawnqkwlwb00mcjy"))
1369 (modules '((guix build utils)))
1370 (snippet
1371 '(begin
1372 ;; Remove non-free source files
1373 (for-each delete-file
1374 (append
1375 (find-files "CPP/7zip/Compress" "Rar.*")
1376 (find-files "CPP/7zip/Crypto" "Rar.*")
1377 (find-files "DOC/unRarLicense.txt")
1378 (find-files "Utils/file_Codecs_Rar_so.py")))
1379 (delete-file-recursively "CPP/7zip/Archive/Rar")
1380 (delete-file-recursively "CPP/7zip/Compress/Rar")
1381 #t))
1ac675a5
EF
1382 (patches (search-patches "p7zip-CVE-2016-9296.patch"
1383 "p7zip-remove-unused-code.patch"))))
adbd7faf
KK
1384 (build-system gnu-build-system)
1385 (arguments
1386 `(#:make-flags
1387 (list (string-append "DEST_HOME=" (assoc-ref %outputs "out")) "all3")
1388 #:phases
1389 (modify-phases %standard-phases
1390 (replace 'configure
1391 (lambda* (#:key system outputs #:allow-other-keys)
1392 (zero? (system* "cp"
1393 (let ((system ,(or (%current-target-system)
1394 (%current-system))))
1395 (cond
1396 ((string-prefix? "x86_64" system)
1397 "makefile.linux_amd64_asm")
1398 ((string-prefix? "i686" system)
1399 "makefile.linux_x86_asm_gcc_4.X")
1400 (else
1401 "makefile.linux_any_cpu_gcc_4.X")))
1402 "makefile.machine"))))
1403 (replace 'check
1404 (lambda _
1405 (and (zero? (system* "make" "test"))
1406 (zero? (system* "make" "test_7z"))
1407 (zero? (system* "make" "test_7zr"))))))))
1408 (inputs
1409 (let ((system (or (%current-target-system)
1410 (%current-system))))
1411 `(,@(cond ((string-prefix? "x86_64" system)
1412 `(("yasm" ,yasm)))
1413 ((string-prefix? "i686" system)
1414 `(("nasm" ,nasm)))
1415 (else '())))))
1416 (home-page "http://p7zip.sourceforge.net/")
1417 (synopsis "Command-line file archiver with high compression ratio")
1418 (description "p7zip is a command-line port of 7-Zip, a file archiver that
1419handles the 7z format which features very high compression ratios.")
1420 (license (list license:lgpl2.1+
1421 license:gpl2+
1422 license:public-domain))))
618089f9
MB
1423
1424(define-public gzstream
1425 (package
1426 (name "gzstream")
1427 (version "1.5")
1428 (source (origin
1429 (method url-fetch)
1430 (uri
1431 ;; No versioned URL, but last release was in 2003.
1432 "http://www.cs.unc.edu/Research/compgeom/gzstream/gzstream.tgz")
1433 (file-name (string-append name "-" version ".tgz"))
1434 (sha256
1435 (base32
1436 "00y19pqjsdj5zcrx4p9j56pl73vayfwnb7y2hvp423nx0cwv5b4r"))
1437 (modules '((guix build utils)))
1438 (snippet
1439 ;; Remove pre-compiled object.
1440 '(delete-file "gzstream.o"))))
1441 (build-system gnu-build-system)
1442 (arguments
1443 `(#:test-target "test"
1444 #:phases
1445 (modify-phases %standard-phases
1446 (delete 'configure)
1447 (replace 'install
1448 (lambda* (#:key outputs #:allow-other-keys)
1449 (let* ((out (assoc-ref outputs "out"))
1450 (lib (string-append out "/lib"))
1451 (include (string-append out "/include")))
1452 (install-file "libgzstream.a" lib)
1453 (install-file "gzstream.h" include)
1454 #t))))))
1455 (propagated-inputs `(("zlib" ,zlib)))
1456 (home-page "http://www.cs.unc.edu/Research/compgeom/gzstream/")
1457 (synopsis "Compressed C++ iostream")
1458 (description "gzstream is a small library for providing zlib
1459functionality in a C++ iostream.")
1460 (license license:lgpl2.1+)))
36df995c
TGR
1461
1462(define-public zpaq
1463 (package
1464 (name "zpaq")
1465 (version "7.15")
1466 (source
1467 (origin
1468 (method url-fetch/zipbomb)
1469 (uri (string-append "http://mattmahoney.net/dc/zpaq"
1470 (string-delete #\. version) ".zip"))
1471 (sha256
1472 (base32
1473 "066l94yyladlfzri877nh2dhkvspagjn3m5bmv725fmhkr9c4pp8"))
1474 (modules '((guix build utils)))
1475 (snippet
1476 ;; Delete irrelevant pre-compiled binaries.
1477 '(for-each delete-file (find-files "." "\\.exe$")))))
1478 (build-system gnu-build-system)
1479 (arguments
1480 `(#:phases
1481 (modify-phases %standard-phases
1482 (delete 'configure)) ; no ‘configure’ script
1483 #:make-flags
1484 (list
1485 (string-append "CPPFLAGS=-Dunix"
1486 ,(match (or (%current-target-system)
1487 (%current-system))
1488 ("x86_64-linux" "")
1489 ("i686-linux" "")
1490 (_ " -DNOJIT")))
1491 ;; These should be safe, lowest-common-denominator instruction sets,
1492 ;; allowing for some optimisation while remaining reproducible.
effd7198 1493 (string-append "CXXFLAGS=-O3 -DNDEBUG"
36df995c
TGR
1494 ,(match (or (%current-target-system)
1495 (%current-system))
effd7198
EF
1496 ("x86_64-linux" " -march=nocona -mtune=generic")
1497 ("i686-linux" " -march=i686 -mtune=generic")
1498 ("armhf-linux" " -mtune=generic-armv7-a")
36df995c
TGR
1499 (_ "")))
1500 (string-append "PREFIX="
1501 (assoc-ref %outputs "out")))))
1502 (native-inputs
1503 `(("perl" ,perl))) ; for pod2man
1504 (home-page "http://mattmahoney.net/dc/zpaq.html")
1505 (synopsis "Incremental journaling archiver")
1506 (description "ZPAQ is a command-line archiver for realistic situations with
1507many duplicate and already compressed files. It backs up only those files
1508modified since the last update. All previous versions remain untouched and can
1509be independently recovered. Identical files are only stored once (known as
1510@dfn{de-duplication}). Archives can also be encrypted.
1511
1512ZPAQ is intended to back up user data, not entire operating systems. It ignores
1513owner and group IDs, ACLs, extended attributes, or special file types like
1514devices, sockets, or named pipes. It does not follow or restore symbolic links
1515or junctions, and always follows hard links.")
1516 (license (list license:public-domain
1517 ;; libzpaq.cpp contains a mix of public-domain and
1518 ;; expat-licenced (or ‘MIT’) code.
1519 license:expat))))
0da8313c 1520
9e6ada8f
MR
1521(define-public unshield
1522 (package
1523 (name "unshield")
1524 (version "1.4.2")
1525 (source
1526 (origin (method url-fetch)
1527 (uri (string-append "http://github.com/twogood/unshield/archive/"
1528 version ".tar.gz"))
1529 (sha256
1530 (base32
1531 "0x7ps644yp5dka2zhb8w0ifqmw3d255jafpzfwv8xbcpgq6fmm2x"))))
1532 (build-system cmake-build-system)
1533 (inputs
1534 `(("zlib" ,zlib)
1535 ("openssl" ,openssl)
1536 ;; test data that is otherwise downloaded with curl
1537 ("unshield-avigomanager11b22.zip"
1538 ,(origin
1539 (method url-fetch)
a5fa1a1a
MR
1540 (uri (string-append "https://www.dropbox.com/s/8r4b6752swe3nhu/"
1541 "unshield-avigomanager11b22.zip?dl=1"))
9e6ada8f
MR
1542 (sha256
1543 (base32 "0fwq7lih04if68wpwpsk5wjqyvh32db76a41sq6gbx4dn1lc3ddn"))
1544 (file-name "unshield-avigomanager11b22.zip")))
1545 ("unshield-the-feeble-files-spanish.zip"
1546 ,(origin
1547 (method url-fetch)
a5fa1a1a
MR
1548 (uri (string-append "https://www.dropbox.com/s/1ng0z9kfxc7eb1e/"
1549 "unshield-the-feeble-files-spanish.zip?dl=1"))
9e6ada8f
MR
1550 (sha256
1551 (base32 "1k5cw6vnpja8yjlnhx5124xrw9i8s1l539hfdqqrqz3l5gn0bnyd"))
1552 (file-name "unshield-the-feeble-files-spanish.zip")))))
1553 (native-inputs
1554 `(("unzip" ,unzip)))
1555 (arguments
1556 `(#:out-of-source? #f
1557 #:phases
1558 (modify-phases %standard-phases
1559 (add-before 'check 'pre-check
1560 (lambda* (#:key inputs #:allow-other-keys)
1561 (for-each (lambda (i)
1562 (copy-file (assoc-ref inputs i)
1563 (string-append "test/v0/" i)))
1564 '("unshield-avigomanager11b22.zip"
1565 "unshield-the-feeble-files-spanish.zip"))
1566 (substitute* (find-files "test/" "/*\\.sh")
1567 ;; Tests expect the unshield binary in a specific
1568 ;; location.
1569 (("/var/tmp/unshield/bin/unshield")
1570 (string-append (getcwd) "/src/unshield"))
1571 ;; We no longer need to download the data.
1572 ((".?URL=.*$") "")
1573 (("curl -(|f)sSL -o test.zip .*") ""))
1574 (substitute* "test/v0/avigomanager.sh"
1575 (("test.zip")
1576 (string-append (getcwd)
1577 "/test/v0/unshield-avigomanager11b22.zip")))
1578 (substitute* "test/v0/the-feeble-files-spanish.sh"
1579 (("test.zip")
1580 (string-append (getcwd)
1581 "/test/v0/unshield-the-feeble-files-spanish.zip")))
1582 #t))
1583 (replace 'check
1584 (lambda _
1585 (zero? (system* "./run-tests.sh")))))))
1586 (home-page "https://github.com/twogood/unshield")
1587 (synopsis "Extract CAB files from InstallShield installers")
1588 (description
1589 "@command{unshield} is a tool and library for extracting @file{.cab}
1590 archives from InstallShield installers.")
1591 (license license:expat)))
1592
f6ac3101
TGR
1593(define-public zstd
1594 (package
1595 (name "zstd")
5308f15b 1596 (version "1.3.3")
f6ac3101
TGR
1597 (source (origin
1598 (method url-fetch)
1599 (uri (string-append "https://github.com/facebook/zstd/archive/v"
1600 version ".tar.gz"))
1601 (file-name (string-append name "-" version ".tar.gz"))
1602 (sha256
1603 (base32
5308f15b 1604 "0yr91gwi380632w9y7p6idl72svq0mq0jajvdii05pp77qalfz57"))))
f6ac3101
TGR
1605 (build-system gnu-build-system)
1606 (arguments
1607 `(#:phases
1608 (modify-phases %standard-phases
1609 (delete 'configure)) ; no configure script
1610 #:make-flags
1611 (list "CC=gcc"
f45e314e
TGR
1612 (string-append "PREFIX=" (assoc-ref %outputs "out"))
1613 ;; Skip auto-detection of, and creating a dependency on, the build
1614 ;; environment's ‘xz’ for what amounts to a dubious feature anyway.
1615 "HAVE_LZMA=0"
1616 ;; Not currently detected, but be explicit & avoid surprises later.
1617 "HAVE_LZ4=0"
e8073063 1618 "HAVE_ZLIB=0")))
f6ac3101
TGR
1619 (home-page "http://zstd.net/")
1620 (synopsis "Zstandard real-time compression algorithm")
1621 (description "Zstandard (@command{zstd}) is a lossless compression algorithm
1622that combines very fast operation with a compression ratio comparable to that of
1623zlib. In most scenarios, both compression and decompression can be performed in
1624‘real time’. The compressor can be configured to provide the most suitable
1625trade-off between compression ratio and speed, without affecting decompression
1626speed.")
1627 (license (list license:bsd-3 ; the main top-level LICENSE file
16123d1d
TGR
1628 license:bsd-2 ; many files explicitly state 2-Clause
1629 license:gpl2 ; the mail top-level COPYING file
1630 license:gpl3+ ; tests/gzip/*.sh
1631 license:expat ; lib/dictBuilder/divsufsort.[ch]
f6ac3101
TGR
1632 license:public-domain ; zlibWrapper/examples/fitblk*
1633 license:zlib)))) ; zlibWrapper/{gz*.c,gzguts.h}
0f03c531
TGR
1634
1635(define-public pzstd
1636 (package
1637 (name "pzstd")
1638 (version (package-version zstd))
1639 (source (package-source zstd))
1640 (build-system gnu-build-system)
1641 (native-inputs
1642 `(("googletest", googletest)))
1643 (arguments
1644 `(#:phases
1645 (modify-phases %standard-phases
1646 (add-after 'unpack 'enter-subdirectory
1647 (lambda _ (chdir "contrib/pzstd")))
1648 (delete 'configure) ; no configure script
1649 (add-before 'check 'compile-tests
1650 (lambda* (#:key make-flags #:allow-other-keys)
1651 (zero? (apply system* "make" "tests" make-flags))))
1652 (add-after 'install 'install-documentation
1653 (lambda* (#:key outputs #:allow-other-keys)
1654 (let* ((out (assoc-ref outputs "out"))
1655 (doc (string-append out "/share/doc/" ,name)))
1656 (mkdir-p doc)
1657 (install-file "README.md" doc)
1658 #t))))
1659 #:make-flags
1660 (list "CC=gcc"
1661 (string-append "PREFIX=" (assoc-ref %outputs "out")))))
1662 (home-page (package-home-page zstd))
1663 (synopsis "Threaded implementation of the Zstandard compression algorithm")
1664 (description "Parallel Zstandard (PZstandard or @command{pzstd}) is a
1665multi-threaded implementation of the @uref{http://zstd.net/, Zstandard
1666compression algorithm}. It is fully compatible with the original Zstandard file
1667format and command-line interface, and can be used as a drop-in replacement.
1668
1669Compression is distributed over multiple processor cores to improve performance,
1670as is the decompression of data compressed in this manner. Data compressed by
1671other implementations will only be decompressed by two threads: one performing
1672the actual decompression, the other input and output.")
1673 (license (package-license zstd))))
148585c2
AI
1674
1675(define-public zip
1676 (package
1677 (name "zip")
1678 (version "3.0")
1679 (source
1680 (origin
1681 (method url-fetch)
1682 (uri (string-append "mirror://sourceforge/infozip"
1683 "/Zip%203.x%20%28latest%29/3.0/zip30.tar.gz"))
1684 (sha256
1685 (base32
1686 "0sb3h3067pzf3a7mlxn1hikpcjrsvycjcnj9hl9b1c3ykcgvps7h"))))
1687 (build-system gnu-build-system)
1688 (inputs `(("bzip2" ,bzip2)))
1689 (arguments
1690 `(#:tests? #f ; no test target
1691 #:make-flags (let ((out (assoc-ref %outputs "out")))
1692 (list "-f" "unix/Makefile"
1693 (string-append "prefix=" out)
1694 (string-append "MANDIR=" out "/share/man/man1")))
1695 #:modules ((guix build gnu-build-system)
1696 (guix build utils)
1697 (srfi srfi-1))
1698 #:phases
1699 (modify-phases %standard-phases
1700 (replace 'build
1701 (lambda* (#:key (make-flags '()) #:allow-other-keys)
1702 (zero? (apply system* "make" "generic_gcc" make-flags))))
1703 (delete 'configure))))
1704 (home-page "http://www.info-zip.org/Zip.html")
1705 (synopsis "Compression and file packing utility")
1706 (description
1707 "Zip is a compression and file packaging/archive utility. Zip is useful
1708for packaging a set of files for distribution, for archiving files, and for
1709saving disk space by temporarily compressing unused files or directories.
1710Zip puts one or more compressed files into a single ZIP archive, along with
1711information about the files (name, path, date, time of last modification,
1712protection, and check information to verify file integrity). An entire
1713directory structure can be packed into a ZIP archive with a single command.
1714
1715Zip has one compression method (deflation) and can also store files without
1716compression. Zip automatically chooses the better of the two for each file.
1717Compression ratios of 2:1 to 3:1 are common for text files.")
1718 (license (license:non-copyleft "file://LICENSE"
1719 "See LICENSE in the distribution."))))
1720
1721(define-public unzip
1722 (package (inherit zip)
1723 (name "unzip")
1724 (version "6.0")
1725 (source
1726 (origin
1727 (method url-fetch)
1728 (uri (string-append "mirror://sourceforge/infozip"
1729 "/UnZip%206.x%20%28latest%29/UnZip%206.0/unzip60.tar.gz"))
1730 (sha256
1731 (base32
1732 "0dxx11knh3nk95p2gg2ak777dd11pr7jx5das2g49l262scrcv83"))
1733 (patches (search-patches "unzip-CVE-2014-8139.patch"
1734 "unzip-CVE-2014-8140.patch"
1735 "unzip-CVE-2014-8141.patch"
1736 "unzip-CVE-2014-9636.patch"
1737 "unzip-CVE-2015-7696.patch"
1738 "unzip-CVE-2015-7697.patch"
1739 "unzip-allow-greater-hostver-values.patch"
1740 "unzip-initialize-symlink-flag.patch"
1741 "unzip-remove-build-date.patch"
1742 "unzip-attribs-overflow.patch"
1743 "unzip-overflow-on-invalid-input.patch"
1744 "unzip-format-secure.patch"
1745 "unzip-overflow-long-fsize.patch"))))
1746 (build-system gnu-build-system)
1747 ;; no inputs; bzip2 is not supported, since not compiled with BZ_NO_STDIO
1748 (arguments
1749 `(#:phases (modify-phases %standard-phases
1750 (delete 'configure)
1751 (replace 'build
1752 (lambda* (#:key make-flags #:allow-other-keys)
1753 (zero? (apply system* "make"
1754 `("-j" ,(number->string
1755 (parallel-job-count))
1756 ,@make-flags
1757 "generic_gcc"))))))
1758 #:make-flags (list "-f" "unix/Makefile"
1759 (string-append "prefix=" %output)
1760 (string-append "MANDIR=" %output "/share/man/man1"))))
1761 (home-page "http://www.info-zip.org/UnZip.html")
1762 (synopsis "Decompression and file extraction utility")
1763 (description
1764 "UnZip is an extraction utility for archives compressed in .zip format,
1765also called \"zipfiles\".
1766
1767UnZip lists, tests, or extracts files from a .zip archive. The default
1768behaviour (with no options) is to extract into the current directory, and
1769subdirectories below it, all files from the specified zipfile. UnZip
1770recreates the stored directory structure by default.")
1771 (license (license:non-copyleft "file://LICENSE"
1772 "See LICENSE in the distribution."))))
1773
1774(define-public zziplib
1775 (package
1776 (name "zziplib")
1777 (version "0.13.62")
1778 (source
1779 (origin
1780 (method url-fetch)
1781 (uri (string-append "mirror://sourceforge/zziplib/zziplib13/"
1782 version "/zziplib-"
1783 version ".tar.bz2"))
1784 (patches (search-patches "zziplib-CVE-2017-5974.patch"
1785 "zziplib-CVE-2017-5975.patch"
1786 "zziplib-CVE-2017-5976.patch"
1787 "zziplib-CVE-2017-5978.patch"
1788 "zziplib-CVE-2017-5979.patch"
1789 "zziplib-CVE-2017-5981.patch"))
1790 (sha256
1791 (base32
1792 "0nsjqxw017hiyp524p9316283jlf5piixc1091gkimhz38zh7f51"))))
1793 (build-system gnu-build-system)
1794 (inputs
1795 `(("zlib" ,zlib)))
1796 (native-inputs `(("perl" ,perl) ; for the documentation
1797 ("pkg-config" ,pkg-config)
1798 ;; for the documentation; Python 3 not supported,
1799 ;; http://forums.gentoo.org/viewtopic-t-863161-start-0.html
1800 ("python" ,python-2)
1801 ("zip" ,zip))) ; to create test files
1802 (arguments
1803 `(#:parallel-tests? #f)) ; since test files are created on the fly
1804 (home-page "http://zziplib.sourceforge.net/")
1805 (synopsis "Library for accessing zip files")
1806 (description
1807 "ZZipLib is a library based on zlib for accessing zip files.")
1808 (license license:lgpl2.0+)))
1809
1810(define-public perl-zip
1811 (package
1812 (name "perl-zip")
1813 (version "1.59")
1814 (source
1815 (origin
1816 (method url-fetch)
1817 (uri (string-append
1818 "mirror://cpan/authors/id/A/AD/ADAMK/Archive-Zip-"
1819 version ".tar.gz"))
1820 (sha256
1821 (base32
1822 "0m31qlppg65vh32pwxkwjby02q70abx49d2yk6vfd4585fqb27cx"))))
1823 (build-system perl-build-system)
1824 (synopsis "Provides an interface to ZIP archive files")
1825 (description "The Archive::Zip module allows a Perl program to create,
1826manipulate, read, and write Zip archive files.")
1827 (home-page "http://search.cpan.org/~adamk/Archive-Zip-1.30/")
1828 (license license:perl-license)))
06de4aaf
TF
1829
1830(define-public libzip
1831 (package
1832 (name "libzip")
77e62ee0 1833 (version "1.3.2")
06de4aaf
TF
1834 (source (origin
1835 (method url-fetch)
1836 (uri (string-append
8d6c7456 1837 "https://libzip.org/download/" name "-" version ".tar.xz"))
06de4aaf
TF
1838 (sha256
1839 (base32
77e62ee0 1840 "11g1hvm2bxa2v5plakfzcwyk5hb5fz4kgrkp38l0xhnv21888xv2"))))
06de4aaf
TF
1841 (native-inputs
1842 `(("perl" ,perl)))
1843 (inputs
1844 `(("zlib" ,zlib)))
1845 (build-system gnu-build-system)
8d6c7456 1846 (home-page "https://libzip.org")
06de4aaf
TF
1847 (synopsis "C library for reading, creating, and modifying zip archives")
1848 (description "Libzip is a C library for reading, creating, and modifying
1849zip archives. Files can be added from data buffers, files, or compressed data
1850copied directly from other zip archives. Changes made without closing the
1851archive can be reverted.")
1852 (license license:bsd-3)))
ef5c40aa
SR
1853
1854(define-public atool
1855 (package
1856 (name "atool")
1857 (version "0.39.0")
1858 (source
1859 (origin
1860 (method url-fetch)
1861 (uri (string-append "http://savannah.nongnu.org/download/atool/atool-"
1862 version ".tar.gz"))
1863 (sha256
1864 (base32
1865 "0fvhzip2v08jgnlfpyj6rapan39xlsl1ksgq4lp8gfsai2ah1xma"))))
1866 (build-system gnu-build-system)
1867 (arguments
1868 `(#:phases
1869 (modify-phases %standard-phases
1870 (add-after 'unpack 'embed-absolute-file-name
1871 (lambda* (#:key inputs #:allow-other-keys)
1872 (substitute* "atool"
1873 (("(^\\$::cfg_path_file.*= )'file'" _ pre)
1874 (string-append pre "'" (assoc-ref inputs "file")
1875 "/bin/file'")))
1876 #t)))))
1877 (inputs
1878 `(("perl" ,perl)
1879 ("file" ,file)))
1880 (home-page "http://www.nongnu.org/atool/")
1881 (synopsis "Universal tool to manage file archives of various types")
1882 (description "The main command is @command{aunpack} which extracts files
1883from an archive. The other commands provided are @command{apack} (to create
1884archives), @command{als} (to list files in archives), and @command{acat} (to
1885extract files to standard out). As @command{atool} invokes external programs
1886to handle the archives, not all commands may be supported for a certain type
1887of archives.")
1888 (license license:gpl2+)))
b44ecca6
P
1889
1890(define-public perl-archive-extract
1891 (package
1892 (name "perl-archive-extract")
1893 (version "0.80")
1894 (source
1895 (origin
1896 (method url-fetch)
1897 (uri (string-append "mirror://cpan/authors/id/B/BI/BINGOS/Archive-Extract-"
1898 version ".tar.gz"))
1899 (sha256
1900 (base32
1901 "1x15j1q6w6z8hqyqgap0lz4qbq2174wfhksy1fdd653ccbaw5jr5"))))
1902 (build-system perl-build-system)
1903 (home-page "http://search.cpan.org/dist/Archive-Extract/")
1904 (synopsis "Generic archive extracting mechanism")
1905 (description "It allows you to extract any archive file of the type .tar,
1906.tar.gz, .gz, .Z, tar.bz2, .tbz, .bz2, .zip, .xz,, .txz, .tar.xz or .lzma
1907without having to worry how it does so, or use different interfaces for each
1908type by using either Perl modules, or command-line tools on your system.")
1909 (license license:perl-license)))
b80027e5
JL
1910
1911(define-public java-tukaani-xz
1912 (package
1913 (name "java-tukaani-xz")
1914 (version "1.6")
1915 (source (origin
1916 (method url-fetch)
1917 (uri (string-append "https://tukaani.org/xz/xz-java-" version ".zip"))
1918 (sha256
1919 (base32
1920 "1z3p1ri1gvl07inxn0agx44ck8n7wrzfmvkz8nbq3njn8r9wba8x"))))
1921 (build-system ant-build-system)
1922 (arguments
1923 `(#:tests? #f; no tests
1924 #:phases
1925 (modify-phases %standard-phases
1926 (add-after 'unpack 'chdir
1927 (lambda _
1928 ;; Our build system enters the first directory in the archive, but
1929 ;; the package is not contained in a subdirectory
1930 (chdir "..")))
1931 (replace 'install
1932 (lambda* (#:key outputs #:allow-other-keys)
1933 ;; Do we want to install *Demo.jar?
1934 (install-file "build/jar/xz.jar"
1935 (string-append
1936 (assoc-ref outputs "out")
1937 "/share/java/xz.jar")))))))
1938 (native-inputs
1939 `(("unzip" ,unzip)))
1940 (home-page "https://tukaani.org")
1941 (synopsis "XZ in Java")
1942 (description "Tukaani-xz is an implementation of xz compression/decompression
1943algorithms in Java.")
1944 (license license:public-domain)))
34e8cf22
TGR
1945
1946(define-public lunzip
1947 (package
1948 (name "lunzip")
1949 (version "1.9")
1950 (source
1951 (origin
1952 (method url-fetch)
1953 (uri (string-append "http://download.savannah.gnu.org/releases/lzip/"
1954 name "/" name "-" version ".tar.gz"))
1955 (sha256
1956 (base32 "1ax3d9cp66z1qb9q7lfzg5bpx9630xrxgq9a5sw569wm0qqgpg2q"))))
1957 (build-system gnu-build-system)
1958 (arguments
1959 `(#:configure-flags
1960 (list "CC=gcc")))
1961 (home-page "http://www.nongnu.org/lzip/lunzip.html")
1962 (synopsis "Small, stand-alone lzip decompressor")
1963 (description
1964 "Lunzip is a decompressor for files in the lzip compression format (.lz),
1965written as a single small C tool with no dependencies. This makes it
1966well-suited to embedded and other systems without a C++ compiler, or for use in
1967applications such as software installers that need only to decompress files,
1968not compress them.
1969Lunzip is intended to be fully compatible with the regular lzip package.")
1970 (license (list license:bsd-2 ; carg_parser.[ch]
1971 license:gpl2+)))) ; everything else
5dca4c76
TGR
1972
1973(define-public clzip
1974 (package
1975 (name "clzip")
1976 (version "1.9")
1977 (source
1978 (origin
1979 (method url-fetch)
1980 (uri (string-append "http://download.savannah.gnu.org/releases/lzip/"
1981 name "/" name "-" version ".tar.gz"))
1982 (sha256
1983 (base32 "1brvsnpihzj81cf4wk2x5bnr2qldlq0wncpdbzxmzvxapm1cq2yc"))))
1984 (build-system gnu-build-system)
1985 (arguments
1986 `(#:configure-flags
1987 (list "CC=gcc")))
1988 (home-page "http://www.nongnu.org/lzip/clzip.html")
1989 (synopsis "Small, stand-alone lzip compressor and decompressor")
1990 (description
1991 "Clzip is a compressor and decompressor for files in the lzip compression
1992format (.lz), written as a single small C tool with no dependencies. This makes
1993it well-suited to embedded and other systems without a C++ compiler, or for use
1994in other applications like package managers.
1995Clzip is intended to be fully compatible with the regular lzip package.")
1996 (license (list license:bsd-2 ; carg_parser.[ch], lzd in clzip.texi
1997 license:gpl2+))))
2e3b1a92
TGR
1998
1999(define-public lzlib
2000 (package
2001 (name "lzlib")
2002 (version "1.9")
2003 (source
2004 (origin
2005 (method url-fetch)
2006 (uri (string-append "http://download.savannah.gnu.org/releases/lzip/"
2007 name "/" name "-" version ".tar.gz"))
2008 (sha256
2009 (base32 "13mssf3hrcnmd4ijbqnxfk0zgj1q5lvpxxkm1hmrbl1h73czhwi4"))))
2010 (build-system gnu-build-system)
2011 ;; The included minilzip binary is only ~16 smaller than the ‘real’ lzip.
2012 ;; It's used during the test suite, but don't be tempted to install it.
2013 (arguments
2014 `(#:configure-flags
2015 (list "CC=gcc"
2016 "--enable-shared"))) ; only static (.a) is built by default
2017 (home-page "http://www.nongnu.org/lzip/lzlib.html")
2018 (synopsis "Lzip data compression C library")
2019 (description
2020 "Lzlib is a C library for in-memory LZMA compression and decompression in
2021the lzip format. It supports integrity checking of the decompressed data, and
2022all functions are thread-safe. The library should never crash, even in case of
2023corrupted input.")
2024 (license (list license:bsd-2 ; the library itself
2025 license:gpl2+)))) ; main.c (i.e. minilzip used by tests)
8c4ca853
TGR
2026
2027(define-public plzip
2028 (package
2029 (name "plzip")
2030 (version "1.6")
2031 (source
2032 (origin
2033 (method url-fetch)
2034 (uri (string-append "http://download.savannah.gnu.org/releases/lzip/"
2035 name "/" name "-" version ".tar.gz"))
2036 (sha256
2037 (base32 "0z2cs6vn4xl65wakd013xl3sdfpg8dr0cvcjwc2slh8y9bz7j7ax"))))
2038 (build-system gnu-build-system)
2039 (inputs
2040 `(("lzlib" ,lzlib)))
2041 (home-page "http://www.nongnu.org/lzip/plzip.html")
2042 (synopsis "Parallel lossless data compressor for the lzip format")
2043 (description
2044 "Plzip is a massively parallel (multi-threaded) lossless data compressor
2045and decompressor that uses the lzip file format (.lz). Files produced by plzip
2046are fully compatible with lzip and can be rescued with lziprecover.
2047On multiprocessor machines, plzip can compress and decompress large files much
2048faster than lzip, at the cost of a slightly reduced compression ratio (0.4% to
20492%). The number of usable threads is limited by file size: on files of only a
2050few MiB, plzip is no faster than lzip.
2051Files that were compressed with regular lzip will also not be decompressed
2052faster by plzip, unless the @code{-b} option was used: lzip usually produces
2053single-member files which can't be decompressed in parallel.")
2054 (license (list license:bsd-2 ; arg_parser.{cc,h}
2055 license:gpl2+)))) ; everything else