gnu: verilator: Update to 4.110.
[jackhill/guix/guix.git] / gnu / packages / compression.scm
CommitLineData
233e7676 1;;; GNU Guix --- Functional package management for GNU
31dcc272 2;;; Copyright © 2012, 2013, 2014, 2015, 2017, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
b357faac 3;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
144cc3c4 4;;; Copyright © 2014, 2015, 2018 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>
9a2fcb63 7;;; Copyright © 2015, 2016, 2017, 2018, 2020 Ricardo Wurmus <rekado@elephly.net>
77737e03 8;;; Copyright © 2015, 2017, 2018 Leo Famulari <leo@famulari.name>
820dc3f5 9;;; Copyright © 2015 Jeff Mickey <j@codemac.net>
d84ddbb9 10;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
23f3cbb8 11;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
3fd4b90d 12;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
0eacdd46 13;;; Copyright © 2016–2021 Tobias Geerinckx-Rice <me@tobias.gr>
e4c2136d 14;;; Copyright © 2016 David Craven <david@craven.ch>
3480ceb1 15;;; Copyright © 2016, 2019, 2020 Kei Kebreau <kkebreau@posteo.net>
8e98f750 16;;; Copyright © 2016, 2018, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
3c986a7d 17;;; Copyright © 2017 Nikita <nikita@n0.is>
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>
e294c05e 23;;; Copyright © 2018 Rutger Helling <rhelling@mykolab.com>
2ed0ef2f 24;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com>
8ff5c735 25;;; Copyright © 2018, 2019 Pierre Neidhardt <mail@ambrevar.xyz>
09debcf5 26;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
9720104c 27;;; Copyright © 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
1ac624cd 28;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
d2b237d0 29;;; Copyright © 2020 Arun Isaac <arunisaac@systemreboot.net>
910bf1f7 30;;; Copyright © 2020 Lars-Dominik Braun <lars@6xq.net>
ff43f128 31;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net>
9d5ed931 32;;; Copyright © 2020 Léo Le Bouter <lle-bout@zaclys.net>
e7195e83 33;;; Copyright © 2021 Antoine Côté <antoine.cote@posteo.net>
51697aab 34;;; Copyright © 2021 Vincent Legoll <vincent.legoll@gmail.com>
a268f085 35;;;
233e7676 36;;; This file is part of GNU Guix.
a268f085 37;;;
233e7676 38;;; GNU Guix is free software; you can redistribute it and/or modify it
a268f085
LC
39;;; under the terms of the GNU General Public License as published by
40;;; the Free Software Foundation; either version 3 of the License, or (at
41;;; your option) any later version.
42;;;
233e7676 43;;; GNU Guix is distributed in the hope that it will be useful, but
a268f085
LC
44;;; WITHOUT ANY WARRANTY; without even the implied warranty of
45;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
46;;; GNU General Public License for more details.
47;;;
48;;; You should have received a copy of the GNU General Public License
233e7676 49;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
a268f085 50
1ffa7090 51(define-module (gnu packages compression)
b5b73a82 52 #:use-module ((guix licenses) #:prefix license:)
21b2ec4d 53 #:use-module (guix utils)
a268f085 54 #:use-module (guix packages)
87f5d366 55 #:use-module (guix download)
646898b3 56 #:use-module (guix git-download)
9e6ada8f 57 #:use-module (guix build-system cmake)
0745e28d 58 #:use-module (guix build-system glib-or-gtk)
b357faac 59 #:use-module (guix build-system gnu)
910bf1f7 60 #:use-module (guix build-system go)
9d5ed931 61 #:use-module (guix build-system meson)
d2b237d0 62 #:use-module (guix build-system python)
8ff5c735 63 #:use-module (guix build-system trivial)
e99dd67a 64 #:use-module (gnu packages)
389eb3fa 65 #:use-module (gnu packages assembly)
69d9792a 66 #:use-module (gnu packages autotools)
23f3cbb8 67 #:use-module (gnu packages backup)
73f542c3 68 #:use-module (gnu packages base)
e294c05e 69 #:use-module (gnu packages boost)
0f03c531 70 #:use-module (gnu packages check)
9e6ada8f 71 #:use-module (gnu packages curl)
09debcf5 72 #:use-module (gnu packages documentation)
ef5c40aa 73 #:use-module (gnu packages file)
0745e28d
RG
74 #:use-module (gnu packages gettext)
75 #:use-module (gnu packages glib)
76 #:use-module (gnu packages gnome)
9d5ed931 77 #:use-module (gnu packages gnupg)
0745e28d 78 #:use-module (gnu packages gtk)
9d5ed931 79 #:use-module (gnu packages man)
9869bb12 80 #:use-module (gnu packages maths)
646898b3 81 #:use-module (gnu packages perl)
23f3cbb8 82 #:use-module (gnu packages pkg-config)
1ae60db8 83 #:use-module (gnu packages python)
09debcf5 84 #:use-module (gnu packages qt)
9e6ada8f 85 #:use-module (gnu packages tls)
82aa2a28 86 #:use-module (gnu packages valgrind)
9d5ed931 87 #:use-module (gnu packages version-control)
0745e28d 88 #:use-module (gnu packages xml)
36df995c 89 #:use-module (ice-9 match)
646898b3 90 #:use-module ((srfi srfi-1) #:select (last)))
a268f085 91
6a92093d
LC
92(define-public zlib
93 (package
94 (name "zlib")
2b8bea03 95 (version "1.2.11")
6a92093d
LC
96 (source
97 (origin
87f5d366 98 (method url-fetch)
a67f97fe
CR
99 (uri (list (string-append "http://zlib.net/zlib-"
100 version ".tar.gz")
b2859a4f
LC
101 (string-append "mirror://sourceforge/libpng/zlib/"
102 version "/zlib-" version ".tar.gz")))
6a92093d
LC
103 (sha256
104 (base32
2b8bea03 105 "18dighcs333gsvajvvgqp8l4cx7h1x7yx9gd5xacnk80spyykrf3"))))
6a92093d 106 (build-system gnu-build-system)
b90289da 107 (outputs '("out" "static"))
6a92093d 108 (arguments
6cd00453
EF
109 `(#:phases
110 (modify-phases %standard-phases
111 (replace 'configure
112 (lambda* (#:key outputs #:allow-other-keys)
113 ;; Zlib's home-made `configure' fails when passed
114 ;; extra flags like `--enable-fast-install', so we need to
115 ;; invoke it with just what it understand.
116 (let ((out (assoc-ref outputs "out")))
117 ;; 'configure' doesn't understand '--host'.
118 ,@(if (%current-target-system)
119 `((setenv "CHOST" ,(%current-target-system)))
120 '())
144cc3c4 121 (invoke "./configure"
b90289da
MB
122 (string-append "--prefix=" out)))))
123 (add-after 'install 'move-static-library
124 (lambda* (#:key outputs #:allow-other-keys)
125 (let ((out (assoc-ref outputs "out"))
126 (static (assoc-ref outputs "static")))
127 (with-directory-excursion (string-append out "/lib")
128 (install-file "libz.a" (string-append static "/lib"))
129 (delete-file "libz.a")
130 #t)))))))
7f1773ea 131 (home-page "https://zlib.net/")
35b9e423 132 (synopsis "Compression library")
6a92093d
LC
133 (description
134 "zlib is designed to be a free, general-purpose, legally unencumbered --
135that is, not covered by any patents -- lossless data-compression library for
136use on virtually any computer hardware and operating system. The zlib data
35b9e423 137format is itself portable across platforms. Unlike the LZW compression method
6a92093d
LC
138used in Unix compress(1) and in the GIF image format, the compression method
139currently used in zlib essentially never expands the data. (LZW can double or
140triple the file size in extreme cases.) zlib's memory footprint is also
141independent of the input data and can be reduced, if necessary, at some cost
142in compression.")
4a44e743 143 (license license:zlib)))
6a92093d 144
8298df96
MB
145(define-public minizip
146 (package
147 (name "minizip")
148 (version (package-version zlib))
149 (source (package-source zlib))
150 (build-system gnu-build-system)
151 (arguments
152 `(#:phases
153 (modify-phases %standard-phases
154 (add-after 'unpack 'enter-source
c11ac62d
LC
155 (lambda _ (chdir "contrib/minizip") #t))
156 (add-after 'install 'remove-crypt-h
157 (lambda* (#:key outputs #:allow-other-keys)
158 ;; Remove <minizip/crypt.h> because it interferes with libc's
159 ;; <crypt.h> given that 'minizip.pc' says "-I…/include/minizip".
160 ;; Fedora does the same:
161 ;; <https://src.fedoraproject.org/rpms/zlib/c/4d2785ec3116947872f6f32dc4104e6d36d8a7a4?branch=master>.
162 (let ((out (assoc-ref outputs "out")))
163 (delete-file (string-append out "/include/minizip/crypt.h"))
164 #t))))))
8298df96
MB
165 (native-inputs
166 `(("autoconf" ,autoconf)
167 ("automake" ,automake)
168 ("libtool" ,libtool)))
169 (propagated-inputs `(("zlib" ,zlib)))
170 (home-page (package-home-page zlib))
171 (synopsis "Zip Compression library")
172 (description
173 "Minizip is a minimalistic library that supports compressing,
174extracting and viewing ZIP archives. This version is extracted from
175the @code{zlib} source.")
176 (license (package-license zlib))))
177
ee97be9f
RW
178(define-public fastjar
179 (package
180 (name "fastjar")
181 (version "0.98")
182 (source (origin
183 (method url-fetch)
184 (uri (string-append "mirror://savannah/fastjar/fastjar-"
185 version ".tar.gz"))
186 (sha256
187 (base32
188 "0iginbz2m15hcsa3x4y7v3mhk54gr1r7m3ghx0pg4n46vv2snmpi"))))
189 (build-system gnu-build-system)
190 (inputs `(("zlib" ,zlib)))
340978d7 191 (home-page "https://savannah.nongnu.org/projects/fastjar")
ee97be9f
RW
192 (synopsis "Replacement for Sun's 'jar' utility")
193 (description
36a4366d
EF
194 "FastJar is an attempt to create a much faster replacement for Sun's
195@code{jar} utility. Instead of being written in Java, FastJar is written in C.")
ee97be9f
RW
196 (license license:gpl2+)))
197
58593975
RW
198(define-public libtar
199 (package
200 (name "libtar")
89d80159 201 (version "1.2.20")
58593975
RW
202 (source (origin
203 (method url-fetch)
89d80159
EF
204 (uri (list
205 (string-append
206 "ftp://ftp.feep.net/pub/software/libtar/libtar-"
207 version ".tar.gz")
208 (string-append
209 "mirror://debian/pool/main/libt/libtar/libtar_"
210 version ".orig.tar.gz")))
58593975
RW
211 (sha256
212 (base32
e99dd67a
EF
213 "02cihzl77ia0dcz7z2cga2412vyhhs5pa2355q4wpwbyga2lrwjh"))
214 (patches (search-patches "libtar-CVE-2013-4420.patch"))))
58593975 215 (build-system gnu-build-system)
112fcafb 216 (arguments `(#:tests? #f)) ; no "check" target
89d80159
EF
217 (native-inputs
218 `(("autoconf" ,autoconf)
219 ("automake" ,automake)
220 ("libtool" ,libtool)))
221 (inputs
222 `(("zlib" ,zlib)))
58593975
RW
223 (synopsis "C library for manipulating POSIX tar files")
224 (description
225 "libtar is a C library for manipulating POSIX tar files. It handles
226adding and extracting files to/from a tar archive.")
89d80159 227 (home-page "https://repo.or.cz/libtar.git")
58593975
RW
228 (license license:bsd-3)))
229
a268f085
LC
230(define-public gzip
231 (package
232 (name "gzip")
07c95566 233 (version "1.10")
a268f085 234 (source (origin
87f5d366 235 (method url-fetch)
0db342a5 236 (uri (string-append "mirror://gnu/gzip/gzip-"
28181faf 237 version ".tar.xz"))
a268f085
LC
238 (sha256
239 (base32
07c95566 240 "1h6p374d3j8d4cdfydzls021xa2yby8myc0h8d6m8bc7k6ncq9c4"))))
a268f085 241 (build-system gnu-build-system)
f50d2669 242 (synopsis "General file (de)compression (using lzw)")
a268f085
LC
243 (arguments
244 ;; FIXME: The test suite wants `less', and optionally Perl.
48623f5b
RW
245 '(#:tests? #f
246 #:phases
247 (modify-phases %standard-phases
c7b87eed
MB
248 (add-after 'unpack 'patch-for-glibc-2.28
249 (lambda _
250 ;; Adjust the bundled gnulib to work with glibc 2.28. See e.g.
251 ;; "m4-gnulib-libio.patch". This is a phase rather than patch
252 ;; or snippet to work around <https://bugs.gnu.org/32347>.
253 (substitute* (find-files "lib" "\\.c$")
254 (("#if defined _IO_ftrylockfile")
255 "#if defined _IO_EOF_SEEN"))
256 (substitute* "lib/stdio-impl.h"
257 (("^/\\* BSD stdio derived implementations")
258 (string-append "#if !defined _IO_IN_BACKUP && defined _IO_EOF_SEEN\n"
259 "# define _IO_IN_BACKUP 0x100\n"
260 "#endif\n\n"
261 "/* BSD stdio derived implementations")))
262 #t))
48623f5b
RW
263 (add-after 'unpack 'use-absolute-name-of-gzip
264 (lambda* (#:key outputs #:allow-other-keys)
265 (substitute* "gunzip.in"
266 (("exec gzip")
267 (string-append "exec " (assoc-ref outputs "out")
268 "/bin/gzip")))
269 #t)))))
a268f085 270 (description
79c311b8
LC
271 "GNU Gzip provides data compression and decompression utilities; the
272typical extension is \".gz\". Unlike the \"zip\" format, it compresses a single
273file; as a result, it is often used in conjunction with \"tar\", resulting in
274\".tar.gz\" or \".tgz\", etc.")
4a44e743 275 (license license:gpl3+)
6fd52309 276 (home-page "https://www.gnu.org/software/gzip/")))
a268f085
LC
277
278(define-public bzip2
03bc86b8
CB
279 (package
280 (name "bzip2")
b9a3654e 281 (version "1.0.8")
03bc86b8
CB
282 (source (origin
283 (method url-fetch)
b9a3654e
MB
284 (uri (string-append "https://sourceware.org/pub/bzip2/bzip2-"
285 version ".tar.gz"))
03bc86b8
CB
286 (sha256
287 (base32
b9a3654e 288 "0s92986cv0p692icqlw1j42y9nld8zd83qwhzbqd61p1dqbh6nmb"))))
03bc86b8
CB
289 (build-system gnu-build-system)
290 (arguments
291 `(#:modules ((guix build gnu-build-system)
292 (guix build utils)
5212c52c 293 (ice-9 ftw)
03bc86b8
CB
294 (srfi srfi-1))
295 #:phases
296 (modify-phases %standard-phases
8e98f750
MB
297 (add-after 'set-paths 'hide-input-bzip2
298 (lambda* (#:key inputs #:allow-other-keys)
299 (let ((bzip2 (assoc-ref inputs "bzip2")))
300 (if bzip2
301 ;; Prevent the build system from retaining a reference to
302 ;; BZIP2 from INPUTS.
303 (begin
304 (setenv "LIBRARY_PATH"
305 (string-join (delete (string-append bzip2 "/lib")
306 (string-split (getenv "LIBRARY_PATH")
307 #\:))
308 ":"))
309 (format #t "environment variable `LIBRARY_PATH' set to `~a'~%"
310 (getenv "LIBRARY_PATH")))
311 (format #t "no bzip2 found, nothing done~%"))
312 #t)))
03bc86b8
CB
313 (replace 'configure
314 (lambda* (#:key target #:allow-other-keys)
3158bc04
MW
315 (when ,(%current-target-system)
316 ;; Cross-compilation: use the cross tools.
317 (substitute* (find-files "." "Makefile")
318 (("CC=.*$")
319 (string-append "CC = " target "-gcc\n"))
320 (("AR=.*$")
321 (string-append "AR = " target "-ar\n"))
322 (("RANLIB=.*$")
323 (string-append "RANLIB = " target "-ranlib\n"))
324 (("^all:(.*)test" _ prerequisites)
325 ;; Remove 'all' -> 'test' dependency.
326 (string-append "all:" prerequisites "\n"))))
327 #t))
03bc86b8
CB
328 (add-before 'build 'build-shared-lib
329 (lambda* (#:key inputs #:allow-other-keys)
330 (patch-makefile-SHELL "Makefile-libbz2_so")
3158bc04 331 (invoke "make" "-f" "Makefile-libbz2_so")))
03bc86b8
CB
332 (add-after 'install 'install-shared-lib
333 (lambda* (#:key outputs #:allow-other-keys)
2b786f67
MB
334 ;; The Makefile above does not have an 'install' target, nor does
335 ;; it create all the (un)versioned symlinks, so we handle it here.
03bc86b8 336 (let* ((out (assoc-ref outputs "out"))
2b786f67 337 (libdir (string-append out "/lib"))
5212c52c
MB
338 (soname "libbz2.so")
339 ;; Locate the built library (e.g. "libbz2.so.1.0.6").
340 (lib (car (scandir "."
341 (lambda (file)
342 (and (string-prefix? soname file)
343 (eq? 'regular
344 (stat:type (lstat file))))))))
345 (soversion (string-drop lib (+ 1 (string-length soname)))))
2b786f67
MB
346 (install-file lib libdir)
347 (with-directory-excursion libdir
348 ;; Create symlinks libbz2.so.1 -> libbz2.so.1.0, etc.
5212c52c 349 (let loop ((base soname)
2b786f67
MB
350 (numbers (string-split soversion #\.)))
351 (unless (null? numbers)
352 (let ((so-file (string-append base "." (car numbers))))
353 (symlink so-file base)
354 (loop so-file (cdr numbers))))))
355 #t)))
45719c1d
MB
356 (add-after 'install-shared-lib 'move-static-lib
357 (lambda* (#:key outputs #:allow-other-keys)
358 (let ((out (assoc-ref outputs "out"))
359 (static (assoc-ref outputs "static")))
360 (with-directory-excursion (string-append out "/lib")
361 (install-file "libbz2.a" (string-append static "/lib"))
362 (delete-file "libbz2.a")
363 #t))))
e7ee50f2
CB
364 (add-after 'install-shared-lib 'patch-scripts
365 (lambda* (#:key outputs inputs #:allow-other-keys)
366 (let* ((out (assoc-ref outputs "out")))
367 (substitute* (string-append out "/bin/bzdiff")
368 (("/bin/rm") "rm")))
03bc86b8 369 #t)))
ab4fab19 370
03bc86b8
CB
371 #:make-flags (list (string-append "PREFIX="
372 (assoc-ref %outputs "out")))
ab4fab19 373
03bc86b8
CB
374 ;; Don't attempt to run the tests when cross-compiling.
375 ,@(if (%current-target-system)
376 '(#:tests? #f)
377 '())))
45719c1d 378 (outputs '("out" "static"))
03bc86b8
CB
379 (synopsis "High-quality data compression program")
380 (description
381 "bzip2 is a freely available, patent free (see below), high-quality data
a268f085
LC
382compressor. It typically compresses files to within 10% to 15% of the best
383available techniques (the PPM family of statistical compressors), whilst
384being around twice as fast at compression and six times faster at
385decompression.")
03bc86b8
CB
386 (license (license:non-copyleft "file://LICENSE"
387 "See LICENSE in the distribution."))
7598b678 388 (home-page "https://web.archive.org/web/20180801004107/http://www.bzip.org/")))
a268f085 389
669b7b83 390(define-public lbzip2
7bb7bb5c
TGR
391 ;; The last 2.5 release is 4 years behind the newest commit (from 2018) and
392 ;; may create files that can't even be decompressed by newer bzip2 versions.
393 (let ((commit "b6dc48a7b9bfe6b340ed1f6d72133608ad57144b")
394 (revision "0"))
395 (package
396 (name "lbzip2")
397 (version (git-version "2.5" revision commit))
398 (source
399 (origin
400 (method git-fetch)
401 (uri (git-reference
402 (url "https://github.com/kjn/lbzip2")
403 (commit commit)))
404 (sha256
405 (base32 "140xp00dmjsr6c3dwb4dwf0pzlgf159igri321inbinsjiclkngy"))
406 (file-name (git-file-name name version))))
407 (build-system gnu-build-system)
408 (arguments
409 `(#:phases
410 (modify-phases %standard-phases
411 (add-after 'unpack 'unpack-gnulib
412 (lambda* (#:key inputs #:allow-other-keys)
413 (let ((gnulib (assoc-ref inputs "gnulib")))
414 (copy-recursively gnulib "lib")
415 (setenv "PATH" (string-append "lib:" (getenv "PATH")))
416 #t)))
417 (delete 'bootstrap) ; gnulib still has unpatched shebangs
418 (add-after 'patch-source-shebangs 'bootstrap
419 (lambda _
420 (invoke "sh" "build-aux/autogen.sh")
421 #t)))))
422 (native-inputs
423 `(("autoconf" ,autoconf)
424 ("automake" ,automake)
425 ("gnulib"
426 ,(let ((commit "2d431ac35c4943a3655c07ba91870d2323321b43"))
427 (origin
428 (method git-fetch)
429 (uri (git-reference
430 (url "git://git.savannah.gnu.org/gnulib.git")
431 (commit commit)))
432 (sha256
433 (base32 "1f0xr4w89bqvhzsfcflcagdixidrk41k00k7kpr91w9lazfis4kf"))
434 (file-name (git-file-name "gnulib" commit)))))
435 ("perl" ,perl)))
436 (synopsis "Parallel bzip2 compression utility")
437 (description
438 "lbzip2 is a multi-threaded compression utility with support for the
669b7b83
RW
439bzip2 compressed file format. lbzip2 can process standard bz2 files in
440parallel. It uses POSIX threading model (pthreads), which allows it to take
441full advantage of symmetric multiprocessing (SMP) systems. It has been proven
442to scale linearly, even to over one hundred processor cores. lbzip2 is fully
443compatible with bzip2 – both at file format and command line level.")
7bb7bb5c
TGR
444 ;; lbzip2.org now looks fishy. There is no source code to be found.
445 ;; Reported upstream: <https://github.com/kjn/lbzip2/issues/26>.
446 (home-page "https://github.com/kjn/lbzip2")
447 (license license:gpl3+))))
669b7b83 448
5d47eab0
EF
449(define-public pbzip2
450 (package
451 (name "pbzip2")
bf867709 452 (version "1.1.13")
5d47eab0
EF
453 (source (origin
454 (method url-fetch)
21b2ec4d
EF
455 (uri (string-append "https://launchpad.net/pbzip2/"
456 (version-major+minor version) "/" version
457 "/+download/" name "-" version ".tar.gz"))
5d47eab0
EF
458 (sha256
459 (base32
bf867709 460 "1rnvgcdixjzbrmcr1nv9b6ccrjfrhryaj7jwz28yxxv6lam3xlcg"))))
5d47eab0
EF
461 (build-system gnu-build-system)
462 (inputs
b3546174 463 `(("bzip2" ,bzip2)))
5d47eab0 464 (arguments
bf867709 465 `(#:tests? #f ; no tests
5d47eab0 466 #:phases (modify-phases %standard-phases
bf867709 467 (delete 'configure)) ; no configure script
21b2ec4d 468 #:make-flags (list (string-append "PREFIX=" %output))))
1ac624cd
BH
469 (home-page (string-append "https://web.archive.org/web/20180412020219/"
470 "http://compression.ca/pbzip2/"))
5d47eab0
EF
471 (synopsis "Parallel bzip2 implementation")
472 (description
473 "Pbzip2 is a parallel implementation of the bzip2 block-sorting file
474compressor that uses pthreads and achieves near-linear speedup on SMP machines.
21b2ec4d 475The output of this version is fully compatible with bzip2 v1.0.2 (i.e. anything
5d47eab0
EF
476compressed with pbzip2 can be decompressed with bzip2).")
477 (license (license:non-copyleft "file://COPYING"
21b2ec4d 478 "See COPYING in the distribution."))))
5d47eab0 479
a268f085
LC
480(define-public xz
481 (package
482 (name "xz")
957aac76 483 (version "5.2.4")
a268f085 484 (source (origin
87f5d366 485 (method url-fetch)
52d76b64
LC
486 (uri (list (string-append "http://tukaani.org/xz/xz-" version
487 ".tar.gz")
488 (string-append "http://multiprecision.org/guix/xz-"
489 version ".tar.gz")))
a268f085
LC
490 (sha256
491 (base32
957aac76 492 "0ibi2zsfaz6l756spjwc5rayf4ckgc9hwmy8qinppcyk4svz64mm"))))
a268f085 493 (build-system gnu-build-system)
5b2da2a6
MB
494 (arguments
495 `(#:phases
496 (modify-phases %standard-phases
497 (add-after 'install 'move-static-lib
498 (lambda* (#:key outputs #:allow-other-keys)
499 (let ((out (assoc-ref outputs "out"))
500 (static (assoc-ref outputs "static")))
501 (mkdir-p (string-append static "/lib"))
502 (rename-file (string-append out "/lib/liblzma.a")
503 (string-append static "/lib/liblzma.a"))
504 ;; Remove reference to the static library from the .la file
505 ;; so Libtool does the right thing when both the shared and
506 ;; static library is available.
507 (substitute* (string-append out "/lib/liblzma.la")
508 (("^old_library='liblzma.a'") "old_library=''"))
509 #t))))))
510 (outputs '("out" "static"))
35b9e423 511 (synopsis "General-purpose data compression")
a268f085
LC
512 (description
513 "XZ Utils is free general-purpose data compression software with high
514compression ratio. XZ Utils were written for POSIX-like systems, but also
515work on some not-so-POSIX systems. XZ Utils are the successor to LZMA Utils.
516
517The core of the XZ Utils compression code is based on LZMA SDK, but it has
518been modified quite a lot to be suitable for XZ Utils. The primary
519compression algorithm is currently LZMA2, which is used inside the .xz
520container format. With typical files, XZ Utils create 30 % smaller output
521than gzip and 15 % smaller output than bzip2.")
38bbd61d 522 (license (list license:gpl2+ license:lgpl2.1+)) ; bits of both
58891850 523 (home-page "https://tukaani.org/xz/")))
c6eac761 524
0dcea35d
KK
525(define-public lhasa
526 (package
527 (name "lhasa")
528 (version "0.3.1")
529 (source (origin
530 (method url-fetch)
531 (uri (string-append
532 "https://github.com/fragglet/lhasa/releases/download/v"
533 version "/lhasa-" version ".tar.gz"))
534 (sha256
535 (base32
536 "092zi9av18ma20c6h9448k0bapvx2plnp292741dvfd9hmgqxc1z"))))
537 (build-system gnu-build-system)
538 (arguments
539 '(#:phases
540 (modify-phases %standard-phases
541 (add-before 'check 'set-up-test-environment
542 (lambda* (#:key inputs #:allow-other-keys)
543 (setenv "TZDIR" (string-append (assoc-ref inputs "tzdata")
544 "/share/zoneinfo"))
545 #t)))))
546 (native-inputs
5a8ef3c1 547 `(("tzdata" ,tzdata-for-tests)))
0dcea35d
KK
548 (home-page "https://fragglet.github.com/lhasa/")
549 (synopsis "LHA archive decompressor")
550 (description "Lhasa is a replacement for the Unix LHA tool, for
551decompressing .lzh (LHA / LHarc) and .lzs (LArc) archives. The backend for the
552tool is a library, so that it can be reused for other purposes. Lhasa aims to
553be compatible with as many types of lzh/lzs archives as possible. It also aims
554to generate the same output as the (non-free) Unix LHA tool, so that it will
555act as a free drop-in replacement.")
556 (license license:isc)))
557
c6eac761
LC
558(define-public lzo
559 (package
560 (name "lzo")
7276eca4 561 (version "2.10")
c6eac761
LC
562 (source
563 (origin
564 (method url-fetch)
565 (uri (string-append "http://www.oberhumer.com/opensource/lzo/download/lzo-"
566 version ".tar.gz"))
567 (sha256
568 (base32
7276eca4 569 "0wm04519pd3g8hqpjqhfr72q8qmbiwqaxcs3cndny9h86aa95y60"))))
c6eac761 570 (build-system gnu-build-system)
165fd9d5 571 (arguments '(#:configure-flags '("--enable-shared")))
c6eac761
LC
572 (home-page "http://www.oberhumer.com/opensource/lzo")
573 (synopsis
e881752c 574 "Data compression library suitable for real-time data de-/compression")
c6eac761
LC
575 (description
576 "LZO is a data compression library which is suitable for data
577de-/compression in real-time. This means it favours speed over
578compression ratio.
579
580LZO is written in ANSI C. Both the source code and the compressed data
581format are designed to be portable across platforms.")
4a44e743 582 (license license:gpl2+)))
0f323dad 583
a9f48ff0
EB
584(define-public lzop
585 (package
586 (name "lzop")
89d159fe 587 (version "1.04")
a9f48ff0
EB
588 (source
589 (origin
590 (method url-fetch)
591 (uri (string-append "http://www.lzop.org/download/lzop-"
592 version ".tar.gz"))
593 (sha256
594 (base32
89d159fe 595 "0h9gb8q7y54m9mvy3jvsmxf21yx8fc3ylzh418hgbbv0i8mbcwky"))))
a9f48ff0
EB
596 (build-system gnu-build-system)
597 (inputs `(("lzo" ,lzo)))
6f465a51 598 (home-page "https://www.lzop.org/")
a9f48ff0
EB
599 (synopsis "Compress or expand files")
600 (description
601 "Lzop is a file compressor which is very similar to gzip. Lzop uses the
602LZO data compression library for compression services, and its main advantages
603over gzip are much higher compression and decompression speed (at the cost of
604some compression ratio).")
605 (license license:gpl2+)))
606
0f323dad
LC
607(define-public lzip
608 (package
609 (name "lzip")
43d9ed77 610 (version "1.21")
0f323dad
LC
611 (source (origin
612 (method url-fetch)
613 (uri (string-append "mirror://savannah/lzip/lzip-"
614 version ".tar.gz"))
615 (sha256
616 (base32
43d9ed77 617 "12qdcw5k1cx77brv9yxi1h4dzwibhfmdpigrj43nfk8nscwm12z4"))))
0f323dad 618 (build-system gnu-build-system)
340978d7 619 (home-page "https://www.nongnu.org/lzip/lzip.html")
0f323dad
LC
620 (synopsis "Lossless data compressor based on the LZMA algorithm")
621 (description
622 "Lzip is a lossless data compressor with a user interface similar to the
623one of gzip or bzip2. Lzip decompresses almost as fast as gzip and compresses
0963e3e4 624more than bzip2, which makes it well-suited for software distribution and data
0f323dad
LC
625archiving. Lzip is a clean implementation of the LZMA algorithm.")
626 (license license:gpl3+)))
b357faac 627
9d9fc399
TGR
628(define-public lziprecover
629 (package
630 (name "lziprecover")
0eacdd46 631 (version "1.22")
9d9fc399
TGR
632 (source (origin
633 (method url-fetch)
f6145bb6
TGR
634 (uri (string-append "mirror://savannah/lzip/lziprecover/"
635 "lziprecover-" version ".tar.gz"))
9d9fc399
TGR
636 (sha256
637 (base32
0eacdd46 638 "0qh8dnhr5rly2k9dnx43qqynqwqzi5kfb15pyd29qwppfl4qm5gx"))))
9d9fc399 639 (build-system gnu-build-system)
340978d7 640 (home-page "https://www.nongnu.org/lzip/lziprecover.html")
9d9fc399
TGR
641 (synopsis "Recover and decompress data from damaged lzip files")
642 (description
643 "Lziprecover is a data recovery tool and decompressor for files in the lzip
644compressed data format (.lz). It can test the integrity of lzip files, extract
645data from damaged ones, and repair most files with small errors (up to one
646single-byte error per member) entirely.
647
648Lziprecover is not a replacement for regular backups, but a last line of defence
649when even the backups are corrupt. It can recover files by merging the good
650parts of two or more damaged copies, such as can be easily produced by running
651@command{ddrescue} on a failing device.
652
653This package also includes @command{unzcrash}, a tool to test the robustness of
654decompressors when faced with corrupted input.")
655 (license (list license:bsd-2 ; arg_parser.{cc,h}
656 license:gpl2+)))) ; everything else
657
b357faac
AE
658(define-public sharutils
659 (package
660 (name "sharutils")
9a59ce24 661 (version "4.15.2")
b357faac
AE
662 (source
663 (origin
664 (method url-fetch)
665 (uri (string-append "mirror://gnu/sharutils/sharutils-"
666 version ".tar.xz"))
d0ee11b2 667 (patches (search-patches "sharutils-CVE-2018-1000097.patch"))
b357faac
AE
668 (sha256
669 (base32
b50d58b3 670 "16isapn8f39lnffc3dp4dan05b7x6mnc76v6q5nn8ysxvvvwy19b"))
211db9ca
EF
671 (modules '((guix build utils)))
672 (snippet
673 '(begin
674 (substitute* (find-files "lib" "\\.c$")
675 (("#if defined _IO_ftrylockfile")
676 "#if defined _IO_EOF_SEEN"))
677 (substitute* "lib/stdio-impl.h"
678 (("^/\\* BSD stdio derived implementations")
679 (string-append "#if !defined _IO_IN_BACKUP && defined _IO_EOF_SEEN\n"
680 "# define _IO_IN_BACKUP 0x100\n"
681 "#endif\n\n"
682 "/* BSD stdio derived implementations")))
683 #t))))
b357faac
AE
684 (build-system gnu-build-system)
685 (inputs
686 `(("which" ,which)))
687 (arguments
688 `(#:phases
dc1d3cde
KK
689 (modify-phases %standard-phases
690 (add-after 'patch-source-shebangs 'unpatch-source-shebang
691 ;; revert the patch-shebang phase on a script which is
692 ;; in fact test data
693 (lambda _
694 (substitute* "tests/shar-1.ok"
695 (((which "sh")) "/bin/sh"))
696 #t)))))
6fd52309 697 (home-page "https://www.gnu.org/software/sharutils/")
b357faac
AE
698 (synopsis "Archives in shell scripts, uuencode/uudecode")
699 (description
79c311b8
LC
700 "GNU sharutils is a package for creating and manipulating shell
701archives that can be readily emailed. A shell archive is a file that can be
e881752c 702processed by a Bourne-type shell to unpack the original collection of files.
79c311b8 703This package is mostly for compatibility and historical interest.")
b357faac 704 (license license:gpl3+)))
28469ab0 705
646898b3
RW
706(define-public sfarklib
707 (package
708 (name "sfarklib")
979f9e8a 709 (version "2.24")
646898b3 710 (source (origin
d40362f4
EF
711 (method git-fetch)
712 (uri (git-reference
b0e7b699 713 (url "https://github.com/raboof/sfArkLib")
d40362f4
EF
714 (commit version)))
715 (file-name (git-file-name name version))
646898b3
RW
716 (sha256
717 (base32
d40362f4 718 "0jrxy24gak7q5ml06p5jjgzk9i5r2mkfjk4ycirkp4kg7k5a237w"))))
646898b3
RW
719 (build-system gnu-build-system)
720 (arguments
721 `(#:tests? #f ;no "check" target
722 #:phases
723 (modify-phases %standard-phases
724 (replace 'configure
725 (lambda* (#:key outputs #:allow-other-keys)
726 (substitute* "Makefile"
727 (("/usr/local") (assoc-ref outputs "out")))
728 #t)))))
729 (inputs
730 `(("zlib" ,zlib)))
731 (home-page "https://github.com/raboof/sfArkLib")
732 (synopsis "Library for SoundFont decompression")
733 (description
734 "SfArkLib is a C++ library for decompressing SoundFont files compressed
735with the sfArk algorithm.")
736 (license license:gpl3+)))
737
b5ad1659 738(define-public sfarkxtc
3fa31317
RW
739 (let ((commit "13cd6f93725a90d91ec5ea75babf1dbd694ac463")
740 (revision "1"))
741 (package
742 (name "sfarkxtc")
743 (version (git-version "0" revision commit))
744 (source (origin
745 ;; There are no release tarballs, so we just fetch the latest
746 ;; commit at this time.
747 (method git-fetch)
748 (uri (git-reference
b0e7b699 749 (url "https://github.com/raboof/sfarkxtc")
3fa31317
RW
750 (commit commit)))
751 (file-name (git-file-name name version))
752 (sha256
753 (base32
754 "1mb1jyk1m11l1gppd9hmql9cyp55sdf7jk5rbc7acky1z4k4mv19"))))
755 (build-system gnu-build-system)
756 (arguments
757 `(#:tests? #f ;no "check" target
758 #:phases
759 (modify-phases %standard-phases
760 (replace 'configure
761 (lambda* (#:key outputs #:allow-other-keys)
762 (substitute* "Makefile"
763 (("/usr/local") (assoc-ref outputs "out")))
764 #t)))))
765 (inputs
766 `(("zlib" ,zlib)
767 ("sfarklib" ,sfarklib)))
768 (home-page "https://github.com/raboof/sfarkxtc")
769 (synopsis "Basic sfArk decompressor")
770 (description "SfArk extractor converts SoundFonts in the compressed legacy
b5ad1659 771sfArk file format to the uncompressed sf2 format.")
3fa31317 772 (license license:gpl3+))))
b5ad1659 773
27f76fe6
TUBK
774(define-public libmspack
775 (package
776 (name "libmspack")
27b2f34c 777 (home-page "https://cabextract.org.uk/libmspack/")
511930c2 778 (version "0.10.1")
27f76fe6
TUBK
779 (source
780 (origin
781 (method url-fetch)
27b2f34c 782 (uri (string-append home-page name "-" version "alpha.tar.gz"))
27f76fe6 783 (sha256
511930c2 784 (base32 "13janaqsvm7aqc4agjgd4819pbgqv50j88bh5kci1z70wvg65j5s"))))
27f76fe6 785 (build-system gnu-build-system)
03c16bb5
MB
786 (arguments
787 `(#:configure-flags '("--disable-static")))
27f76fe6
TUBK
788 (synopsis "Compression tools for some formats used by Microsoft")
789 (description
790 "The purpose of libmspack is to provide both compression and
791decompression of some loosely related file formats used by Microsoft.")
792 (license license:lgpl2.1+)))
73f542c3 793
82aa2a28
LF
794(define-public lz4
795 (package
796 (name "lz4")
c4227f7b 797 (version "1.9.3")
82aa2a28
LF
798 (source
799 (origin
b38cfa1d
MB
800 (method git-fetch)
801 (uri (git-reference (url "https://github.com/lz4/lz4")
802 (commit (string-append "v" version))))
82aa2a28 803 (sha256
c4227f7b 804 (base32 "1w02kazh1fps3sji2sn89fz862j1199c5ajrqcgl1bnlxj09kcbz"))
b38cfa1d 805 (file-name (git-file-name name version))))
82aa2a28 806 (build-system gnu-build-system)
2e8a9db6 807 (outputs (list "out" "static"))
9205f451
MB
808 (native-inputs
809 `(;; For tests.
810 ("python" ,python)
811 ("valgrind" ,valgrind)))
82aa2a28 812 (arguments
78bbf6c4
LLB
813 `(;; Not designed for parallel testing.
814 ;; See https://github.com/lz4/lz4/issues/957#issuecomment-737419821
815 #:parallel-tests? #f
816 #:test-target "test"
2b6ecdf4 817 #:make-flags (list (string-append "CC=" ,(cc-for-target))
0dd6d21a 818 (string-append "prefix=" (assoc-ref %outputs "out")))
2e8a9db6
TGR
819 #:phases
820 (modify-phases %standard-phases
821 (delete 'configure) ; no configure script
822 (add-before 'check 'disable-broken-test
823 (lambda _
824 (substitute* "tests/Makefile"
825 ;; This fails when $prefix is not a single top-level directory.
826 (("^test: (.*) test-install" _ targets)
827 (string-append "test: " targets)))
828 #t))
829 (add-after 'install 'move-static-library
830 (lambda* (#:key outputs #:allow-other-keys)
831 (let ((out (assoc-ref outputs "out"))
832 (static (assoc-ref outputs "static")))
833 (mkdir-p (string-append static "/lib"))
834 (rename-file (string-append out "/lib/liblz4.a")
835 (string-append static "/lib/liblz4.a"))
836 #t))))))
fd174342 837 (home-page "https://www.lz4.org")
82aa2a28
LF
838 (synopsis "Compression algorithm focused on speed")
839 (description "LZ4 is a lossless compression algorithm, providing
840compression speed at 400 MB/s per core (0.16 Bytes/cycle). It also features an
841extremely fast decoder, with speed in multiple GB/s per core (0.71 Bytes/cycle).
842A high compression derivative, called LZ4_HC, is also provided. It trades CPU
843time for compression ratio.")
b7585ca3 844 ;; The libraries (lz4, lz4hc, and xxhash) are BSD licenced. The command
82aa2a28
LF
845 ;; line interface programs (lz4, fullbench, fuzzer, datagen) are GPL2+.
846 (license (list license:bsd-2 license:gpl2+))))
dd8d6d65
SB
847
848(define-public squashfs-tools
849 (package
850 (name "squashfs-tools")
957fe1c2 851 (version "4.4")
dd8d6d65
SB
852 (source (origin
853 (method url-fetch)
de67e922
LF
854 (uri (string-append "mirror://sourceforge/squashfs/squashfs/"
855 "squashfs" version "/"
dd8d6d65
SB
856 "squashfs" version ".tar.gz"))
857 (sha256
858 (base32
957fe1c2 859 "0zmhvczscqz0mzh4b9m8m42asq14db0a6lc8clp5ljq5ybrv70d9"))))
dd8d6d65
SB
860 (build-system gnu-build-system)
861 (arguments
c0040f0e 862 `(#:tests? #f ; no check target
dd8d6d65 863 #:make-flags
c0040f0e 864 (list (string-append "CC=" ,(cc-for-target))
dd8d6d65
SB
865 "XZ_SUPPORT=1"
866 "LZO_SUPPORT=1"
867 "LZ4_SUPPORT=1"
868 (string-append "INSTALL_DIR=" %output "/bin"))
869 #:phases
870 (modify-phases %standard-phases
871 (replace 'configure
f793b4ef
EF
872 (lambda _
873 (chdir "squashfs-tools")
f793b4ef 874 #t)))))
dd8d6d65
SB
875 (inputs
876 `(("lz4" ,lz4)
877 ("lzo" ,lzo)
878 ("xz" ,xz)
879 ("zlib" ,zlib)))
c5bb55a8 880 (home-page "https://github.com/plougher/squashfs-tools")
8f65585b 881 (synopsis "Tools to create and extract squashfs file systems")
dd8d6d65 882 (description
8f65585b 883 "Squashfs is a highly compressed read-only file system for Linux. It uses
dd8d6d65
SB
884zlib to compress files, inodes, and directories. All blocks are packed to
885minimize the data overhead, and block sizes of between 4K and 1M are supported.
886It is intended to be used for archival use, for live CDs, and for embedded
887systems where low overhead is needed. This package allows you to create and
8f65585b 888extract such file systems.")
dd8d6d65 889 (license license:gpl2+)))
820dc3f5
JM
890
891(define-public pigz
892 (package
893 (name "pigz")
69f75ce1 894 (version "2.6")
820dc3f5
JM
895 (source (origin
896 (method url-fetch)
897 (uri (string-append "http://zlib.net/pigz/"
898 name "-" version ".tar.gz"))
899 (sha256
900 (base32
69f75ce1 901 "0z9avc4mifwcpj3qdsf9m2rjw9jx03b2r9pj0c4xgla9fh6ppv9f"))))
820dc3f5
JM
902 (build-system gnu-build-system)
903 (arguments
904 `(#:phases
905 (modify-phases %standard-phases
906 (delete 'configure)
907 (replace 'install
908 (lambda* (#:key outputs #:allow-other-keys)
909 (let* ((out (assoc-ref outputs "out"))
910 (bin (string-append out "/bin"))
911 (man (string-append out "/share/man/man1")))
912 (install-file "pigz" bin)
913 (symlink "pigz" (string-append bin "/unpigz"))
914 (install-file "pigz.1" man)
915 #t))))
9b9bc1b0
TGR
916 #:make-flags
917 (list ,(string-append "CC=" (cc-for-target)))
820dc3f5
JM
918 #:test-target "tests"))
919 (inputs `(("zlib" ,zlib)))
7f1773ea 920 (home-page "https://zlib.net/pigz/")
820dc3f5
JM
921 (synopsis "Parallel implementation of gzip")
922 (description
923 "This package provides a parallel implementation of gzip that exploits
924multiple processors and multiple cores when compressing data.")
925
926 ;; Things under zopfli/ are under ASL2.0, but 4 files at the top-level,
927 ;; written by Mark Adler, are under another non-copyleft license.
928 (license license:asl2.0)))
23f3cbb8
BW
929
930(define-public pixz
931 (package
932 (name "pixz")
468c8f64 933 (version "1.0.7")
23f3cbb8
BW
934 (source (origin
935 (method url-fetch)
936 (uri (string-append
937 "https://github.com/vasi/pixz/releases/download/v" version
938 "/pixz-" version ".tar.xz"))
939 (sha256
940 (base32
468c8f64 941 "1ifxr18f2h75gkcrkx8033kwmwmrcgxshpaawyc2n4dzn1p2rqz5"))))
23f3cbb8
BW
942 (build-system gnu-build-system)
943 (native-inputs
944 `(("pkg-config" ,pkg-config)
945 ("libarchive" ,libarchive)))
946 (home-page "https://github.com/vasi/pixz")
947 (synopsis "Parallel indexing implementation of LZMA")
948 (description
949 "The existing XZ Utils provide great compression in the .xz file format,
950but they produce just one big block of compressed data. Pixz instead produces
951a collection of smaller blocks which makes random access to the original data
952possible and can compress in parallel. This is especially useful for large
953tarballs.")
954 (license license:bsd-2)))
69d9792a 955
ac83cf22
MB
956(define-public bsdiff
957 (package
958 (name "bsdiff")
959 (version "4.3")
960 (home-page "https://www.daemonology.net/bsdiff/")
961 (source (origin
962 (method url-fetch)
963 (uri (string-append home-page name "-" version ".tar.gz"))
964 (sha256
965 (base32
966 "0j2zm3z271x5aw63mwhr3vymzn45p2vvrlrpm9cz2nywna41b0hq"))))
967 (build-system gnu-build-system)
968 (arguments
40b52444
EF
969 `(#:make-flags (list "INSTALL=install"
970 (string-append "CC=" ,(cc-for-target))
ac83cf22
MB
971 (string-append "PREFIX=" (assoc-ref %outputs "out")))
972 #:phases (modify-phases %standard-phases
973 (delete 'configure)
974 (add-before 'build 'fix-Makefile
975 (lambda _
976 (substitute* "Makefile"
977 ;; Adjust syntax to make it compatible with GNU Make.
978 (("^\\.") "")
979 ;; Help install(1) create the target directory.
980 (("\\$\\{PREFIX\\}") "-D -t ${PREFIX}"))
981 #t)))
982 #:tests? #f)) ;no tests
983 (inputs
984 `(("bzip2" ,bzip2)))
985 (synopsis "Patch binary files")
986 (description
987 "@command{bsdiff} and @command{bspatch} are tools for building and
988applying patches to binary files. By using suffix sorting (specifically
989Larsson and Sadakane's @code{qsufsort}) and taking advantage of how
990executable files change, bsdiff routinely produces binary patches 50-80%
991smaller than those produced by @code{Xdelta}.")
992 (license license:bsd-2)))
3fd4b90d
DM
993
994(define-public cabextract
995 (package
996 (name "cabextract")
27b2f34c 997 (home-page "https://cabextract.org.uk/")
bde093c2 998 (version "1.9.1")
3fd4b90d
DM
999 (source (origin
1000 (method url-fetch)
393b55d5 1001 (uri (string-append home-page "cabextract-" version ".tar.gz"))
3fd4b90d
DM
1002 (sha256
1003 (base32
bde093c2 1004 "19qwhl2r8ip95q4vxzxg2kp4p125hjmc9762sns1dwwf7ikm7hmg"))
92526ade
MB
1005 (modules '((guix build utils)))
1006 (snippet
1007 '(begin
1008 ;; Delete bundled libmspack.
1009 (delete-file-recursively "mspack")
1010 #t))))
3fd4b90d 1011 (build-system gnu-build-system)
b3175c70
KK
1012 (arguments
1013 '(#:configure-flags '("--with-external-libmspack")
1014 #:phases
1015 (modify-phases %standard-phases
1016 ;; cabextract needs some of libmspack's header files.
1017 ;; These are located in the "mspack" directory of libmspack.
1018 (add-before 'build 'unpack-libmspack
1019 (lambda* (#:key inputs #:allow-other-keys)
1020 (let ((dir-name "libmspack-src"))
1021 (mkdir dir-name)
1022 (invoke "tar" "-xvf" (assoc-ref inputs "libmspack-source")
1023 "-C" dir-name "--strip-components" "1")
1024 (rename-file (string-append dir-name "/mspack")
1025 "mspack")
1026 (delete-file-recursively dir-name)
1027 #t))))))
3fd4b90d
DM
1028 (native-inputs
1029 `(("pkg-config" ,pkg-config)))
1030 (inputs
b3175c70
KK
1031 `(("libmspack" ,libmspack)
1032 ("libmspack-source" ,(package-source libmspack))))
3fd4b90d
DM
1033 (synopsis "Tool to unpack Cabinet archives")
1034 (description "Extracts files out of Microsoft Cabinet (.cab) archives")
1035 ;; Some source files specify gpl2+, lgpl2+, however COPYING is gpl3.
1036 (license license:gpl3+)))
0b073506 1037
9d5ed931
LLB
1038(define-public libjcat
1039 (package
1040 (name "libjcat")
26688b8d 1041 (version "0.1.6")
9d5ed931
LLB
1042 (source
1043 (origin
1044 (method git-fetch)
1045 (uri
1046 (git-reference
1047 (url "https://github.com/hughsie/libjcat")
1048 (commit version)))
1049 (file-name (git-file-name name version))
1050 (sha256
26688b8d 1051 (base32 "1a2z34m8611xvna9kwch8ralxx7c9mk4rm9vrxx7p9hr8sbqbsaz"))))
9d5ed931
LLB
1052 (build-system meson-build-system)
1053 (native-inputs
1054 `(("gobject-introspection" ,gobject-introspection)
1055 ("help2man" ,help2man)
1056 ("pkg-config" ,pkg-config)))
1057 (inputs
1058 `(("git" ,git)
1059 ("glib" ,glib)
1060 ("gnupg" ,gnupg)
1061 ("gnutls" ,gnutls)
1062 ("gpgme" ,gpgme)
1063 ("json-glib" ,json-glib)
1064 ("vala" ,vala)))
1065 (home-page "https://github.com/hughsie/libjcat")
1066 (synopsis "Library for reading and writing Jcat files")
1067 (description
1068 "This library allows reading and writing gzip-compressed JSON catalog
1069files, which can be used to store GPG, PKCS-7 and SHA-256 checksums for each
1070file.")
1071 (license license:lgpl2.1+)))
1072
0b073506
TGR
1073(define-public xdelta
1074 (package
1075 (name "xdelta")
1076 (version "3.1.0")
1077 (source
1078 (origin
0633c77b
RW
1079 (method git-fetch)
1080 (uri (git-reference
b0e7b699 1081 (url "https://github.com/jmacd/xdelta")
0633c77b
RW
1082 (commit (string-append "v" version))))
1083 (file-name (git-file-name name version))
0b073506
TGR
1084 (sha256
1085 (base32
0633c77b 1086 "09mmsalc7dwlvgrda56s2k927rpl3a5dzfa88aslkqcjnr790wjy"))
0b073506
TGR
1087 (snippet
1088 ;; This file isn't freely distributable and has no effect on building.
6cbee49d
MW
1089 '(begin
1090 (delete-file "xdelta3/draft-korn-vcdiff.txt")
1091 #t))))
0b073506
TGR
1092 (build-system gnu-build-system)
1093 (native-inputs
1094 `(("autoconf" ,autoconf)
1095 ("automake" ,automake)))
1096 (arguments
1097 `(#:phases
1098 (modify-phases %standard-phases
1099 (add-after 'unpack 'enter-build-directory
e5ff963a 1100 (lambda _ (chdir "xdelta3") #t)))))
69b7fa3e 1101 (home-page "http://xdelta.org")
0b073506
TGR
1102 (synopsis "Delta encoder for binary files")
1103 (description "xdelta encodes only the differences between two binary files
1104using the VCDIFF algorithm and patch file format described in RFC 3284. It can
1105also be used to apply such patches. xdelta is similar to @command{diff} and
1106@command{patch}, but is not limited to plain text and does not generate
1107human-readable output.")
1108 (license license:asl2.0)))
389eb3fa
TGR
1109
1110(define-public lrzip
1111 (package
1112 (name "lrzip")
51697aab 1113 (version "0.640")
389eb3fa
TGR
1114 (source
1115 (origin
1116 (method url-fetch)
1117 (uri (string-append
51697aab 1118 "http://ck.kolivas.org/apps/lrzip/lrzip-" version ".tar.xz"))
389eb3fa
TGR
1119 (sha256
1120 (base32
51697aab 1121 "175466drfpz8rsfr0pzfn5rqrj3wmcmcs3i2sfmw366w2kbjm4j9"))))
389eb3fa
TGR
1122 (build-system gnu-build-system)
1123 (native-inputs
1124 `(;; nasm is only required when building for 32-bit x86 platforms
1125 ,@(if (string-prefix? "i686" (or (%current-target-system)
1126 (%current-system)))
1127 `(("nasm" ,nasm))
1128 '())
1129 ("perl" ,perl)))
1130 (inputs
1131 `(("bzip2" ,bzip2)
51697aab 1132 ("lz4" ,lz4)
389eb3fa
TGR
1133 ("lzo" ,lzo)
1134 ("zlib" ,zlib)))
1135 (home-page "http://ck.kolivas.org/apps/lrzip/")
1136 (synopsis "Large file compressor with a very high compression ratio")
1137 (description "lrzip is a compression utility that uses long-range
1138redundancy reduction to improve the subsequent compression ratio of
1139larger files. It can then further compress the result with the ZPAQ or
1140LZMA algorithms for maximum compression, or LZO for maximum speed. This
1141choice between size or speed allows for either better compression than
1142even LZMA can provide, or a higher speed than gzip while compressing as
1143well as bzip2.")
1144 (license (list license:gpl3+
1145 license:public-domain)))) ; most files in lzma/
e4c2136d
DC
1146
1147(define-public snappy
1148 (package
1149 (name "snappy")
a5407c76 1150 (version "1.1.8")
16de7f15
TGR
1151 (source
1152 (origin
898ac8e7
EF
1153 (method git-fetch)
1154 (uri (git-reference
b0e7b699 1155 (url "https://github.com/google/snappy")
898ac8e7
EF
1156 (commit version)))
1157 (file-name (git-file-name name version))
16de7f15 1158 (sha256
a5407c76 1159 (base32 "1j0kslq2dvxgkcxl1gakhvsa731yrcvcaipcp5k8k7ayicvkv9jv"))
16de7f15 1160 (patches (search-patches "snappy-add-O2-flag-in-CmakeLists.txt.patch"))))
5a437357
MB
1161 (build-system cmake-build-system)
1162 (arguments
1163 `(#:configure-flags '("-DBUILD_SHARED_LIBS=ON")))
e4c2136d
DC
1164 (home-page "https://github.com/google/snappy")
1165 (synopsis "Fast compressor/decompressor")
5a437357 1166 (description "Snappy is a compression/decompression library. It does not
e4c2136d 1167aim for maximum compression, or compatibility with any other compression library;
5a437357 1168instead, it aims for very high speeds and reasonable compression. For instance,
e4c2136d
DC
1169compared to the fastest mode of zlib, Snappy is an order of magnitude faster
1170for most inputs, but the resulting compressed files are anywhere from 20% to
1171100% bigger.")
1172 (license license:asl2.0)))
adbd7faf
KK
1173
1174(define-public p7zip
1175 (package
1176 (name "p7zip")
1177 (version "16.02")
1178 (source (origin
1179 (method url-fetch)
1180 (uri (string-append "mirror://sourceforge/" name "/" name "/"
1181 version "/" name "_" version
1182 "_src_all.tar.bz2"))
1183 (sha256
1184 (base32
1185 "07rlwbbgszq8i7m8jh3x6j2w2hc9a72dc7fmqawnqkwlwb00mcjy"))
1186 (modules '((guix build utils)))
1187 (snippet
1188 '(begin
1189 ;; Remove non-free source files
1190 (for-each delete-file
1191 (append
1192 (find-files "CPP/7zip/Compress" "Rar.*")
1193 (find-files "CPP/7zip/Crypto" "Rar.*")
1194 (find-files "DOC/unRarLicense.txt")
1195 (find-files "Utils/file_Codecs_Rar_so.py")))
1196 (delete-file-recursively "CPP/7zip/Archive/Rar")
1197 (delete-file-recursively "CPP/7zip/Compress/Rar")
1198 #t))
1ac675a5 1199 (patches (search-patches "p7zip-CVE-2016-9296.patch"
a630c647 1200 "p7zip-CVE-2017-17969.patch"
1ac675a5 1201 "p7zip-remove-unused-code.patch"))))
adbd7faf
KK
1202 (build-system gnu-build-system)
1203 (arguments
1204 `(#:make-flags
1205 (list (string-append "DEST_HOME=" (assoc-ref %outputs "out")) "all3")
1206 #:phases
1207 (modify-phases %standard-phases
1208 (replace 'configure
1209 (lambda* (#:key system outputs #:allow-other-keys)
8fcdd9d5
MW
1210 (invoke "cp"
1211 (let ((system ,(or (%current-target-system)
1212 (%current-system))))
1213 (cond
1214 ((string-prefix? "x86_64" system)
1215 "makefile.linux_amd64_asm")
1216 ((string-prefix? "i686" system)
1217 "makefile.linux_x86_asm_gcc_4.X")
1218 (else
1219 "makefile.linux_any_cpu_gcc_4.X")))
1220 "makefile.machine")))
adbd7faf
KK
1221 (replace 'check
1222 (lambda _
8fcdd9d5
MW
1223 (invoke "make" "test")
1224 (invoke "make" "test_7z")
1225 (invoke "make" "test_7zr"))))))
0f4f5715 1226 (native-inputs
adbd7faf
KK
1227 (let ((system (or (%current-target-system)
1228 (%current-system))))
1229 `(,@(cond ((string-prefix? "x86_64" system)
1230 `(("yasm" ,yasm)))
1231 ((string-prefix? "i686" system)
1232 `(("nasm" ,nasm)))
1233 (else '())))))
1234 (home-page "http://p7zip.sourceforge.net/")
1235 (synopsis "Command-line file archiver with high compression ratio")
1236 (description "p7zip is a command-line port of 7-Zip, a file archiver that
1237handles the 7z format which features very high compression ratios.")
1238 (license (list license:lgpl2.1+
1239 license:gpl2+
1240 license:public-domain))))
618089f9
MB
1241
1242(define-public gzstream
1243 (package
1244 (name "gzstream")
1245 (version "1.5")
1246 (source (origin
1247 (method url-fetch)
1248 (uri
1249 ;; No versioned URL, but last release was in 2003.
1250 "http://www.cs.unc.edu/Research/compgeom/gzstream/gzstream.tgz")
1251 (file-name (string-append name "-" version ".tgz"))
1252 (sha256
1253 (base32
1254 "00y19pqjsdj5zcrx4p9j56pl73vayfwnb7y2hvp423nx0cwv5b4r"))
1255 (modules '((guix build utils)))
1256 (snippet
1257 ;; Remove pre-compiled object.
6cbee49d
MW
1258 '(begin
1259 (delete-file "gzstream.o")
1260 #t))))
618089f9
MB
1261 (build-system gnu-build-system)
1262 (arguments
1263 `(#:test-target "test"
1264 #:phases
1265 (modify-phases %standard-phases
1266 (delete 'configure)
1267 (replace 'install
1268 (lambda* (#:key outputs #:allow-other-keys)
1269 (let* ((out (assoc-ref outputs "out"))
1270 (lib (string-append out "/lib"))
1271 (include (string-append out "/include")))
1272 (install-file "libgzstream.a" lib)
1273 (install-file "gzstream.h" include)
1274 #t))))))
1275 (propagated-inputs `(("zlib" ,zlib)))
1276 (home-page "http://www.cs.unc.edu/Research/compgeom/gzstream/")
1277 (synopsis "Compressed C++ iostream")
1278 (description "gzstream is a small library for providing zlib
1279functionality in a C++ iostream.")
1280 (license license:lgpl2.1+)))
36df995c
TGR
1281
1282(define-public zpaq
1283 (package
1284 (name "zpaq")
1285 (version "7.15")
1286 (source
1287 (origin
1288 (method url-fetch/zipbomb)
1289 (uri (string-append "http://mattmahoney.net/dc/zpaq"
1290 (string-delete #\. version) ".zip"))
1291 (sha256
1292 (base32
1293 "066l94yyladlfzri877nh2dhkvspagjn3m5bmv725fmhkr9c4pp8"))
1294 (modules '((guix build utils)))
1295 (snippet
1296 ;; Delete irrelevant pre-compiled binaries.
6cbee49d
MW
1297 '(begin
1298 (for-each delete-file (find-files "." "\\.exe$"))
1299 #t))))
36df995c
TGR
1300 (build-system gnu-build-system)
1301 (arguments
1302 `(#:phases
1303 (modify-phases %standard-phases
1304 (delete 'configure)) ; no ‘configure’ script
1305 #:make-flags
1306 (list
1307 (string-append "CPPFLAGS=-Dunix"
1308 ,(match (or (%current-target-system)
1309 (%current-system))
1310 ("x86_64-linux" "")
1311 ("i686-linux" "")
1312 (_ " -DNOJIT")))
1313 ;; These should be safe, lowest-common-denominator instruction sets,
1314 ;; allowing for some optimisation while remaining reproducible.
effd7198 1315 (string-append "CXXFLAGS=-O3 -DNDEBUG"
36df995c
TGR
1316 ,(match (or (%current-target-system)
1317 (%current-system))
effd7198
EF
1318 ("x86_64-linux" " -march=nocona -mtune=generic")
1319 ("i686-linux" " -march=i686 -mtune=generic")
1320 ("armhf-linux" " -mtune=generic-armv7-a")
36df995c
TGR
1321 (_ "")))
1322 (string-append "PREFIX="
1323 (assoc-ref %outputs "out")))))
1324 (native-inputs
1325 `(("perl" ,perl))) ; for pod2man
1326 (home-page "http://mattmahoney.net/dc/zpaq.html")
1327 (synopsis "Incremental journaling archiver")
1328 (description "ZPAQ is a command-line archiver for realistic situations with
1329many duplicate and already compressed files. It backs up only those files
1330modified since the last update. All previous versions remain untouched and can
1331be independently recovered. Identical files are only stored once (known as
1332@dfn{de-duplication}). Archives can also be encrypted.
1333
1334ZPAQ is intended to back up user data, not entire operating systems. It ignores
1335owner and group IDs, ACLs, extended attributes, or special file types like
1336devices, sockets, or named pipes. It does not follow or restore symbolic links
1337or junctions, and always follows hard links.")
1338 (license (list license:public-domain
1339 ;; libzpaq.cpp contains a mix of public-domain and
1340 ;; expat-licenced (or ‘MIT’) code.
1341 license:expat))))
0da8313c 1342
9e6ada8f
MR
1343(define-public unshield
1344 (package
1345 (name "unshield")
6cf48e8c 1346 (version "1.4.3")
9e6ada8f 1347 (source
298180cd
EF
1348 (origin (method git-fetch)
1349 (uri (git-reference
8ed4c468 1350 (url "http://github.com/twogood/unshield")
298180cd
EF
1351 (commit version)))
1352 (file-name (git-file-name name version))
9e6ada8f
MR
1353 (sha256
1354 (base32
298180cd 1355 "19wn22vszhci8dfcixx5rliz7phx3lv5ablvhjlclvj75k2vsdqd"))))
9e6ada8f
MR
1356 (build-system cmake-build-system)
1357 (inputs
1358 `(("zlib" ,zlib)
1359 ("openssl" ,openssl)
6cf48e8c 1360 ;; Test data that is otherwise downloaded with curl.
9e6ada8f
MR
1361 ("unshield-avigomanager11b22.zip"
1362 ,(origin
1363 (method url-fetch)
6cf48e8c
TGR
1364 (uri (string-append
1365 "https://www.dropbox.com/s/8r4b6752swe3nhu/"
1366 "unshield-avigomanager11b22.zip?dl=1"))
9e6ada8f
MR
1367 (sha256
1368 (base32 "0fwq7lih04if68wpwpsk5wjqyvh32db76a41sq6gbx4dn1lc3ddn"))
1369 (file-name "unshield-avigomanager11b22.zip")))
6cf48e8c
TGR
1370 ("unshield-baldurs_gate_patch_v1_1_4315_international.zip"
1371 ,(origin
1372 (method url-fetch)
1373 (uri (string-append
1374 "https://www.dropbox.com/s/9ruil8oi6amjbbk/"
1375 "unshield-baldurs_gate_patch_v1_1_4315_international.zip?dl=1"))
1376 (sha256
1377 (base32 "0spaxf6dardlhqxz3ys09fzamj007q3nfyw4xng6gh3qp9780maj"))
1378 (file-name "unshield-baldurs_gate_patch_v1_1_4315_international.zip")))
9e6ada8f
MR
1379 ("unshield-the-feeble-files-spanish.zip"
1380 ,(origin
1381 (method url-fetch)
6cf48e8c
TGR
1382 (uri (string-append
1383 "https://www.dropbox.com/s/1ng0z9kfxc7eb1e/"
1384 "unshield-the-feeble-files-spanish.zip?dl=1"))
9e6ada8f
MR
1385 (sha256
1386 (base32 "1k5cw6vnpja8yjlnhx5124xrw9i8s1l539hfdqqrqz3l5gn0bnyd"))
1387 (file-name "unshield-the-feeble-files-spanish.zip")))))
1388 (native-inputs
1389 `(("unzip" ,unzip)))
1390 (arguments
1391 `(#:out-of-source? #f
1392 #:phases
1393 (modify-phases %standard-phases
1394 (add-before 'check 'pre-check
1395 (lambda* (#:key inputs #:allow-other-keys)
1396 (for-each (lambda (i)
1397 (copy-file (assoc-ref inputs i)
1398 (string-append "test/v0/" i)))
1399 '("unshield-avigomanager11b22.zip"
6cf48e8c 1400 "unshield-baldurs_gate_patch_v1_1_4315_international.zip"
9e6ada8f
MR
1401 "unshield-the-feeble-files-spanish.zip"))
1402 (substitute* (find-files "test/" "/*\\.sh")
1403 ;; Tests expect the unshield binary in a specific
1404 ;; location.
1405 (("/var/tmp/unshield/bin/unshield")
1406 (string-append (getcwd) "/src/unshield"))
1407 ;; We no longer need to download the data.
1408 ((".?URL=.*$") "")
1409 (("curl -(|f)sSL -o test.zip .*") ""))
1410 (substitute* "test/v0/avigomanager.sh"
1411 (("test.zip")
1412 (string-append (getcwd)
6cf48e8c
TGR
1413 "/test/v0/unshield-avigomanager11b22.zip")))
1414 (substitute* "test/v0/baldurs_gate_patch_v1_1_4315_international.sh"
1415 (("test.zip")
1416 (string-append
1417 (getcwd)
1418 "/test/v0/unshield-baldurs_gate_patch_v1_1_4315_international.zip")))
9e6ada8f
MR
1419 (substitute* "test/v0/the-feeble-files-spanish.sh"
1420 (("test.zip")
1421 (string-append (getcwd)
1422 "/test/v0/unshield-the-feeble-files-spanish.zip")))
1423 #t))
1424 (replace 'check
1425 (lambda _
df04bd25 1426 (invoke "./run-tests.sh"))))))
9e6ada8f
MR
1427 (home-page "https://github.com/twogood/unshield")
1428 (synopsis "Extract CAB files from InstallShield installers")
1429 (description
1430 "@command{unshield} is a tool and library for extracting @file{.cab}
1431 archives from InstallShield installers.")
1432 (license license:expat)))
1433
f6ac3101
TGR
1434(define-public zstd
1435 (package
1436 (name "zstd")
ca0576d6 1437 (version "1.4.4")
3880537c
TGR
1438 (source
1439 (origin
1440 (method url-fetch)
1441 (uri (string-append "https://github.com/facebook/zstd/releases/download/"
1442 "v" version "/zstd-" version ".tar.gz"))
1443 (sha256
ca0576d6 1444 (base32 "05ckxap00qvc0j51d3ci38150cxsw82w7s9zgd5fgzspnzmp1vsr"))))
f6ac3101 1445 (build-system gnu-build-system)
ca0576d6
MB
1446 (outputs '("out" ;1.2MiB executables and documentation
1447 "lib" ;1.2MiB shared library and headers
1448 "static")) ;1.2MiB static library
f6ac3101
TGR
1449 (arguments
1450 `(#:phases
1451 (modify-phases %standard-phases
ec0de9d8
MB
1452 (delete 'configure) ;no configure script
1453 (add-after 'install 'adjust-library-locations
1454 (lambda* (#:key outputs #:allow-other-keys)
1455 (let* ((out (assoc-ref outputs "out"))
1456 (lib (assoc-ref outputs "lib"))
1457 (static (assoc-ref outputs "static"))
1458 (shared-libs (string-append lib "/lib"))
1459 (static-libs (string-append static "/lib")))
1460 ;; Move the static library to its own output to save ~1MiB.
1461 (mkdir-p static-libs)
1462 (for-each (lambda (ar)
1463 (link ar (string-append static-libs "/"
1464 (basename ar)))
1465 (delete-file ar))
1466 (find-files shared-libs "\\.a$"))
1467
ca0576d6 1468 ;; Make sure the pkg-config file refers to the right output.
ec0de9d8 1469 (substitute* (string-append shared-libs "/pkgconfig/libzstd.pc")
ca0576d6
MB
1470 (("^prefix=.*")
1471 (string-append "prefix=" lib "\n")))
ec0de9d8
MB
1472
1473 #t))))
f6ac3101 1474 #:make-flags
9f58c83c
EF
1475 ;; TODO: Integrate in next rebuild cycle.
1476 (list ,(if (%current-target-system)
1477 (string-append "CC=" (cc-for-target))
1478 "CC=gcc")
f45e314e 1479 (string-append "PREFIX=" (assoc-ref %outputs "out"))
ec0de9d8
MB
1480 (string-append "LIBDIR=" (assoc-ref %outputs "lib") "/lib")
1481 (string-append "INCLUDEDIR=" (assoc-ref %outputs "lib") "/include")
f45e314e
TGR
1482 ;; Skip auto-detection of, and creating a dependency on, the build
1483 ;; environment's ‘xz’ for what amounts to a dubious feature anyway.
1484 "HAVE_LZMA=0"
1485 ;; Not currently detected, but be explicit & avoid surprises later.
1486 "HAVE_LZ4=0"
e8073063 1487 "HAVE_ZLIB=0")))
2f325b63 1488 (home-page "https://facebook.github.io/zstd/")
f6ac3101
TGR
1489 (synopsis "Zstandard real-time compression algorithm")
1490 (description "Zstandard (@command{zstd}) is a lossless compression algorithm
1491that combines very fast operation with a compression ratio comparable to that of
1492zlib. In most scenarios, both compression and decompression can be performed in
1493‘real time’. The compressor can be configured to provide the most suitable
1494trade-off between compression ratio and speed, without affecting decompression
1495speed.")
1496 (license (list license:bsd-3 ; the main top-level LICENSE file
16123d1d 1497 license:bsd-2 ; many files explicitly state 2-Clause
5a719dee 1498 license:gpl2 ; the main top-level COPYING file
16123d1d
TGR
1499 license:gpl3+ ; tests/gzip/*.sh
1500 license:expat ; lib/dictBuilder/divsufsort.[ch]
f6ac3101
TGR
1501 license:public-domain ; zlibWrapper/examples/fitblk*
1502 license:zlib)))) ; zlibWrapper/{gz*.c,gzguts.h}
0f03c531
TGR
1503
1504(define-public pzstd
1505 (package
1506 (name "pzstd")
1507 (version (package-version zstd))
1508 (source (package-source zstd))
1509 (build-system gnu-build-system)
455daf46
EF
1510 (inputs
1511 `(,@(if (%current-target-system)
1512 `(("googletest" ,googletest))
1513 '())))
0f03c531 1514 (native-inputs
455daf46
EF
1515 `(,@(if (%current-system)
1516 `(("googletest" ,googletest))
1517 '())))
0f03c531
TGR
1518 (arguments
1519 `(#:phases
1520 (modify-phases %standard-phases
1521 (add-after 'unpack 'enter-subdirectory
9f6f726c 1522 (lambda _ (chdir "contrib/pzstd") #t))
0f03c531
TGR
1523 (delete 'configure) ; no configure script
1524 (add-before 'check 'compile-tests
1525 (lambda* (#:key make-flags #:allow-other-keys)
745e83ca 1526 (apply invoke "make" "tests" make-flags)))
0f03c531
TGR
1527 (add-after 'install 'install-documentation
1528 (lambda* (#:key outputs #:allow-other-keys)
1529 (let* ((out (assoc-ref outputs "out"))
1530 (doc (string-append out "/share/doc/" ,name)))
1531 (mkdir-p doc)
1532 (install-file "README.md" doc)
1533 #t))))
1534 #:make-flags
455daf46
EF
1535 (list (string-append "CC=" ,(cc-for-target))
1536 (string-append "CXX=" ,(cxx-for-target))
0f03c531
TGR
1537 (string-append "PREFIX=" (assoc-ref %outputs "out")))))
1538 (home-page (package-home-page zstd))
1539 (synopsis "Threaded implementation of the Zstandard compression algorithm")
1540 (description "Parallel Zstandard (PZstandard or @command{pzstd}) is a
1541multi-threaded implementation of the @uref{http://zstd.net/, Zstandard
1542compression algorithm}. It is fully compatible with the original Zstandard file
1543format and command-line interface, and can be used as a drop-in replacement.
1544
1545Compression is distributed over multiple processor cores to improve performance,
1546as is the decompression of data compressed in this manner. Data compressed by
1547other implementations will only be decompressed by two threads: one performing
1548the actual decompression, the other input and output.")
1549 (license (package-license zstd))))
148585c2
AI
1550
1551(define-public zip
1552 (package
1553 (name "zip")
1554 (version "3.0")
1555 (source
1556 (origin
1557 (method url-fetch)
1558 (uri (string-append "mirror://sourceforge/infozip"
1559 "/Zip%203.x%20%28latest%29/3.0/zip30.tar.gz"))
1560 (sha256
1561 (base32
1562 "0sb3h3067pzf3a7mlxn1hikpcjrsvycjcnj9hl9b1c3ykcgvps7h"))))
1563 (build-system gnu-build-system)
1564 (inputs `(("bzip2" ,bzip2)))
1565 (arguments
1566 `(#:tests? #f ; no test target
1567 #:make-flags (let ((out (assoc-ref %outputs "out")))
1568 (list "-f" "unix/Makefile"
1569 (string-append "prefix=" out)
1570 (string-append "MANDIR=" out "/share/man/man1")))
148585c2
AI
1571 #:phases
1572 (modify-phases %standard-phases
1573 (replace 'build
1574 (lambda* (#:key (make-flags '()) #:allow-other-keys)
b0559d24 1575 (apply invoke "make" "generic_gcc" make-flags)))
148585c2
AI
1576 (delete 'configure))))
1577 (home-page "http://www.info-zip.org/Zip.html")
1578 (synopsis "Compression and file packing utility")
1579 (description
1580 "Zip is a compression and file packaging/archive utility. Zip is useful
1581for packaging a set of files for distribution, for archiving files, and for
1582saving disk space by temporarily compressing unused files or directories.
1583Zip puts one or more compressed files into a single ZIP archive, along with
1584information about the files (name, path, date, time of last modification,
1585protection, and check information to verify file integrity). An entire
1586directory structure can be packed into a ZIP archive with a single command.
1587
1588Zip has one compression method (deflation) and can also store files without
1589compression. Zip automatically chooses the better of the two for each file.
1590Compression ratios of 2:1 to 3:1 are common for text files.")
1591 (license (license:non-copyleft "file://LICENSE"
1592 "See LICENSE in the distribution."))))
1593
1594(define-public unzip
1595 (package (inherit zip)
1596 (name "unzip")
1597 (version "6.0")
1598 (source
1599 (origin
1600 (method url-fetch)
1601 (uri (string-append "mirror://sourceforge/infozip"
1602 "/UnZip%206.x%20%28latest%29/UnZip%206.0/unzip60.tar.gz"))
1603 (sha256
1604 (base32
1605 "0dxx11knh3nk95p2gg2ak777dd11pr7jx5das2g49l262scrcv83"))
1606 (patches (search-patches "unzip-CVE-2014-8139.patch"
1607 "unzip-CVE-2014-8140.patch"
1608 "unzip-CVE-2014-8141.patch"
1609 "unzip-CVE-2014-9636.patch"
1610 "unzip-CVE-2015-7696.patch"
1611 "unzip-CVE-2015-7697.patch"
1612 "unzip-allow-greater-hostver-values.patch"
1613 "unzip-initialize-symlink-flag.patch"
1614 "unzip-remove-build-date.patch"
1615 "unzip-attribs-overflow.patch"
1616 "unzip-overflow-on-invalid-input.patch"
1617 "unzip-format-secure.patch"
1618 "unzip-overflow-long-fsize.patch"))))
1619 (build-system gnu-build-system)
1620 ;; no inputs; bzip2 is not supported, since not compiled with BZ_NO_STDIO
1621 (arguments
1622 `(#:phases (modify-phases %standard-phases
1623 (delete 'configure)
190376a1
MW
1624 (add-after 'unpack 'fortify
1625 (lambda _
1626 ;; Mitigate CVE-2018-1000035, an exploitable buffer overflow.
1627 ;; This environment variable is recommended in 'unix/Makefile'
1628 ;; for passing flags to the C compiler.
1629 (setenv "LOCAL_UNZIP" "-D_FORTIFY_SOURCE=1")
1630 #t))
148585c2
AI
1631 (replace 'build
1632 (lambda* (#:key make-flags #:allow-other-keys)
fa76696b
MW
1633 (apply invoke "make"
1634 `("-j" ,(number->string
1635 (parallel-job-count))
1636 ,@make-flags
1637 "generic_gcc")))))
148585c2
AI
1638 #:make-flags (list "-f" "unix/Makefile"
1639 (string-append "prefix=" %output)
1640 (string-append "MANDIR=" %output "/share/man/man1"))))
1641 (home-page "http://www.info-zip.org/UnZip.html")
1642 (synopsis "Decompression and file extraction utility")
1643 (description
1644 "UnZip is an extraction utility for archives compressed in .zip format,
1645also called \"zipfiles\".
1646
1647UnZip lists, tests, or extracts files from a .zip archive. The default
1648behaviour (with no options) is to extract into the current directory, and
1649subdirectories below it, all files from the specified zipfile. UnZip
1650recreates the stored directory structure by default.")
1651 (license (license:non-copyleft "file://LICENSE"
1652 "See LICENSE in the distribution."))))
1653
65c110e2
TGR
1654(define-public ziptime
1655 (let ((commit "2a5bc9dfbf7c6a80e5f7cb4dd05b4036741478bc")
1656 (revision "0"))
1657 (package
1658 (name "ziptime")
1659 (version (git-version "0.0.0" revision commit))
1660 (source
1661 (origin
1662 (method git-fetch)
1663 (uri (git-reference
1664 (url "https://android.googlesource.com/platform/build")
1665 (commit commit)))
1666 (file-name (git-file-name name version))
1667 (sha256
1668 (base32 "0hrn61b3a97dlc4iqc28rwx8k8zf7ycbwzqqp93vj34zy5a541kn"))))
1669 (build-system gnu-build-system)
1670 (arguments
1671 `(#:tests? #f ; no test suite
1672 #:phases
1673 (modify-phases %standard-phases
1674 (add-after 'unpack 'change-directory
1675 (lambda _
1676 (chdir "tools/ziptime")))
1677 (delete 'configure) ; nothing to configure
1678 (replace 'build
1679 ;; There is no Makefile, only an ‘Android.bp’ file. Ignore it.
1680 (lambda _
1681 (let ((c++ ,(cxx-for-target)))
1682 (apply invoke c++ "-O2" "-o" "ziptime"
1683 (find-files "." "\\.cpp$")))))
1684 (replace 'install
1685 (lambda* (#:key outputs #:allow-other-keys)
1686 (let* ((out (assoc-ref outputs "out"))
1687 (bin (string-append out "/bin"))
1688 (doc (string-append out "/share/doc/" ,name "-" ,version)))
1689 (install-file "ziptime" bin)
1690 (install-file "README.txt" doc)))))))
1691 ;; There is no separate home page for this tiny bundled build tool.
1692 (home-page (string-append "https://android.googlesource.com/platform/build/"
1693 "+/master/tools/ziptime/README.txt"))
1694 (synopsis "Normalize @file{.zip} archive header timestamps")
1695 (description
1696 "Ziptime helps make @file{.zip} archives reproducible by replacing
1697timestamps in the file header with a fixed time (1 January 2008).
1698
1699``Extra fields'' are not changed, so you'll need to use the @code{-X} option to
1700@command{zip} to prevent it from storing the ``universal time'' field.")
1701 (license license:asl2.0))))
1702
148585c2
AI
1703(define-public zziplib
1704 (package
1705 (name "zziplib")
3f986ff6
MB
1706 (version "0.13.69")
1707 (home-page "https://github.com/gdraheim/zziplib")
d0a52e65
MB
1708 (source (origin
1709 (method git-fetch)
1710 (uri (git-reference (url home-page)
1711 (commit (string-append "v" version))))
1712 (file-name (git-file-name name version))
e6bd8b5e 1713 (patches (search-patches "zziplib-CVE-2018-16548.patch"))
d0a52e65
MB
1714 (sha256
1715 (base32
1716 "0fbk9k7ryas2wh2ykwkvm1pbi40i88rfvc3dydh9xyd7w2jcki92"))))
148585c2 1717 (build-system gnu-build-system)
d0a52e65
MB
1718 (arguments
1719 `(#:phases (modify-phases %standard-phases
1720 (add-before 'check 'make-files-writable
1721 (lambda _
1722 (for-each make-file-writable
1723 (find-files "test" #:directories? #t))
b0dc2454
MB
1724 #t)))
1725
1726 ;; XXX: The default test target attempts to download external resources and
1727 ;; fails without error: <https://github.com/gdraheim/zziplib/issues/53>.
1728 ;; To prevent confusing log messages, just run a simple zip test that works.
1729 #:test-target "check-readme"))
148585c2
AI
1730 (inputs
1731 `(("zlib" ,zlib)))
1732 (native-inputs `(("perl" ,perl) ; for the documentation
1733 ("pkg-config" ,pkg-config)
1734 ;; for the documentation; Python 3 not supported,
1735 ;; http://forums.gentoo.org/viewtopic-t-863161-start-0.html
1736 ("python" ,python-2)
1737 ("zip" ,zip))) ; to create test files
148585c2
AI
1738 (synopsis "Library for accessing zip files")
1739 (description
1740 "ZZipLib is a library based on zlib for accessing zip files.")
0d729c5b
MB
1741 ;; zziplib is dual licensed under LGPL2.0+ and MPL1.1. Some example source
1742 ;; files carry the Zlib license; see "docs/copying.html" for details.
1743 (license (list license:lgpl2.0+ license:mpl1.1))))
148585c2 1744
06de4aaf
TF
1745(define-public libzip
1746 (package
1747 (name "libzip")
7e6df0e9 1748 (version "1.7.3")
06de4aaf
TF
1749 (source (origin
1750 (method url-fetch)
1751 (uri (string-append
66fea0c4 1752 "https://libzip.org/download/libzip-" version ".tar.xz"))
06de4aaf
TF
1753 (sha256
1754 (base32
7e6df0e9 1755 "0ck1dk7zn5qzpgxklg0r26nfsf04xb6c46gsig060hkvvgzp6156"))))
06de4aaf
TF
1756 (native-inputs
1757 `(("perl" ,perl)))
1758 (inputs
a9b15d4c 1759 `(("gnutls" ,gnutls)
dcc3f215 1760 ("liblzma" ,xz)
a9b15d4c
BH
1761 ("openssl" ,openssl)
1762 ("zlib" ,zlib)))
80486319 1763 (build-system cmake-build-system)
8d6c7456 1764 (home-page "https://libzip.org")
06de4aaf
TF
1765 (synopsis "C library for reading, creating, and modifying zip archives")
1766 (description "Libzip is a C library for reading, creating, and modifying
1767zip archives. Files can be added from data buffers, files, or compressed data
1768copied directly from other zip archives. Changes made without closing the
1769archive can be reverted.")
1770 (license license:bsd-3)))
ef5c40aa
SR
1771
1772(define-public atool
1773 (package
1774 (name "atool")
1775 (version "0.39.0")
1776 (source
1777 (origin
1778 (method url-fetch)
97ac5b70 1779 (uri (string-append "mirror://savannah/atool/atool-"
ef5c40aa
SR
1780 version ".tar.gz"))
1781 (sha256
1782 (base32
1783 "0fvhzip2v08jgnlfpyj6rapan39xlsl1ksgq4lp8gfsai2ah1xma"))))
1784 (build-system gnu-build-system)
1785 (arguments
1786 `(#:phases
1787 (modify-phases %standard-phases
1788 (add-after 'unpack 'embed-absolute-file-name
1789 (lambda* (#:key inputs #:allow-other-keys)
1790 (substitute* "atool"
1791 (("(^\\$::cfg_path_file.*= )'file'" _ pre)
1792 (string-append pre "'" (assoc-ref inputs "file")
1793 "/bin/file'")))
1794 #t)))))
1795 (inputs
1796 `(("perl" ,perl)
1797 ("file" ,file)))
340978d7 1798 (home-page "https://www.nongnu.org/atool/")
ef5c40aa
SR
1799 (synopsis "Universal tool to manage file archives of various types")
1800 (description "The main command is @command{aunpack} which extracts files
1801from an archive. The other commands provided are @command{apack} (to create
1802archives), @command{als} (to list files in archives), and @command{acat} (to
1803extract files to standard out). As @command{atool} invokes external programs
1804to handle the archives, not all commands may be supported for a certain type
1805of archives.")
1806 (license license:gpl2+)))
b44ecca6 1807
34e8cf22
TGR
1808(define-public lunzip
1809 (package
1810 (name "lunzip")
4bf11e25 1811 (version "1.12")
34e8cf22
TGR
1812 (source
1813 (origin
1814 (method url-fetch)
a28cd477
TGR
1815 (uri (string-append "mirror://savannah/lzip/lunzip/"
1816 "lunzip-" version ".tar.gz"))
34e8cf22 1817 (sha256
4bf11e25 1818 (base32 "1liaynyy3qcs29hfk1pnb7i9r1mnmpw557j5v356qsv6qnm4lnz5"))))
34e8cf22
TGR
1819 (build-system gnu-build-system)
1820 (arguments
1821 `(#:configure-flags
cb3ca320 1822 (list ,(string-append "CC=" (cc-for-target)))))
340978d7 1823 (home-page "https://www.nongnu.org/lzip/lunzip.html")
34e8cf22
TGR
1824 (synopsis "Small, stand-alone lzip decompressor")
1825 (description
1826 "Lunzip is a decompressor for files in the lzip compression format (.lz),
1827written as a single small C tool with no dependencies. This makes it
1828well-suited to embedded and other systems without a C++ compiler, or for use in
1829applications such as software installers that need only to decompress files,
1830not compress them.
1831Lunzip is intended to be fully compatible with the regular lzip package.")
1832 (license (list license:bsd-2 ; carg_parser.[ch]
1833 license:gpl2+)))) ; everything else
5dca4c76
TGR
1834
1835(define-public clzip
1836 (package
1837 (name "clzip")
afeb2e27 1838 (version "1.12")
5dca4c76
TGR
1839 (source
1840 (origin
1841 (method url-fetch)
39e5d3b6
TGR
1842 (uri (string-append "mirror://savannah/lzip/clzip/"
1843 "clzip-" version ".tar.gz"))
5dca4c76 1844 (sha256
afeb2e27 1845 (base32 "1s7yidqvmxi61hh569h5aci816l6qkffjgx0zx57qyyq0qq2pjgw"))))
5dca4c76
TGR
1846 (build-system gnu-build-system)
1847 (arguments
1848 `(#:configure-flags
cb056c40 1849 (list ,(string-append "CC=" (cc-for-target)))))
340978d7 1850 (home-page "https://www.nongnu.org/lzip/clzip.html")
5dca4c76
TGR
1851 (synopsis "Small, stand-alone lzip compressor and decompressor")
1852 (description
1853 "Clzip is a compressor and decompressor for files in the lzip compression
1854format (.lz), written as a single small C tool with no dependencies. This makes
1855it well-suited to embedded and other systems without a C++ compiler, or for use
1856in other applications like package managers.
1857Clzip is intended to be fully compatible with the regular lzip package.")
1858 (license (list license:bsd-2 ; carg_parser.[ch], lzd in clzip.texi
1859 license:gpl2+))))
2e3b1a92
TGR
1860
1861(define-public lzlib
1862 (package
1863 (name "lzlib")
57b0949a 1864 (version "1.12")
2e3b1a92
TGR
1865 (source
1866 (origin
1867 (method url-fetch)
76b2f084
TGR
1868 (uri (string-append "mirror://savannah/lzip/lzlib/"
1869 "lzlib-" version ".tar.gz"))
2e3b1a92 1870 (sha256
57b0949a 1871 (base32 "1c9pwd6by8is4z8bs6j306jyy6pgm2dvsn4fr7fg2b5m5qj88pcf"))))
2e3b1a92 1872 (build-system gnu-build-system)
2e3b1a92
TGR
1873 (arguments
1874 `(#:configure-flags
31dcc272 1875 (list (string-append "CC=" ,(cc-for-target))
6c519722 1876 "--disable-static"
2e3b1a92 1877 "--enable-shared"))) ; only static (.a) is built by default
340978d7 1878 (home-page "https://www.nongnu.org/lzip/lzlib.html")
2e3b1a92
TGR
1879 (synopsis "Lzip data compression C library")
1880 (description
1881 "Lzlib is a C library for in-memory LZMA compression and decompression in
1882the lzip format. It supports integrity checking of the decompressed data, and
1883all functions are thread-safe. The library should never crash, even in case of
1884corrupted input.")
1885 (license (list license:bsd-2 ; the library itself
1886 license:gpl2+)))) ; main.c (i.e. minilzip used by tests)
8c4ca853
TGR
1887
1888(define-public plzip
1889 (package
1890 (name "plzip")
341b2d3d 1891 (version "1.9")
8c4ca853
TGR
1892 (source
1893 (origin
1894 (method url-fetch)
894669a7
TGR
1895 (uri (string-append "mirror://savannah/lzip/plzip/"
1896 "plzip-" version ".tar.gz"))
8c4ca853 1897 (sha256
341b2d3d 1898 (base32 "19zinpx7hssl6r3vilpvq2s7wha3545xan8b0vcvsxnyipdx3n0l"))))
8c4ca853
TGR
1899 (build-system gnu-build-system)
1900 (inputs
1901 `(("lzlib" ,lzlib)))
340978d7 1902 (home-page "https://www.nongnu.org/lzip/plzip.html")
8c4ca853
TGR
1903 (synopsis "Parallel lossless data compressor for the lzip format")
1904 (description
1905 "Plzip is a massively parallel (multi-threaded) lossless data compressor
1906and decompressor that uses the lzip file format (.lz). Files produced by plzip
1907are fully compatible with lzip and can be rescued with lziprecover.
1908On multiprocessor machines, plzip can compress and decompress large files much
1909faster than lzip, at the cost of a slightly reduced compression ratio (0.4% to
19102%). The number of usable threads is limited by file size: on files of only a
1911few MiB, plzip is no faster than lzip.
1912Files that were compressed with regular lzip will also not be decompressed
1913faster by plzip, unless the @code{-b} option was used: lzip usually produces
1914single-member files which can't be decompressed in parallel.")
1915 (license (list license:bsd-2 ; arg_parser.{cc,h}
1916 license:gpl2+)))) ; everything else
e294c05e
RH
1917
1918(define-public innoextract
1919 (package
1920 (name "innoextract")
73996c02 1921 (version "1.9")
e294c05e
RH
1922 (source
1923 (origin
1924 (method url-fetch)
73996c02
TGR
1925 (uri (string-append "https://constexpr.org/innoextract/files/"
1926 "innoextract-" version "/"
ff983864 1927 "/innoextract-" version ".tar.gz"))
e294c05e 1928 (sha256
73996c02 1929 (base32 "09l1z1nbl6ijqqwszdwch9mqr54qb7df0wp2sd77v17dq6gsci33"))))
e294c05e
RH
1930 (build-system cmake-build-system)
1931 (arguments
73996c02 1932 `(#:tests? #f))
4cb9b726 1933 (inputs `(("boost" ,boost)
e294c05e
RH
1934 ("libiconv" ,libiconv)
1935 ("xz" ,xz)))
1936 (native-inputs `(("pkg-config" ,pkg-config)))
1937 (home-page "https://constexpr.org/innoextract/")
1938 (synopsis "Tool for extracting Inno Setup installers")
1939 (description "innoextract allows extracting Inno Setup installers under
1940non-Windows systems without running the actual installer using wine.")
1941 (license license:zlib)))
2ed0ef2f
LF
1942
1943(define-public google-brotli
1944 (package
1945 (name "google-brotli")
6b7c4833 1946 (version "1.0.9")
fc82c175
TGR
1947 (source
1948 (origin
1949 (method git-fetch)
1950 (uri (git-reference
b0e7b699 1951 (url "https://github.com/google/brotli")
fc82c175
TGR
1952 (commit (string-append "v" version))))
1953 (file-name (git-file-name name version))
1954 (sha256
6b7c4833
EF
1955 (base32 "1fikasxf7r2dwlk8mv8w7nmjkn0jw5ic31ky3mvpkdzwgd4xfndl"))
1956 (modules '((guix build utils)))
1957 (snippet
1958 '(begin
1959 ;; Cherry-picked from upstream since the latest release
1960 ;; https://github.com/google/brotli/commit/09b0992b6acb7faa6fd3b23f9bc036ea117230fc
1961 (substitute* (find-files "scripts" "^lib.*pc\\.in")
1962 (("-R\\$\\{libdir\\} ") ""))
1963 #t))))
2ed0ef2f
LF
1964 (build-system cmake-build-system)
1965 (arguments
1966 `(#:phases
1967 (modify-phases %standard-phases
1968 (add-after 'install 'rename-static-libraries
1969 ;; The build tools put a 'static' suffix on the static libraries, but
1970 ;; other applications don't know how to find these.
1971 (lambda* (#:key outputs #:allow-other-keys)
1972 (let ((lib (string-append (assoc-ref %outputs "out") "/lib/")))
1973 (rename-file (string-append lib "libbrotlicommon-static.a")
1974 (string-append lib "libbrotlicommon.a"))
1975 (rename-file (string-append lib "libbrotlidec-static.a")
1976 (string-append lib "libbrotlidec.a"))
1977 (rename-file (string-append lib "libbrotlienc-static.a")
1978 (string-append lib "libbrotlienc.a"))
1979 #t))))
1980 #:configure-flags
1981 (list ;; Defaults to "lib64" on 64-bit archs.
1982 (string-append "-DCMAKE_INSTALL_LIBDIR="
1983 (assoc-ref %outputs "out") "/lib"))))
1984 (home-page "https://github.com/google/brotli")
1985 (synopsis "General-purpose lossless compression")
1986 (description "This package provides the reference implementation of Brotli,
1987a generic-purpose lossless compression algorithm that compresses data using a
1988combination of a modern variant of the LZ77 algorithm, Huffman coding and 2nd
1989order context modeling, with a compression ratio comparable to the best
1990currently available general-purpose compression methods. It is similar in speed
1991with @code{deflate} but offers more dense compression.
1992
1993The specification of the Brotli Compressed Data Format is defined in RFC 7932.")
1994 (license license:expat)))
71987177 1995
83ac7cb4
LDB
1996(define-public brotli
1997 ;; We used to provide an older version under the name "brotli".
1998 (deprecated-package "brotli" google-brotli))
1999
d2b237d0
AI
2000(define-public python-google-brotli
2001 (package
2002 (inherit google-brotli)
2003 (name "python-google-brotli")
2004 (build-system python-build-system)
2005 (arguments '())
2006 (synopsis "Python interface to google-brotli")
2007 (description "@code{python-google-brotli} provides a Python interface to
2008@code{google-brotli}, an implementation of the Brotli lossless compression
2009algorithm.")))
2010
71987177
PN
2011(define-public ucl
2012 (package
2013 (name "ucl")
2014 (version "1.03")
2015 (source (origin
2016 (method url-fetch)
01c8b90b 2017 (uri (string-append "https://www.oberhumer.com/opensource/"
71987177
PN
2018 name "/download/" name "-" version ".tar.gz"))
2019 (sha256
2020 (base32
2021 "0j036lkwsxvm15gr29n8wn07cqq79dswjs9k54939ms5zngjjrdq"))))
2022 (build-system gnu-build-system)
7349f926
MB
2023 (arguments
2024 `(;; UCL 1.03 fails to build with newer C standards.
41c27444
MB
2025 #:configure-flags '("CFLAGS=-std=gnu90"
2026 "--enable-shared" "--disable-static")))
01c8b90b 2027 (home-page "https://www.oberhumer.com/opensource/ucl/")
71987177
PN
2028 (synopsis "Portable lossless data compression library")
2029 (description "UCL implements a number of compression algorithms that
2030achieve an excellent compression ratio while allowing fast decompression.
2031Decompression requires no additional memory.
2032
2033Compared to LZO, the UCL algorithms achieve a better compression ratio but
2034decompression is a little bit slower.")
2035 (license license:gpl2+)))
5735256d
PN
2036
2037(define-public upx
2038 (package
2039 (name "upx")
f5255ed3 2040 (version "3.96")
5735256d
PN
2041 (source (origin
2042 (method url-fetch)
2043 (uri (string-append "https://github.com/upx/upx/releases/download/v"
de5bc83c 2044 version "/upx-" version "-src.tar.xz"))
5735256d
PN
2045 (sha256
2046 (base32
f5255ed3 2047 "051pk5jk8fcfg5mpgzj43z5p4cn7jy5jbyshyn78dwjqr7slsxs7"))))
5735256d 2048 (build-system gnu-build-system)
d8963031
MB
2049 (native-inputs
2050 `(("perl" ,perl)))
2051 (inputs
2052 `(("ucl" ,ucl)
2053 ("zlib" ,zlib)))
5735256d
PN
2054 (arguments
2055 `(#:make-flags
f5255ed3 2056 (list "all")
5735256d
PN
2057 #:phases
2058 (modify-phases %standard-phases
7046106e
TGR
2059 (delete 'configure) ; no configure script
2060 (delete 'check) ; no test suite
5735256d
PN
2061 (add-before 'build 'patch-exec-bin-sh
2062 (lambda _
7046106e
TGR
2063 (substitute* (list "Makefile"
2064 "src/Makefile")
5735256d
PN
2065 (("/bin/sh") (which "sh")))
2066 #t))
7046106e 2067 (replace 'install
5735256d
PN
2068 (lambda* (#:key outputs #:allow-other-keys)
2069 (let* ((out (assoc-ref outputs "out"))
7046106e 2070 (bin (string-append out "/bin")))
5735256d
PN
2071 (mkdir-p bin)
2072 (copy-file "src/upx.out" (string-append bin "/upx")))
7046106e 2073 #t)))))
5735256d
PN
2074 (home-page "https://upx.github.io/")
2075 (synopsis "Compression tool for executables")
2076 (description
2077 "The Ultimate Packer for eXecutables (UPX) is an executable file
2078compressor. UPX typically reduces the file size of programs and shared
2079libraries by around 50%--70%, thus reducing disk space, network load times,
2080download times, and other distribution and storage costs.")
2081 (license license:gpl2+)))
09debcf5
NG
2082
2083(define-public quazip
2084 (package
2085 (name "quazip")
d84ddbb9 2086 (version "0.9.1")
09debcf5
NG
2087 (source (origin
2088 (method git-fetch)
2089 (uri (git-reference
b0e7b699 2090 (url "https://github.com/stachenov/quazip")
09debcf5
NG
2091 (commit (string-append "v" version))))
2092 (file-name (git-file-name name version))
2093 (sha256
2094 (base32
d84ddbb9 2095 "11icgwv2xyxhd1hm1add51xv54zwkcqkg85d1xqlgiigvbm196iq"))))
09debcf5
NG
2096 (build-system cmake-build-system)
2097 (arguments
2098 `(#:tests? #f)) ;no test
2099 (native-inputs
2100 `(("doxygen" ,doxygen)))
2101 (inputs
2102 `(("qtbase" ,qtbase)
2103 ("zlib" ,zlib)))
2104 (home-page "https://stachenov.github.io/quazip/index.html")
2105 (synopsis "Qt/C++ wrapper for Minizip")
2106 (description "QuaZIP is a simple C++ wrapper over Gilles Vollant's
2107ZIP/UNZIP package that can be used to access ZIP archives. It uses
2108Trolltech's Qt toolkit.
2109
2110QuaZIP allows you to access files inside ZIP archives using QIODevice
2111API, and that means that you can also use QTextStream, QDataStream or
2112whatever you would like to use on your zipped files.
2113
2114QuaZIP provides complete abstraction of the ZIP/UNZIP API, for both
2115reading from and writing to ZIP archives. ")
2116 ;; Project is distributed under LGPL, but "quazip/z*" "quazip/unzip.*" are
2117 ;; distributed under zlib terms.
2118 (license (list license:lgpl2.1+ license:zlib))))
f5111b4d
TGR
2119
2120(define-public zutils
2121 (package
2122 (name "zutils")
8818bb3a 2123 (version "1.10")
f5111b4d
TGR
2124 (source
2125 (origin
2126 (method url-fetch)
2127 (uri (string-append "mirror://savannah/zutils/zutils-" version ".tar.lz"))
2128 (sha256
8818bb3a 2129 (base32 "15dimqp8zlqaaa2l46r22srp1py38mlmn69ph1j5fmrd54w43m0d"))))
f5111b4d
TGR
2130 (build-system gnu-build-system)
2131 (arguments
2132 `(#:configure-flags
2133 (list "--sysconfdir=/etc")
2134 #:phases
2135 (modify-phases %standard-phases
1de23e55 2136 (add-before 'check 'disable-failing-tests
2f650473 2137 ;; XXX https://lists.nongnu.org/archive/html/zutils-bug/2020-07/msg00005.html
1de23e55
TGR
2138 (lambda _
2139 (substitute* "testsuite/check.sh"
2140 (("\"\\$\\{ZGREP\\}\" -N -L \"GNU\"") "true")
2141 (("\"\\$\\{ZGREP\\}\" -N -L \"nx_pattern\"") "false"))
2142 #t))
f5111b4d
TGR
2143 (replace 'install
2144 (lambda* (#:key make-flags outputs #:allow-other-keys)
2145 (apply invoke "make" "install"
2146 (string-append "sysconfdir=" (assoc-ref outputs "out")
2147 "/etc")
2148 make-flags))))))
2149 (native-inputs
2150 ;; Needed to extract the source tarball and run the test suite.
2151 `(("lzip" ,lzip)))
f5111b4d
TGR
2152 (home-page "https://www.nongnu.org/zutils/zutils.html")
2153 (synopsis "Utilities that transparently operate on compressed files")
2154 (description
2155 "Zutils is a collection of utilities able to process any combination of
2156compressed and uncompressed files transparently. If any given file, including
2157standard input, is compressed, its decompressed content is used instead.
2158
2159@command{zcat}, @command{zcmp}, @command{zdiff}, and @command{zgrep} are
2160improved replacements for the shell scripts provided by GNU gzip.
2161@command{ztest} tests the integrity of supported compressed files.
2162@command{zupdate} recompresses files with lzip, similar to gzip's
2163@command{znew}.
2164
2165Supported compression formats are bzip2, gzip, lzip, and xz. Zutils uses
2166external compressors: the compressor to be used for each format is configurable
2167at run time, and must be installed separately.")
2168 (license (list license:bsd-2 ; arg_parser.{cc,h}
2169 license:gpl2+)))) ; the rest
8ff5c735
PN
2170
2171(define-public makeself-safeextract
2172 (let ((commit "1a95e121fa8e3c02d307ae37b9b7834e616c3683"))
2173 (package
2174 (name "makeself-safeextract")
2175 (version (git-version "0.0.0" "1" commit))
2176 (home-page "https://github.com/ssokolow/makeself_safeextract")
2177 (source
2178 (origin
2179 (method git-fetch)
2180 (uri (git-reference
2181 (url home-page)
2182 (commit commit)))
2183 (file-name (git-file-name name version))
2184 (sha256
2185 (base32
2186 "1anlinaj9lvfi8bn00wp11vzqq0f9sig4fm9yrspisx31v0z4a2c"))))
2187 (build-system trivial-build-system)
2188 (inputs
2189 `(("python" ,python-2)
2190 ("p7zip" ,p7zip)
2191 ("unzip" ,unzip)))
2192 (arguments
2193 `(#:modules ((guix build utils))
2194 #:builder
2195 (begin
2196 (use-modules (guix build utils))
2197 (let* ((name "makeself_safeextract")
2198 (source (string-append (assoc-ref %build-inputs "source")
2199 "/" name ".py"))
2200 (bin (string-append (assoc-ref %outputs "out") "/bin"))
2201 (target (string-append bin "/" name))
2202 (python (string-append (assoc-ref %build-inputs "python") "/bin"))
2203 (7z (string-append (assoc-ref %build-inputs "p7zip") "/bin/7z"))
2204 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
2205 (setenv "PATH" (string-append (getenv "PATH") ":" python))
2206 (mkdir-p bin)
2207 (copy-file source target)
2208 (substitute* target
2209 (("'7z'") (format #f "'~a'" 7z))
2210 (("'unzip'") (format #f "'~a'" unzip)))
2211 (patch-shebang target)))))
2212 (synopsis "Extract makeself and mojo archives without running untrusted code")
2213 (description "This package provides a script to unpack self-extracting
2214archives generated by @command{makeself} or @command{mojo} without running the
2215possibly untrusted extraction shell script.")
2216 (license license:gpl3+))))
9720104c
JN
2217
2218(define-public ncompress
2219 (package
2220 (name "ncompress")
f38eabe9 2221 (version "4.2.4.6")
9720104c
JN
2222 (source (origin
2223 (method git-fetch)
2224 (uri (git-reference
2225 (url "https://github.com/vapier/ncompress")
2226 (commit (string-append "v" version))))
2227 (patches (search-patches "ncompress-fix-softlinks.patch"))
2228 (file-name (string-append name "-" version ".tar.gz"))
2229 (sha256
2230 (base32
f38eabe9 2231 "1a4yir1ilafz0nzxdwigj204j4yy2zljbc501nsaqqm3dxdap8zn"))))
9720104c
JN
2232 (arguments
2233 '(#:make-flags (list "CC=gcc"
2234 (string-append "BINDIR=" %output "/bin")
2235 (string-append "MANDIR=" %output "/share/man/man1"))
2236 #:phases (modify-phases %standard-phases
2237 (delete 'configure))))
2238 (build-system gnu-build-system)
2239 (home-page "https://github.com/vapier/ncompress/")
2240 (synopsis "Original Lempel-Ziv compress/uncompress programs")
2241 (description "(N)compress provides the original compress and uncompress
2242programs that used to be the de facto UNIX standard for compressing and
2243uncompressing files. These programs implement a fast, simple Lempel-Ziv (LZW)
2244file compression algorithm.")
2245 (license license:gpl2+)))
0745e28d
RG
2246
2247(define-public xarchiver
2248 (package
2249 (name "xarchiver")
43e09b43 2250 (version "0.5.4.17")
0745e28d
RG
2251 (source
2252 (origin
2253 (method git-fetch)
2254 (uri (git-reference
b0e7b699 2255 (url "https://github.com/ib/xarchiver")
0745e28d
RG
2256 (commit version)))
2257 (file-name (git-file-name name version))
2258 (sha256
43e09b43 2259 (base32 "00adrjpxqlaccrwjf65w3vhxfswdj0as8aj263c6f9b85llypc5v"))))
0745e28d
RG
2260 (build-system glib-or-gtk-build-system)
2261 (native-inputs
2262 `(("gettext" ,gettext-minimal)
2263 ("intltool" ,intltool)
2264 ("libxslt" ,libxslt)
2265 ("pkg-config" ,pkg-config)))
2266 (inputs
ddde8a07 2267 `(("adwaita-icon-theme" ,adwaita-icon-theme) ; hard-coded theme
0745e28d
RG
2268 ("gtk+" ,gtk+)))
2269 (home-page "https://github.com/ib/xarchiver")
2270 (synopsis "Graphical front-end for archive operations")
2271 (description "Xarchiver is a front-end to various command line archiving
2272tools. It uses GTK+ tool-kit and is designed to be desktop-environment
2273independent. Supported formats are 7z, ARJ, bzip2, gzip, LHA, lzma, lzop,
2274RAR, RPM, DEB, tar, and ZIP. It cannot perform functions for archives, whose
2275archiver is not installed.")
2276 (license license:gpl2+)))
910bf1f7
LDB
2277
2278(define-public tarsplitter
2279 (package
2280 (name "tarsplitter")
2281 (version "2.2.0")
2282 (source (origin
2283 (method git-fetch)
2284 (uri (git-reference
b0e7b699 2285 (url "https://github.com/AQUAOSOTech/tarsplitter")
910bf1f7
LDB
2286 (commit (string-append "v" version))))
2287 (file-name (git-file-name name version))
2288 (sha256
2289 (base32
2290 "17qkg95r97kcrs17b0mcqswx99280ni47j5yx8xa7nl3bdhm6325"))))
2291 (build-system go-build-system)
2292 (arguments
2293 `(#:import-path "github.com/AQUAOSOTech/tarsplitter"
2294 #:install-source? #f
2295 #:phases
2296 (modify-phases %standard-phases
2297 (add-after 'install 'install-documentation
2298 (lambda* (#:key import-path outputs #:allow-other-keys)
2299 (let* ((source (string-append "src/" import-path))
2300 (out (assoc-ref outputs "out"))
2301 (doc (string-append out "/share/doc/" ,name "-" ,version)))
2302 (with-directory-excursion source
2303 (install-file "README.md" doc))
2304 #t))))))
2305 (home-page "https://github.com/AQUAOSOTech/tarsplitter")
2306 (synopsis "Multithreaded tar utility")
2307 (description
bb6d9e26 2308 "Archive huge numbers of files, or split massive tar archives into smaller
910bf1f7
LDB
2309chunks.")
2310 (license license:expat)))
9a2fcb63
RW
2311
2312(define-public c-blosc
2313 (package
2314 (name "c-blosc")
2315 (version "1.18.1")
2316 (source (origin
2317 (method git-fetch)
2318 (uri (git-reference
b0e7b699 2319 (url "https://github.com/Blosc/c-blosc")
9a2fcb63
RW
2320 (commit (string-append "v" version))))
2321 (file-name (git-file-name name version))
2322 (sha256
2323 (base32
2324 "1ywq8j70149859vvs19wgjq89d6xsvvmvm2n1dmkzpchxgrvnw70"))))
2325 (build-system cmake-build-system)
2326 (home-page "https://blosc.org")
2327 (synopsis "Blocking, shuffling and lossless compression library")
2328 (description
2329 "Blosc is a high performance compressor optimized for binary data. It has
2330been designed to transmit data to the processor cache faster than the
2331traditional, non-compressed, direct memory fetch approach via a
2332@code{memcpy()} system call. Blosc is meant not only to reduce the size of
2333large datasets on-disk or in-memory, but also to accelerate memory-bound
2334computations.")
2335 ;; Blosc itself is released under BSD-3 but it incorporates code under
2336 ;; other non-copyleft licenses.
2337 (license license:bsd-3)))
3480ceb1
KK
2338
2339(define-public ecm
2340 (package
2341 (name "ecm")
2342 (version "1.0.3")
2343 (source (origin
2344 (method git-fetch)
2345 (uri (git-reference
2346 (url "https://github.com/alucryd/ecm-tools")
2347 (commit (string-append "v" version))))
2348 (file-name (git-file-name name version))
2349 (sha256
2350 (base32
2351 "1rvyx5gcy8lfklgj80szlz3312x45wzx0d9jsgwyvy8f6m4nnb0c"))))
2352 (build-system gnu-build-system)
2353 (arguments
2354 `(#:tests? #f ; no check target
2355 #:make-flags
1ca44ae3
MB
2356 (list (string-append "CC=" ,(cc-for-target))
2357 (string-append "DESTDIR=" (assoc-ref %outputs "out")))
3480ceb1
KK
2358 #:phases
2359 (modify-phases %standard-phases
2360 (replace 'configure
2361 (lambda _
2362 (substitute* "Makefile"
2363 (("\\$\\(DESTDIR\\)/usr") "$(DESTDIR)"))
2364 #t)))))
2365 (home-page "https://github.com/alucryd/ecm-tools")
2366 (synopsis "Error code modeler")
2367 (description "ECM is a utility that converts ECM files, i.e., CD data files
2368with their error correction data losslessly rearranged for better compression,
2369to their original, binary CD format.")
2370 (license license:gpl3+)))
ff43f128
GLV
2371
2372(define-public tarlz
2373 (package
2374 (name "tarlz")
e7195e83 2375 (version "0.19")
ff43f128
GLV
2376 (source
2377 (origin
2378 (method url-fetch)
2379 (uri (string-append "mirror://savannah/lzip/tarlz/"
2380 "tarlz-" version ".tar.lz"))
2381 (sha256
e7195e83 2382 (base32 "09xal55973ivzpaja93jcc1pfla8gb3vrk8dx7pj9qvvz5aynf9n"))))
ff43f128
GLV
2383 (build-system gnu-build-system)
2384 (native-inputs
2385 `(("lzip" ,lzip)))
2386 (inputs
2387 `(("lzlib" ,lzlib)))
2388 (home-page "https://www.nongnu.org/lzip/tarlz.html")
2389 (synopsis "Combination of the tar archiver and the lzip compressor")
2390 (description
2391 "Tarlz is a massively parallel (multi-threaded) combined implementation of
2392the tar archiver and the lzip compressor. Tarlz creates, lists, and extracts
2393archives in a simplified and safer variant of the POSIX pax format compressed
2394with lzip, keeping the alignment between tar members and lzip members. The
2395resulting multimember tar.lz archive is fully backward compatible with standard
2396tar tools like GNU tar, which treat it like any other tar.lz archive. Tarlz
2397can append files to the end of such compressed archives.")
2398 (license license:gpl2+)))