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