From 36df995c94cfbda4b7874de1d69d3f44b0e73c7e Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Thu, 18 Aug 2016 17:06:10 +0200 Subject: [PATCH] gnu: Add zpaq. * gnu/packages/compression.scm (zpaq): New variable. --- gnu/packages/compression.scm | 61 +++++++++++++++++++++++++++++++++++- 1 file changed, 60 insertions(+), 1 deletion(-) diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm index 2e4de8173e..73a35030e9 100644 --- a/gnu/packages/compression.scm +++ b/gnu/packages/compression.scm @@ -10,7 +10,7 @@ ;;; Copyright © 2015, 2016 Efraim Flashner ;;; Copyright © 2016 Ben Woodcroft ;;; Copyright © 2016 Danny Milosavljevic -;;; Copyright © 2016 Tobias Geerinckx-Rice +;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice ;;; Copyright © 2016 David Craven ;;; Copyright © 2016 Kei Kebreau ;;; Copyright © 2016 Marius Bakke @@ -46,6 +46,7 @@ #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages valgrind) + #:use-module (ice-9 match) #:use-module ((srfi srfi-1) #:select (last))) (define-public zlib @@ -1001,3 +1002,61 @@ handles the 7z format which features very high compression ratios.") (description "gzstream is a small library for providing zlib functionality in a C++ iostream.") (license license:lgpl2.1+))) + +(define-public zpaq + (package + (name "zpaq") + (version "7.15") + (source + (origin + (method url-fetch/zipbomb) + (uri (string-append "http://mattmahoney.net/dc/zpaq" + (string-delete #\. version) ".zip")) + (sha256 + (base32 + "066l94yyladlfzri877nh2dhkvspagjn3m5bmv725fmhkr9c4pp8")) + (modules '((guix build utils))) + (snippet + ;; Delete irrelevant pre-compiled binaries. + '(for-each delete-file (find-files "." "\\.exe$"))))) + (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (delete 'configure)) ; no ‘configure’ script + #:make-flags + (list + (string-append "CPPFLAGS=-Dunix" + ,(match (or (%current-target-system) + (%current-system)) + ("x86_64-linux" "") + ("i686-linux" "") + (_ " -DNOJIT"))) + ;; These should be safe, lowest-common-denominator instruction sets, + ;; allowing for some optimisation while remaining reproducible. + (string-append "CXXFLAGS=-O3 -mtune=generic -DNDEBUG" + ,(match (or (%current-target-system) + (%current-system)) + ("x86_64-linux" " -march=nocona") + ("i686-linux" " -march=i686") + (_ ""))) + (string-append "PREFIX=" + (assoc-ref %outputs "out"))))) + (native-inputs + `(("perl" ,perl))) ; for pod2man + (home-page "http://mattmahoney.net/dc/zpaq.html") + (synopsis "Incremental journaling archiver") + (description "ZPAQ is a command-line archiver for realistic situations with +many duplicate and already compressed files. It backs up only those files +modified since the last update. All previous versions remain untouched and can +be independently recovered. Identical files are only stored once (known as +@dfn{de-duplication}). Archives can also be encrypted. + +ZPAQ is intended to back up user data, not entire operating systems. It ignores +owner and group IDs, ACLs, extended attributes, or special file types like +devices, sockets, or named pipes. It does not follow or restore symbolic links +or junctions, and always follows hard links.") + (license (list license:public-domain + ;; libzpaq.cpp contains a mix of public-domain and + ;; expat-licenced (or ‘MIT’) code. + license:expat))))