X-Git-Url: http://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/7e6df0e99305c800a24b9217776f8b75dad3bab9..a7e0266c9bccbd3248021f158870dc94f7c8ffe0:/gnu/packages/compression.scm diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm index 72e2d1343c..c5f24baeb4 100644 --- a/gnu/packages/compression.scm +++ b/gnu/packages/compression.scm @@ -1,19 +1,19 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014, 2015, 2017, 2019 Ludovic Courtès +;;; Copyright © 2012, 2013, 2014, 2015, 2017, 2019, 2020 Ludovic Courtès ;;; Copyright © 2013 Andreas Enge ;;; Copyright © 2014, 2015, 2018 Mark H Weaver ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer ;;; Copyright © 2015, 2016 Eric Bavier -;;; Copyright © 2015, 2016, 2017, 2018, 2020 Ricardo Wurmus +;;; Copyright © 2015, 2016, 2017, 2018, 2020, 2021 Ricardo Wurmus ;;; Copyright © 2015, 2017, 2018 Leo Famulari ;;; Copyright © 2015 Jeff Mickey -;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Efraim Flashner +;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner ;;; Copyright © 2016 Ben Woodcroft ;;; Copyright © 2016 Danny Milosavljevic -;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice +;;; Copyright © 2016–2021 Tobias Geerinckx-Rice ;;; Copyright © 2016 David Craven ;;; Copyright © 2016, 2019, 2020 Kei Kebreau -;;; Copyright © 2016, 2018, 2019, 2020 Marius Bakke +;;; Copyright © 2016, 2018, 2019, 2020, 2021 Marius Bakke ;;; Copyright © 2017 Nikita ;;; Copyright © 2017 Manolis Fragkiskos Ragkousis ;;; Copyright © 2017 Theodoros Foradis @@ -27,7 +27,11 @@ ;;; Copyright © 2019 Jan (janneke) Nieuwenhuizen ;;; Copyright © 2020 Björn Höfling ;;; Copyright © 2020 Arun Isaac -;;; Copyright © 2020 Lars-Dominik Braun +;;; Copyright © 2020, 2021 Lars-Dominik Braun +;;; Copyright © 2020 Guillaume Le Vaillant +;;; Copyright © 2020 Léo Le Bouter +;;; Copyright © 2021 Antoine Côté +;;; Copyright © 2021 Vincent Legoll ;;; ;;; This file is part of GNU Guix. ;;; @@ -54,6 +58,7 @@ #:use-module (guix build-system glib-or-gtk) #:use-module (guix build-system gnu) #:use-module (guix build-system go) + #:use-module (guix build-system meson) #:use-module (guix build-system python) #:use-module (guix build-system trivial) #:use-module (gnu packages) @@ -61,6 +66,7 @@ #:use-module (gnu packages autotools) #:use-module (gnu packages backup) #:use-module (gnu packages base) + #:use-module (gnu packages benchmark) #:use-module (gnu packages boost) #:use-module (gnu packages check) #:use-module (gnu packages curl) @@ -69,7 +75,10 @@ #:use-module (gnu packages gettext) #:use-module (gnu packages glib) #:use-module (gnu packages gnome) + #:use-module (gnu packages gnupg) #:use-module (gnu packages gtk) + #:use-module (gnu packages llvm) + #:use-module (gnu packages man) #:use-module (gnu packages maths) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) @@ -77,9 +86,10 @@ #:use-module (gnu packages qt) #:use-module (gnu packages tls) #:use-module (gnu packages valgrind) + #:use-module (gnu packages version-control) #:use-module (gnu packages xml) #:use-module (ice-9 match) - #:use-module ((srfi srfi-1) #:select (last))) + #:use-module (srfi srfi-1)) (define-public zlib (package @@ -620,14 +630,14 @@ archiving. Lzip is a clean implementation of the LZMA algorithm.") (define-public lziprecover (package (name "lziprecover") - (version "1.21") + (version "1.22") (source (origin (method url-fetch) (uri (string-append "mirror://savannah/lzip/lziprecover/" "lziprecover-" version ".tar.gz")) (sha256 (base32 - "094w2z8fz41yaq0gkyr61cl7pb1d7kchpl5dka7rvm3qvbb7ncd2")))) + "0qh8dnhr5rly2k9dnx43qqynqwqzi5kfb15pyd29qwppfl4qm5gx")))) (build-system gnu-build-system) (home-page "https://www.nongnu.org/lzip/lziprecover.html") (synopsis "Recover and decompress data from damaged lzip files") @@ -663,6 +673,7 @@ decompressors when faced with corrupted input.") (modules '((guix build utils))) (snippet '(begin + ;; Adjust for newer libc versions. (substitute* (find-files "lib" "\\.c$") (("#if defined _IO_ftrylockfile") "#if defined _IO_EOF_SEEN")) @@ -672,9 +683,15 @@ decompressors when faced with corrupted input.") "# define _IO_IN_BACKUP 0x100\n" "#endif\n\n" "/* BSD stdio derived implementations"))) - #t)))) + ;; ... and for newer GCC with -fno-common. + (substitute* '("src/shar-opts.h" + "src/unshar-opts.h" + "src/uudecode-opts.h" + "src/uuencode-opts.h") + (("char const \\* const program_name" all) + (string-append "extern " all))))))) (build-system gnu-build-system) - (inputs + (native-inputs `(("which" ,which))) (arguments `(#:phases @@ -684,8 +701,7 @@ decompressors when faced with corrupted input.") ;; in fact test data (lambda _ (substitute* "tests/shar-1.ok" - (((which "sh")) "/bin/sh")) - #t))))) + (((which "sh")) "/bin/sh"))))))) (home-page "https://www.gnu.org/software/sharutils/") (synopsis "Archives in shell scripts, uuencode/uudecode") (description @@ -786,39 +802,46 @@ decompression of some loosely related file formats used by Microsoft.") (define-public lz4 (package (name "lz4") - (version "1.9.2") + (version "1.9.3") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/lz4/lz4") (commit (string-append "v" version)))) (sha256 - (base32 - "0lpaypmk70ag2ks3kf2dl4ac3ba40n5kc1ainkp9wfjawz76mh61")) + (base32 "1w02kazh1fps3sji2sn89fz862j1199c5ajrqcgl1bnlxj09kcbz")) (file-name (git-file-name name version)))) (build-system gnu-build-system) + (outputs (list "out" "static")) (native-inputs `(;; For tests. ("python" ,python) ("valgrind" ,valgrind))) (arguments - `(#:test-target "test" - #:make-flags (list "CC=gcc" + `(;; Not designed for parallel testing. + ;; See https://github.com/lz4/lz4/issues/957#issuecomment-737419821 + #:parallel-tests? #f + #:test-target "test" + #:make-flags (list (string-append "CC=" ,(cc-for-target)) (string-append "prefix=" (assoc-ref %outputs "out"))) - #:phases (modify-phases %standard-phases - (delete 'configure) ;no configure script - (add-before 'check 'disable-broken-test - (lambda _ - ;; XXX: test_install.sh fails when prefix is a subdirectory. - (substitute* "tests/Makefile" - (("^test: (.*) test-install" _ targets) - (string-append "test: " targets))) - #t)) - (add-after 'install 'delete-static-library - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (delete-file (string-append out "/lib/liblz4.a")) - #t)))))) + #:phases + (modify-phases %standard-phases + (delete 'configure) ; no configure script + (add-before 'check 'disable-broken-test + (lambda _ + (substitute* "tests/Makefile" + ;; This fails when $prefix is not a single top-level directory. + (("^test: (.*) test-install" _ targets) + (string-append "test: " targets))) + #t)) + (add-after 'install 'move-static-library + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (static (assoc-ref outputs "static"))) + (mkdir-p (string-append static "/lib")) + (rename-file (string-append out "/lib/liblz4.a") + (string-append static "/lib/liblz4.a")) + #t)))))) (home-page "https://www.lz4.org") (synopsis "Compression algorithm focused on speed") (description "LZ4 is a lossless compression algorithm, providing @@ -833,57 +856,65 @@ time for compression ratio.") (define-public squashfs-tools (package (name "squashfs-tools") - (version "4.4") - (source (origin - (method url-fetch) - (uri (string-append "mirror://sourceforge/squashfs/squashfs/" - "squashfs" version "/" - "squashfs" version ".tar.gz")) - (sha256 - (base32 - "0zmhvczscqz0mzh4b9m8m42asq14db0a6lc8clp5ljq5ybrv70d9")))) + (version "4.4-git.1") ; ‘A point release of […] 4.4’ + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/plougher/squashfs-tools") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1hb95iy445hs2p3f7hg51jkrpkfi3bphddk60p2la0qmcdjkgbbm")))) (build-system gnu-build-system) (arguments - '(#:tests? #f ; no check target + `(#:tests? #f ; no check target #:make-flags - (list "CC=gcc" + (list (string-append "CC=" ,(cc-for-target)) "XZ_SUPPORT=1" "LZO_SUPPORT=1" "LZ4_SUPPORT=1" + "ZSTD_SUPPORT=1" (string-append "INSTALL_DIR=" %output "/bin")) #:phases (modify-phases %standard-phases (replace 'configure (lambda _ - (chdir "squashfs-tools") - #t))))) + (chdir "squashfs-tools"))) + (add-after 'install 'install-documentation + ;; Install what very little usage documentation is provided. + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (doc (string-append out "/share/doc/" ,name))) + (install-file "../USAGE" doc))))))) (inputs `(("lz4" ,lz4) ("lzo" ,lzo) ("xz" ,xz) - ("zlib" ,zlib))) + ("zlib" ,zlib) + ("zstd:lib" ,zstd "lib"))) (home-page "https://github.com/plougher/squashfs-tools") (synopsis "Tools to create and extract squashfs file systems") (description - "Squashfs is a highly compressed read-only file system for Linux. It uses -zlib to compress files, inodes, and directories. All blocks are packed to -minimize the data overhead, and block sizes of between 4K and 1M are supported. -It is intended to be used for archival use, for live CDs, and for embedded -systems where low overhead is needed. This package allows you to create and -extract such file systems.") + "Squashfs is a highly compressed read-only file system for Linux. It +compresses files, inodes, and directories with one of several compressors. +All blocks are packed to minimize the data overhead, and block sizes of +between 4K and 1M are supported. It is intended to be used for archival use, +for live media, and for embedded systems where low overhead is needed. +This package allows you to create and extract such file systems.") (license license:gpl2+))) (define-public pigz (package (name "pigz") - (version "2.4") + (version "2.6") (source (origin (method url-fetch) (uri (string-append "http://zlib.net/pigz/" name "-" version ".tar.gz")) (sha256 (base32 - "0wsgw5vwl23jrnpsvd8v3xcp5k4waw5mk0164fynjhkv58i1dy54")))) + "0z9avc4mifwcpj3qdsf9m2rjw9jx03b2r9pj0c4xgla9fh6ppv9f")))) (build-system gnu-build-system) (arguments `(#:phases @@ -915,7 +946,7 @@ multiple processors and multiple cores when compressing data.") (define-public pixz (package (name "pixz") - (version "1.0.6") + (version "1.0.7") (source (origin (method url-fetch) (uri (string-append @@ -923,7 +954,7 @@ multiple processors and multiple cores when compressing data.") "/pixz-" version ".tar.xz")) (sha256 (base32 - "1s3j7zw6j5zi3fhdxg287ndr3wf6swac7z21mqd1pyiln530gi82")))) + "1ifxr18f2h75gkcrkx8033kwmwmrcgxshpaawyc2n4dzn1p2rqz5")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) @@ -938,43 +969,6 @@ possible and can compress in parallel. This is especially useful for large tarballs.") (license license:bsd-2))) -(define-public bsdiff - (package - (name "bsdiff") - (version "4.3") - (home-page "https://www.daemonology.net/bsdiff/") - (source (origin - (method url-fetch) - (uri (string-append home-page name "-" version ".tar.gz")) - (sha256 - (base32 - "0j2zm3z271x5aw63mwhr3vymzn45p2vvrlrpm9cz2nywna41b0hq")))) - (build-system gnu-build-system) - (arguments - `(#:make-flags (list "INSTALL=install" "CC=gcc" - (string-append "PREFIX=" (assoc-ref %outputs "out"))) - #:phases (modify-phases %standard-phases - (delete 'configure) - (add-before 'build 'fix-Makefile - (lambda _ - (substitute* "Makefile" - ;; Adjust syntax to make it compatible with GNU Make. - (("^\\.") "") - ;; Help install(1) create the target directory. - (("\\$\\{PREFIX\\}") "-D -t ${PREFIX}")) - #t))) - #:tests? #f)) ;no tests - (inputs - `(("bzip2" ,bzip2))) - (synopsis "Patch binary files") - (description - "@command{bsdiff} and @command{bspatch} are tools for building and -applying patches to binary files. By using suffix sorting (specifically -Larsson and Sadakane's @code{qsufsort}) and taking advantage of how -executable files change, bsdiff routinely produces binary patches 50-80% -smaller than those produced by @code{Xdelta}.") - (license license:bsd-2))) - (define-public cabextract (package (name "cabextract") @@ -1019,6 +1013,41 @@ smaller than those produced by @code{Xdelta}.") ;; Some source files specify gpl2+, lgpl2+, however COPYING is gpl3. (license license:gpl3+))) +(define-public libjcat + (package + (name "libjcat") + (version "0.1.8") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/hughsie/libjcat") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "18qkyg19r7fxzv93kar5n808n3582ygjmqwa7rnyg5y4b6hnwihl")))) + (build-system meson-build-system) + (native-inputs + `(("gobject-introspection" ,gobject-introspection) + ("help2man" ,help2man) + ("pkg-config" ,pkg-config))) + (inputs + `(("git" ,git) + ("glib" ,glib) + ("gnupg" ,gnupg) + ("gnutls" ,gnutls) + ("gpgme" ,gpgme) + ("json-glib" ,json-glib) + ("vala" ,vala))) + (home-page "https://github.com/hughsie/libjcat") + (synopsis "Library for reading and writing Jcat files") + (description + "This library allows reading and writing gzip-compressed JSON catalog +files, which can be used to store GPG, PKCS-7 and SHA-256 checksums for each +file.") + (license license:lgpl2.1+))) + (define-public xdelta (package (name "xdelta") @@ -1059,16 +1088,14 @@ human-readable output.") (define-public lrzip (package (name "lrzip") - (version "0.631") + (version "0.641") (source (origin (method url-fetch) (uri (string-append - "http://ck.kolivas.org/apps/lrzip/lrzip-" version ".tar.bz2")) + "http://ck.kolivas.org/apps/lrzip/lrzip-" version ".tar.xz")) (sha256 - (base32 - "0mb449vmmwpkalq732jdyginvql57nxyd31sszb108yps1lf448d")) - (patches (search-patches "lrzip-CVE-2017-8842.patch")))) + (base32 "0ziyanspd96dc3lp2qdcylc7aq8dhb511jhqrhxvlp502fjqjqrc")))) (build-system gnu-build-system) (native-inputs `(;; nasm is only required when building for 32-bit x86 platforms @@ -1079,6 +1106,7 @@ human-readable output.") ("perl" ,perl))) (inputs `(("bzip2" ,bzip2) + ("lz4" ,lz4) ("lzo" ,lzo) ("zlib" ,zlib))) (home-page "http://ck.kolivas.org/apps/lrzip/") @@ -1096,7 +1124,7 @@ well as bzip2.") (define-public snappy (package (name "snappy") - (version "1.1.8") + (version "1.1.9") (source (origin (method git-fetch) @@ -1105,11 +1133,35 @@ well as bzip2.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1j0kslq2dvxgkcxl1gakhvsa731yrcvcaipcp5k8k7ayicvkv9jv")) - (patches (search-patches "snappy-add-O2-flag-in-CmakeLists.txt.patch")))) + (base32 "03zz56h79z0sgvi5sangjqn9dahhzvf645v26n1y0gwmfbmsax95")) + (patches + (search-patches "snappy-add-O2-flag-in-CmakeLists.txt.patch" + "snappy-add-inline-for-GCC.patch")))) (build-system cmake-build-system) (arguments - `(#:configure-flags '("-DBUILD_SHARED_LIBS=ON"))) + `(#:configure-flags + (list "-DBUILD_SHARED_LIBS=ON" + ;; These would be installed alongside Snappy otherwise. + "-DBENCHMARK_ENABLE_INSTALL=OFF" + "-DINSTALL_GTEST=OFF") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'unpack-third_party-subprojects + (lambda* (#:key inputs #:allow-other-keys) + (with-directory-excursion "third_party" + (for-each (lambda (subproject) + (let* ((input (string-append subproject "-source")) + (source (assoc-ref inputs input))) + (with-directory-excursion subproject + ;; Take advantage of the coincidence that both + ;; use GIT-FETCH, which creates a directory. + (copy-recursively source ".")))) + (list "benchmark" + "googletest")) + #;punt)))))) + (native-inputs + `(("benchmark-source" ,(package-source benchmark)) + ("googletest-source" ,(package-source googletest)))) (home-page "https://github.com/google/snappy") (synopsis "Fast compressor/decompressor") (description "Snappy is a compression/decompression library. It does not @@ -1120,6 +1172,54 @@ for most inputs, but the resulting compressed files are anywhere from 20% to 100% bigger.") (license license:asl2.0))) +;; We need this for irods. +(define-public snappy-with-clang6 + (package + (inherit snappy) + (name "snappy-with-clang") + ;; XXX 1.1.9 fails to build with clang with + ;; error: invalid output constraint '=@ccz' in asm + (version "1.1.8") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/google/snappy") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1j0kslq2dvxgkcxl1gakhvsa731yrcvcaipcp5k8k7ayicvkv9jv")))) + (arguments + `(#:configure-flags + '("-DBUILD_SHARED_LIBS=ON" + "-DCMAKE_CXX_COMPILER=clang++" + "-DCMAKE_CXX_FLAGS=-stdlib=libc++" + "-DCMAKE_EXE_LINKER_FLAGS=-lc++abi") + #:phases + (modify-phases %standard-phases + (add-after 'set-paths 'adjust-CPLUS_INCLUDE_PATH + (lambda* (#:key native-inputs inputs #:allow-other-keys) + (let ((gcc (assoc-ref (or native-inputs inputs) "gcc"))) + (setenv "CPLUS_INCLUDE_PATH" + (string-join + (cons* (string-append (assoc-ref inputs "libcxx+libcxxabi") + "/include/c++/v1") + ;; Hide GCC's C++ headers so that they do not interfere with + ;; the Clang headers. + (delete (string-append gcc "/include/c++") + (string-split (getenv "CPLUS_INCLUDE_PATH") + #\:))) + ":")) + (format #true + "environment variable `CPLUS_INCLUDE_PATH' changed to ~a~%" + (getenv "CPLUS_INCLUDE_PATH")))))))) + (properties `((hidden? . #true))) + (native-inputs + `(("clang" ,clang-toolchain-6))) + (inputs + `(("libcxx+libcxxabi" ,libcxx+libcxxabi-6) + ("libcxxabi" ,libcxxabi-6))))) + (define-public p7zip (package (name "p7zip") @@ -1212,6 +1312,12 @@ handles the 7z format which features very high compression ratios.") `(#:test-target "test" #:phases (modify-phases %standard-phases + ;; Enable PIC, so it can be used in shared libraries. + (add-after 'unpack 'use-pic + (lambda _ + (substitute* "Makefile" + (("CPPFLAGS = " all) (string-append all "-fPIC "))) + #t)) (delete 'configure) (replace 'install (lambda* (#:key outputs #:allow-other-keys) @@ -1296,7 +1402,7 @@ or junctions, and always follows hard links.") (source (origin (method git-fetch) (uri (git-reference - (url "http://github.com/twogood/unshield.git") + (url "http://github.com/twogood/unshield") (commit version))) (file-name (git-file-name name version)) (sha256 @@ -1391,6 +1497,7 @@ or junctions, and always follows hard links.") "v" version "/zstd-" version ".tar.gz")) (sha256 (base32 "05ckxap00qvc0j51d3ci38150cxsw82w7s9zgd5fgzspnzmp1vsr")))) + (replacement zstd/fixed) (build-system gnu-build-system) (outputs '("out" ;1.2MiB executables and documentation "lib" ;1.2MiB shared library and headers @@ -1421,7 +1528,10 @@ or junctions, and always follows hard links.") #t)))) #:make-flags - (list "CC=gcc" + ;; TODO: Integrate in next rebuild cycle. + (list ,(if (%current-target-system) + (string-append "CC=" (cc-for-target)) + "CC=gcc") (string-append "PREFIX=" (assoc-ref %outputs "out")) (string-append "LIBDIR=" (assoc-ref %outputs "lib") "/lib") (string-append "INCLUDEDIR=" (assoc-ref %outputs "lib") "/include") @@ -1447,14 +1557,29 @@ speed.") license:public-domain ; zlibWrapper/examples/fitblk* license:zlib)))) ; zlibWrapper/{gz*.c,gzguts.h} -(define-public pzstd +(define zstd/fixed (package + (inherit zstd) + (source + (origin + (inherit (package-source zstd)) + (patches + (search-patches + ;; From Ubuntu focal-security + "zstd-CVE-2021-24031_CVE-2021-24032.patch")))))) + +(define-public pzstd + (package/inherit zstd (name "pzstd") - (version (package-version zstd)) - (source (package-source zstd)) - (build-system gnu-build-system) + (outputs '("out")) + (inputs + `(,@(if (%current-target-system) + `(("googletest" ,googletest)) + '()))) (native-inputs - `(("googletest" ,googletest))) + `(,@(if (%current-system) + `(("googletest" ,googletest)) + '()))) (arguments `(#:phases (modify-phases %standard-phases @@ -1472,7 +1597,8 @@ speed.") (install-file "README.md" doc) #t)))) #:make-flags - (list "CC=gcc" + (list (string-append "CC=" ,(cc-for-target)) + (string-append "CXX=" ,(cxx-for-target)) (string-append "PREFIX=" (assoc-ref %outputs "out"))))) (home-page (package-home-page zstd)) (synopsis "Threaded implementation of the Zstandard compression algorithm") @@ -1555,6 +1681,7 @@ Compression ratios of 2:1 to 3:1 are common for text files.") "unzip-overflow-on-invalid-input.patch" "unzip-format-secure.patch" "unzip-overflow-long-fsize.patch")))) + (replacement unzip/fixed) (build-system gnu-build-system) ;; no inputs; bzip2 is not supported, since not compiled with BZ_NO_STDIO (arguments @@ -1590,6 +1717,106 @@ recreates the stored directory structure by default.") (license (license:non-copyleft "file://LICENSE" "See LICENSE in the distribution.")))) +(define unzip/fixed + (package + (inherit unzip) + (version "6.0") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/infozip" + "/UnZip%206.x%20%28latest%29/UnZip%206.0/unzip60.tar.gz")) + (sha256 + (base32 + "0dxx11knh3nk95p2gg2ak777dd11pr7jx5das2g49l262scrcv83")) + (patches (search-patches "unzip-CVE-2014-8139.patch" + "unzip-CVE-2014-8140.patch" + "unzip-CVE-2014-8141.patch" + "unzip-CVE-2014-9636.patch" + "unzip-CVE-2015-7696.patch" + "unzip-CVE-2015-7697.patch" + "unzip-allow-greater-hostver-values.patch" + "unzip-initialize-symlink-flag.patch" + "unzip-remove-build-date.patch" + "unzip-attribs-overflow.patch" + "unzip-overflow-on-invalid-input.patch" + "unzip-format-secure.patch" + "unzip-overflow-long-fsize.patch" + + ;; From Fedora + "unzip-alt-iconv-utf8.patch" + "unzip-alt-iconv-utf8-print.patch" + "unzip-fix-recmatch.patch" + "unzip-case-insensitive.patch" + "unzip-close.patch" + "unzip-COVSCAN-fix-unterminated-string.patch" + "unzip-CVE-2016-9844.patch" + "unzip-CVE-2018-1000035.patch" + "unzip-CVE-2018-18384.patch" + "unzip-exec-shield.patch" + "unzip-manpage-fix.patch" + "unzip-overflow.patch" + "unzip-timestamp.patch" + "unzip-valgrind.patch" + "unzip-x-option.patch" + ;; CVE-2019-13232 + "unzip-zipbomb-manpage.patch" + "unzip-zipbomb-part1.patch" + "unzip-zipbomb-part2.patch" + "unzip-zipbomb-part3.patch" + + ;; https://github.com/madler/unzip/issues/2 + "unzip-32bit-zipbomb-fix.patch")))))) + +(define-public ziptime + (let ((commit "2a5bc9dfbf7c6a80e5f7cb4dd05b4036741478bc") + (revision "0")) + (package + (name "ziptime") + (version (git-version "0.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://android.googlesource.com/platform/build") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0hrn61b3a97dlc4iqc28rwx8k8zf7ycbwzqqp93vj34zy5a541kn")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; no test suite + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'change-directory + (lambda _ + (chdir "tools/ziptime"))) + (delete 'configure) ; nothing to configure + (replace 'build + ;; There is no Makefile, only an ‘Android.bp’ file. Ignore it. + (lambda _ + (let ((c++ ,(cxx-for-target))) + (apply invoke c++ "-O2" "-o" "ziptime" + (find-files "." "\\.cpp$"))))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (doc (string-append out "/share/doc/" ,name "-" ,version))) + (install-file "ziptime" bin) + (install-file "README.txt" doc))))))) + ;; There is no separate home page for this tiny bundled build tool. + (home-page (string-append "https://android.googlesource.com/platform/build/" + "+/master/tools/ziptime/README.txt")) + (synopsis "Normalize @file{.zip} archive header timestamps") + (description + "Ziptime helps make @file{.zip} archives reproducible by replacing +timestamps in the file header with a fixed time (1 January 2008). + +``Extra fields'' are not changed, so you'll need to use the @code{-X} option to +@command{zip} to prevent it from storing the ``universal time'' field.") + (license license:asl2.0)))) + (define-public zziplib (package (name "zziplib") @@ -1604,6 +1831,7 @@ recreates the stored directory structure by default.") (sha256 (base32 "0fbk9k7ryas2wh2ykwkvm1pbi40i88rfvc3dydh9xyd7w2jcki92")))) + (replacement zziplib/fixed) (build-system gnu-build-system) (arguments `(#:phases (modify-phases %standard-phases @@ -1632,6 +1860,40 @@ recreates the stored directory structure by default.") ;; files carry the Zlib license; see "docs/copying.html" for details. (license (list license:lgpl2.0+ license:mpl1.1)))) +(define-public zziplib/fixed + (package + (inherit zziplib) + (name "zziplib") + (version "0.13.72") + (home-page "https://github.com/gdraheim/zziplib") + (source (origin + (method git-fetch) + (uri (git-reference (url home-page) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0i6bpa2b13z19alm6ig80364dnin1w28cvif18k6wkkb0w3dzp8y")))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'install 'install-compatibility-symlinks + (lambda* (#:key outputs #:allow-other-keys) + (with-directory-excursion + (string-append (assoc-ref outputs "out") "/lib") + (map (lambda (lib new-symlink) + (symlink lib new-symlink)) + (list "libzzip.so.13" "libzzipfseeko.so.13" + "libzzipmmapped.so.13" "libzzipwrap.so.13") + (list "libzzip-0.so.13" "libzzipfseeko-0.so.13" + "libzzipmmapped-0.so.13" "libzzipwrap-0.so.13"))) + #t))))) + (native-inputs + `(("python" ,python) + ,@(alist-delete "python" + (package-native-inputs zziplib)))) + (build-system cmake-build-system))) + (define-public libzip (package (name "libzip") @@ -1666,7 +1928,7 @@ archive can be reverted.") (source (origin (method url-fetch) - (uri (string-append "http://savannah.nongnu.org/download/atool/atool-" + (uri (string-append "mirror://savannah/atool/atool-" version ".tar.gz")) (sha256 (base32 @@ -1698,14 +1960,14 @@ of archives.") (define-public lunzip (package (name "lunzip") - (version "1.11") + (version "1.12") (source (origin (method url-fetch) (uri (string-append "mirror://savannah/lzip/lunzip/" "lunzip-" version ".tar.gz")) (sha256 - (base32 "19zq3gmlbia2krq4k4zs1j0xjdv7nsdzqvfb0pyca5n53h2mzb91")))) + (base32 "1liaynyy3qcs29hfk1pnb7i9r1mnmpw557j5v356qsv6qnm4lnz5")))) (build-system gnu-build-system) (arguments `(#:configure-flags @@ -1725,14 +1987,14 @@ Lunzip is intended to be fully compatible with the regular lzip package.") (define-public clzip (package (name "clzip") - (version "1.11") + (version "1.12") (source (origin (method url-fetch) (uri (string-append "mirror://savannah/lzip/clzip/" "clzip-" version ".tar.gz")) (sha256 - (base32 "1h14dmc9fi10gcdpdpbgq1bwvcxvivppilj64pf720x8mw915mfr")))) + (base32 "1s7yidqvmxi61hh569h5aci816l6qkffjgx0zx57qyyq0qq2pjgw")))) (build-system gnu-build-system) (arguments `(#:configure-flags @@ -1751,18 +2013,19 @@ Clzip is intended to be fully compatible with the regular lzip package.") (define-public lzlib (package (name "lzlib") - (version "1.11") + (version "1.12") (source (origin (method url-fetch) (uri (string-append "mirror://savannah/lzip/lzlib/" "lzlib-" version ".tar.gz")) (sha256 - (base32 "0djdj4sg33rzi4k84cygvnp09bfsv6i8wy2k7i67rayib63myp3c")))) + (base32 "1c9pwd6by8is4z8bs6j306jyy6pgm2dvsn4fr7fg2b5m5qj88pcf")))) (build-system gnu-build-system) (arguments `(#:configure-flags - (list "CC=gcc" + (list (string-append "CC=" ,(cc-for-target)) + "--disable-static" "--enable-shared"))) ; only static (.a) is built by default (home-page "https://www.nongnu.org/lzip/lzlib.html") (synopsis "Lzip data compression C library") @@ -1777,14 +2040,14 @@ corrupted input.") (define-public plzip (package (name "plzip") - (version "1.8") + (version "1.9") (source (origin (method url-fetch) (uri (string-append "mirror://savannah/lzip/plzip/" "plzip-" version ".tar.gz")) (sha256 - (base32 "04indil809qgfmz776imb3dnhkysh7zk28jcv3mw0ahl2lyaxbzd")))) + (base32 "19zinpx7hssl6r3vilpvq2s7wha3545xan8b0vcvsxnyipdx3n0l")))) (build-system gnu-build-system) (inputs `(("lzlib" ,lzlib))) @@ -1807,20 +2070,18 @@ single-member files which can't be decompressed in parallel.") (define-public innoextract (package (name "innoextract") - (version "1.8") + (version "1.9") (source (origin (method url-fetch) - (uri (string-append "https://github.com/dscharrer/innoextract/releases" - "/download/" version + (uri (string-append "https://constexpr.org/innoextract/files/" + "innoextract-" version "/" "/innoextract-" version ".tar.gz")) (sha256 - (base32 - "0saj50n8ds85shygy4mq1h6s99510r9wgjjdll4dmvhra4lzcy2y")))) + (base32 "09l1z1nbl6ijqqwszdwch9mqr54qb7df0wp2sd77v17dq6gsci33")))) (build-system cmake-build-system) (arguments - `(#:tests? #f - #:configure-flags '("-DBoost_NO_BOOST_CMAKE=ON"))) + `(#:tests? #f)) (inputs `(("boost" ,boost) ("libiconv" ,libiconv) ("xz" ,xz))) @@ -1834,7 +2095,7 @@ non-Windows systems without running the actual installer using wine.") (define-public google-brotli (package (name "google-brotli") - (version "1.0.7") + (version "1.0.9") (source (origin (method git-fetch) @@ -1843,7 +2104,15 @@ non-Windows systems without running the actual installer using wine.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1811b55wdfg4kbsjcgh1kc938g118jpvif97ilgrmbls25dfpvvw")))) + (base32 "1fikasxf7r2dwlk8mv8w7nmjkn0jw5ic31ky3mvpkdzwgd4xfndl")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Cherry-picked from upstream since the latest release + ;; https://github.com/google/brotli/commit/09b0992b6acb7faa6fd3b23f9bc036ea117230fc + (substitute* (find-files "scripts" "^lib.*pc\\.in") + (("-R\\$\\{libdir\\} ") "")) + #t)))) (build-system cmake-build-system) (arguments `(#:phases @@ -1927,7 +2196,8 @@ decompression is a little bit slower.") version "/upx-" version "-src.tar.xz")) (sha256 (base32 - "051pk5jk8fcfg5mpgzj43z5p4cn7jy5jbyshyn78dwjqr7slsxs7")))) + "051pk5jk8fcfg5mpgzj43z5p4cn7jy5jbyshyn78dwjqr7slsxs7")) + (patches (search-patches "upx-CVE-2021-20285.patch")))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl))) @@ -1982,7 +2252,7 @@ download times, and other distribution and storage costs.") (native-inputs `(("doxygen" ,doxygen))) (inputs - `(("qtbase" ,qtbase) + `(("qtbase" ,qtbase-5) ("zlib" ,zlib))) (home-page "https://stachenov.github.io/quazip/index.html") (synopsis "Qt/C++ wrapper for Minizip") @@ -2003,13 +2273,13 @@ reading from and writing to ZIP archives. ") (define-public zutils (package (name "zutils") - (version "1.9") + (version "1.10") (source (origin (method url-fetch) (uri (string-append "mirror://savannah/zutils/zutils-" version ".tar.lz")) (sha256 - (base32 "0y2wm8wqr1wi1b1fv45dn50njv4q81p6ifx0279ji1bq56qkrn2r")))) + (base32 "15dimqp8zlqaaa2l46r22srp1py38mlmn69ph1j5fmrd54w43m0d")))) (build-system gnu-build-system) (arguments `(#:configure-flags @@ -2130,7 +2400,7 @@ file compression algorithm.") (define-public xarchiver (package (name "xarchiver") - (version "0.5.4.15") + (version "0.5.4.17") (source (origin (method git-fetch) @@ -2139,7 +2409,7 @@ file compression algorithm.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0a3y54r5zp2c0cqm77r07qrl1vh200wvqmbhm35diy22fvkq5mwc")))) + (base32 "00adrjpxqlaccrwjf65w3vhxfswdj0as8aj263c6f9b85llypc5v")))) (build-system glib-or-gtk-build-system) (native-inputs `(("gettext" ,gettext-minimal) @@ -2251,3 +2521,31 @@ computations.") with their error correction data losslessly rearranged for better compression, to their original, binary CD format.") (license license:gpl3+))) + +(define-public tarlz + (package + (name "tarlz") + (version "0.19") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://savannah/lzip/tarlz/" + "tarlz-" version ".tar.lz")) + (sha256 + (base32 "09xal55973ivzpaja93jcc1pfla8gb3vrk8dx7pj9qvvz5aynf9n")))) + (build-system gnu-build-system) + (native-inputs + `(("lzip" ,lzip))) + (inputs + `(("lzlib" ,lzlib))) + (home-page "https://www.nongnu.org/lzip/tarlz.html") + (synopsis "Combination of the tar archiver and the lzip compressor") + (description + "Tarlz is a massively parallel (multi-threaded) combined implementation of +the tar archiver and the lzip compressor. Tarlz creates, lists, and extracts +archives in a simplified and safer variant of the POSIX pax format compressed +with lzip, keeping the alignment between tar members and lzip members. The +resulting multimember tar.lz archive is fully backward compatible with standard +tar tools like GNU tar, which treat it like any other tar.lz archive. Tarlz +can append files to the end of such compressed archives.") + (license license:gpl2+)))