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