diff options
author | Maxim Cournoyer <maxim.cournoyer@gmail.com> | 2022-01-25 22:07:13 -0500 |
---|---|---|
committer | Maxim Cournoyer <maxim.cournoyer@gmail.com> | 2022-01-25 22:07:13 -0500 |
commit | 1a5302435ff0d2822b823f5a6fe01faa7a85c629 (patch) | |
tree | ac7810c88b560532f22d2bab2e59609cd7305c21 /gnu/packages/backup.scm | |
parent | 3ff2ac4980dacf10087e4b42bd9fbc490591900c (diff) | |
parent | 070b8a893febd6e7d8b2b7c8c4dcebacf7845aa9 (diff) | |
download | guix-1a5302435ff0d2822b823f5a6fe01faa7a85c629.tar.gz |
Merge branch 'master' into staging.
With "conflicts" solved (all in favor of master except git) in: gnu/local.mk gnu/packages/databases.scm gnu/packages/glib.scm gnu/packages/gnome.scm gnu/packages/gnupg.scm gnu/packages/gnuzilla.scm gnu/packages/graphics.scm gnu/packages/gstreamer.scm gnu/packages/gtk.scm gnu/packages/linux.scm gnu/packages/machine-learning.scm gnu/packages/networking.scm gnu/packages/polkit.scm gnu/packages/pulseaudio.scm gnu/packages/rpc.scm gnu/packages/rust.scm gnu/packages/version-control.scm gnu/packages/w3m.scm
Diffstat (limited to 'gnu/packages/backup.scm')
-rw-r--r-- | gnu/packages/backup.scm | 403 |
1 files changed, 248 insertions, 155 deletions
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm index 74e3f2ce01..5c92d401bd 100644 --- a/gnu/packages/backup.scm +++ b/gnu/packages/backup.scm @@ -4,9 +4,9 @@ ;;; Copyright © 2015, 2016, 2017 Leo Famulari <leo@famulari.name> ;;; Copyright © 2017–2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be> -;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net> +;;; Copyright © 2017, 2021 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net> -;;; Copyright © 2017, 2020 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2017, 2020, 2021 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017 Christine Lemmer-Webber <cwebber@dustycloud.org> ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com> ;;; Copyright © 2018 Mark H Weaver <mhw@netris.org> @@ -21,6 +21,7 @@ ;;; Copyright © 2021 Timothy Sample <samplet@ngyro.com> ;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re> ;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev> +;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -38,6 +39,7 @@ ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (gnu packages backup) + #:use-module (guix gexp) #:use-module (guix packages) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix git-download) @@ -46,10 +48,12 @@ #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (guix build-system go) + #:use-module (guix build-system perl) #:use-module (guix build-system python) #:use-module (gnu packages) #:use-module (gnu packages acl) #:use-module (gnu packages autotools) + #:use-module (gnu packages bash) #:use-module (gnu packages base) #:use-module (gnu packages check) #:use-module (gnu packages compression) @@ -70,6 +74,7 @@ #:use-module (gnu packages mcrypt) #:use-module (gnu packages ncurses) #:use-module (gnu packages nettle) + #:use-module (gnu packages networking) #:use-module (gnu packages onc-rpc) #:use-module (gnu packages pcre) #:use-module (gnu packages perl) @@ -80,6 +85,8 @@ #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) #:use-module (gnu packages rsync) + #:use-module (gnu packages ruby) + #:use-module (gnu packages serialization) #:use-module (gnu packages ssh) #:use-module (gnu packages tls) #:use-module (gnu packages valgrind) @@ -88,7 +95,7 @@ (define-public duplicity (package (name "duplicity") - (version "0.8.20") + (version "0.8.21") (source (origin (method url-fetch) @@ -97,7 +104,7 @@ "-series/" version "/+download/duplicity-" version ".tar.gz")) (sha256 - (base32 "0d125mxknpn44xwgqzzak9y5ydigscrpjv9d63126mfc6yfngr5v")))) + (base32 "0ld4bhsi6iv4bvy99pblbr7vlwy9jbgfd6flyvb8qwbl8rvadzjp")))) (build-system python-build-system) (native-inputs `(("gettext" ,gettext-minimal) ; for msgfmt @@ -114,12 +121,14 @@ ("mock" ,python-mock))) (propagated-inputs `(("lockfile" ,python-lockfile) + ("pygobject" ,python-pygobject) ("urllib3" ,python-urllib3))) (inputs - `(("librsync" ,librsync) - ("lftp" ,lftp) - ("gnupg" ,gnupg) ; gpg executable needed - ("util-linux" ,util-linux))) ; for setsid + (list dbus ; dbus-launch (Gio backend) + librsync + lftp + gnupg ; gpg executable needed + util-linux)) ; for setsid (arguments `(#:test-target "test" #:phases @@ -129,22 +138,23 @@ (substitute* "duplicity/gpginterface.py" (("self.call = u'gpg'") (string-append "self.call = '" (assoc-ref inputs "gnupg") "/bin/gpg'"))) - + (substitute* "duplicity/backends/giobackend.py" + (("subprocess.Popen\\(\\[u'dbus-launch'\\]") + (string-append "subprocess.Popen([u'" + (assoc-ref inputs "dbus") + "/bin/dbus-launch']"))) (substitute* '("testing/functional/__init__.py" "testing/overrides/bin/lftp") - (("/bin/sh") (which "sh"))) - #t)) + (("/bin/sh") (which "sh"))))) (add-before 'check 'set-up-tests (lambda* (#:key inputs #:allow-other-keys) (setenv "HOME" (getcwd)) ; gpg needs to write to $HOME (setenv "TZDIR" ; some timestamp checks need TZDIR - (string-append (assoc-ref inputs "tzdata") - "/share/zoneinfo")) + (search-input-directory inputs "share/zoneinfo")) ;; Some things respect TMPDIR, others hard-code /tmp, and the ;; defaults don't match up, breaking test_restart. Fix it. - (setenv "TMPDIR" "/tmp") - #t))))) - (home-page "http://duplicity.nongnu.org/index.html") + (setenv "TMPDIR" "/tmp")))))) + (home-page "https://duplicity.gitlab.io/duplicity-web/") (synopsis "Encrypted backup using rsync algorithm") (description "Duplicity backs up directories by producing encrypted tar-format volumes @@ -169,8 +179,7 @@ spying and/or modification by the server.") (base32 "11mx8q29cr0sryd11awab7y4mhqgbamb1ss77rffjj6in8pb4hdk")))) (native-inputs - `(("automake" ,automake) - ("autoconf" ,autoconf))) + (list automake autoconf)) (build-system gnu-build-system) (synopsis "File verification and repair tools") (description "Par2cmdline uses Reed-Solomon error-correcting codes to @@ -196,14 +205,14 @@ can even repair them.") (base32 "02bnczg01cyhajmm4rhbnc0ja0dd9ikv9fwv28asxh1rlx9yr0b7")))) (build-system gnu-build-system) - (native-inputs `(("pkg-config" ,pkg-config))) + (native-inputs (list pkg-config)) (inputs - `(("glib" ,glib) - ("tar" ,tar) - ("lzop" ,lzop) - ("mcrypt" ,mcrypt) - ("openssh" ,openssh) - ("gnupg" ,gnupg-1))) + (list glib + tar + lzop + mcrypt + openssh + gnupg-1)) (arguments `(#:configure-flags `(,(string-append "--sbindir=" (assoc-ref %outputs "out") "/bin")) @@ -221,7 +230,7 @@ backups (called chunks) to allow easy burning to CD/DVD.") (define-public libarchive (package (name "libarchive") - (version "3.4.2") + (version "3.5.1") (source (origin (method url-fetch) @@ -232,16 +241,16 @@ backups (called chunks) to allow easy burning to CD/DVD.") version ".tar.xz"))) (sha256 (base32 - "18dd01ahs2hv74xm7axjc3yhq839p0x0s4vssvlmm8fknja09qfq")))) + "16r95rlmikll1k8vbhh06vq6x3srkc10hzxjjf3021mjs2ld65qf")))) (build-system gnu-build-system) (inputs - `(("bzip2" ,bzip2) - ("libxml2" ,libxml2) - ("lzo" ,lzo) - ("nettle" ,nettle) - ("xz" ,xz) - ("zlib" ,zlib) - ("zstd" ,zstd "lib"))) + (list bzip2 + libxml2 + lzo + nettle + xz + zlib + `(,zstd "lib"))) (arguments `(#:configure-flags '("--disable-static") #:phases @@ -333,21 +342,15 @@ random access nor for in-place modification.") (base32 "0bzyv6qmnivxnv9nw7lnfn46k0m1dlxcjj53zcva6v8y8084l1iw")))) (build-system gnu-build-system) (native-inputs - `(("autoconf" ,autoconf) - ("automake" ,automake) - ("pkg-config" ,pkg-config) - - ;; For tests. - ("dejagnu" ,dejagnu))) + (list autoconf automake pkg-config + ;; For tests. + dejagnu)) (inputs ;; XXX Compiling with nettle (encryption) support requires patching out ;; -Werror from GNUmakefile.in. Then, rdup-tr-{en,de}crypt tests fail: ;; free(): invalid pointer ;; ** rdup-tr: SIGPIPE received, exiting - `(("glib" ,glib) - ("pcre" ,pcre) - ("libarchive" ,libarchive) - ("mcrypt" ,mcrypt))) + (list glib pcre libarchive mcrypt)) (arguments `(#:parallel-build? #f ;race conditions #:phases @@ -388,7 +391,7 @@ list and implement the backup strategy.") (define-public snapraid (package (name "snapraid") - (version "11.5") + (version "12.0") (source (origin (method git-fetch) @@ -397,26 +400,24 @@ list and implement the backup strategy.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0dlhdsmq5l208zldfr9z9g0p67wry81dr0r23lpybb5c9fm2f2rm")))) + (base32 "0k8pynafkx8bhnqnjhc3jsds5p40sflz4drm88i6dg6ifv35mhh9")))) (build-system gnu-build-system) (arguments - `(#:configure-flags - (list "--enable-valgrind" - "--with-blkid") - #:phases - (modify-phases %standard-phases - (add-before 'bootstrap 'set-version - (lambda _ - (setenv "VERSION" ,version) - (patch-shebang "autover.sh")))))) + (list #:configure-flags + ;; XXX --enable-valgrind fails with ‘A must-be-redirected function + ;; whose name matches the pattern: strlen in an object with soname + ;; matching: ld-linux-x86-64.so.2 was not found […]’; used to work. + #~(list "--with-blkid") + #:phases + #~(modify-phases %standard-phases + (add-before 'bootstrap 'set-version + (lambda _ + (setenv "VERSION" #$version) + (patch-shebang "autover.sh")))))) (native-inputs - `(("automake" ,automake) - ("autoconf" ,autoconf) - - ;; For the tests. - ("valgrind" ,valgrind))) + (list automake autoconf)) (inputs - `(("util-linux" ,util-linux "lib"))) ; libblkid + (list `(,util-linux "lib"))) ; libblkid (home-page "https://www.snapraid.it/") (synopsis "Efficient backups using parity snapshots across disk arrays") (description @@ -458,7 +459,7 @@ remain fully idle, saving power and producing less noise.") "0miklk4bqblpyzh1bni4x6lqn88fa8fjn15x1k1n8bxkx60nlymd")))) (build-system gnu-build-system) (inputs - `(("librsync" ,librsync-0.9))) + (list librsync-0.9)) (arguments `(#:make-flags `(,(string-append "PREFIX=" (assoc-ref %outputs "out")) ,(string-append "CC=" ,(cc-for-target))) @@ -489,10 +490,9 @@ errors.") (base32 "11rvjcp77zwgkphz1kyf5yqgr3rlss7dm9xzmvpvc4lp99xq7drb")))) (build-system python-build-system) (native-inputs - `(("python-setuptools-scm" ,python-setuptools-scm))) + (list python-setuptools-scm)) (inputs - `(("python" ,python) - ("librsync" ,librsync))) + (list python librsync)) (arguments `(#:tests? #f)) ; Tests require root/sudo (home-page "https://rdiff-backup.net/") @@ -531,8 +531,7 @@ rdiff-backup is easy to use and settings have sensible defaults.") (lambda _ (invoke "make" "test")))))) (inputs - `(("perl" ,perl) - ("rsync" ,rsync))) + (list perl rsync)) (home-page "https://rsnapshot.org") (synopsis "Deduplicating snapshot backup utility based on rsync") (description "rsnapshot is a file system snapshot utility based on rsync. @@ -552,7 +551,6 @@ rsnapshot uses hard links to deduplicate identical files.") (sha256 (base32 "0fpdyxww41ba52d98blvnf543xvirq1v9xz1i3x1gm9lzlzpmc2g")) - (patches (search-patches "diffutils-gets-undeclared.patch")) (modules '((guix build utils))) (snippet '(begin @@ -579,41 +577,38 @@ rsnapshot uses hard links to deduplicate identical files.") (substitute* "configure" (("GUILE=(.*)--variable bindir`" _ middle) (string-append "GUILE=" middle - "--variable bindir`/guile"))) - #t)) + "--variable bindir`/guile"))))) (add-before 'build 'set-libtirpc-include-path (lambda* (#:key inputs #:allow-other-keys) ;; Allow <rpc/rpc.h> & co. to be found. - (let ((libtirpc (assoc-ref inputs "libtirpc"))) - (setenv "CPATH" - (string-append (getenv "CPATH") - ":" libtirpc - "/include/tirpc")) - #t))) + (let ((tirpc (string-append (assoc-ref inputs "libtirpc") + "/include/tirpc"))) + (if (getenv "CPATH") + (setenv "CPATH" + (string-append (getenv "CPATH") + ":" tirpc)) + (setenv "CPATH" tirpc))))) (add-before 'check 'skip-test (lambda _ ;; XXX: This test fails (1) because current GnuTLS no ;; longer supports OpenPGP authentication, and (2) for ;; some obscure reason. Better skip it. - (setenv "XFAIL_TESTS" "utils/block-server") - #t))))) + (setenv "XFAIL_TESTS" "utils/block-server")))))) (native-inputs - `(("guile" ,guile-2.0) - ("gperf" ,gperf-3.0) ;see <https://bugs.gnu.org/32382> - ("pkg-config" ,pkg-config) - ("rpcsvc-proto" ,rpcsvc-proto))) ;for 'rpcgen' + (list guile-2.0 gperf-3.0 ;see <https://bugs.gnu.org/32382> + pkg-config rpcsvc-proto)) ;for 'rpcgen' (inputs - `(("guile" ,guile-2.0) - ("util-linux" ,util-linux) - ("libtirpc" ,libtirpc) - ("gnutls" ,gnutls) - ("tdb" ,tdb) - ("bdb" ,bdb) - ("gdbm" ,gdbm) - ("libgcrypt" ,libgcrypt) - ("lzo" ,lzo) - ("bzip2" ,bzip2) - ("zlib" ,zlib))) + (list guile-2.0 + util-linux + libtirpc + gnutls + tdb + bdb + gdbm + libgcrypt + lzo + bzip2 + zlib)) (home-page "https://nongnu.org/libchop/") (synopsis "Tools & library for data backup and distributed storage") (description @@ -738,16 +733,14 @@ detection, and lossless compression.") (string-append share "/fish/vendor_completions.d"))) #t)))))) (native-inputs - `(("python-cython" ,python-cython) - ("python-setuptools-scm" ,python-setuptools-scm) - ("python-pytest" ,python-pytest))) + (list python-cython python-setuptools-scm python-pytest)) (inputs - `(("acl" ,acl) - ("libb2" ,libb2) - ("lz4" ,lz4) - ("openssl" ,openssl) - ("python-llfuse" ,python-llfuse) - ("zstd" ,zstd "lib"))) + (list acl + libb2 + lz4 + openssl + python-llfuse + `(,zstd "lib"))) (synopsis "Deduplicated, encrypted, authenticated and compressed backups") (description "Borg is a deduplicating backup program. Optionally, it supports compression and authenticated encryption. The main goal of Borg is to @@ -761,22 +754,19 @@ to not fully trusted targets. Borg is a fork of Attic.") (define-public wimlib (package (name "wimlib") - (version "1.13.4") + (version "1.13.5") (source (origin (method url-fetch) (uri (string-append "https://wimlib.net/downloads/" "wimlib-" version ".tar.gz")) (sha256 (base32 - "04ny5s5z05gk6davbwkjkraan781k2xzw6kjwp75h6ncv45dv1sb")))) + "08z3xxm5hq1n4wmyhgz14p1cv0w2lx610vn8nhfwpds4n7lwkz1j")))) (build-system gnu-build-system) (native-inputs - `(("pkg-config" ,pkg-config))) + (list pkg-config)) (inputs - `(("fuse" ,fuse) - ("libxml2" ,libxml2) - ("ntfs-3g" ,ntfs-3g) - ("openssl" ,openssl))) + (list fuse libxml2 ntfs-3g openssl)) (arguments `(#:configure-flags (list "--disable-static" @@ -832,12 +822,11 @@ NTFS volumes using @code{ntfs-3g}, preserving NTFS-specific attributes.") (output-dir (assoc-ref outputs "out")) - ;; Just a default... not so useful on guixsd though - ;; You probably want to a service with file(s) to point to. + ;; Just a default... not so useful on Guix Systems though. + ;; You probably want a service with file(s) to point to. (confdir "/etc/dirvish") - (perl (string-append (assoc-ref %build-inputs "perl") - "/bin/perl")) + (perl (search-input-file inputs "/bin/perl")) (loadconfig.pl (call-with-input-file "loadconfig.pl" read-string))) @@ -888,16 +877,13 @@ NTFS volumes using @code{ntfs-3g}, preserving NTFS-specific attributes.") (for-each write-man man-pages) #t)))))) (inputs - `(("perl" ,perl) - ("rsync" ,rsync) - ("perl-libtime-period" ,perl-libtime-period) - ("perl-libtime-parsedate" ,perl-libtime-parsedate))) + (list perl rsync perl-libtime-period perl-libtime-parsedate)) (home-page "http://dirvish.org/") (synopsis "Fast, disk based, rotating network backup system") (description "With dirvish you can maintain a set of complete images of your file systems with unattended creation and expiration. A dirvish backup vault -is like a time machine for your data. ") +is like a time machine for your data.") (license (license:fsf-free "file://COPYING" "Open Software License 2.0")))) @@ -1037,11 +1023,7 @@ precious backup space. (arguments `(#:tests? #f)) ;no test (inputs - `(("lzo" ,lzo) - ("libressl" ,libressl) - ("protobuf" ,protobuf) - ("xz" ,xz) - ("zlib" ,zlib))) + (list lzo libressl protobuf xz zlib)) (home-page "http://zbackup.org") (synopsis "Versatile deduplicating backup tool") (description @@ -1075,12 +1057,10 @@ is format-agnostic, so you can feed virtually any files to it.") "--disable-readline" "--disable-rmt"))) (native-inputs - `(("pkg-config" ,pkg-config))) + (list pkg-config)) (inputs - `(("openssl" ,openssl) - ("zlib" ,zlib) - ("util-linux" ,util-linux "lib") - ("e2fsprogs" ,e2fsprogs))) + (list openssl zlib + `(,util-linux "lib") e2fsprogs)) (home-page "https://dump.sourceforge.io/") (synopsis "Ext2/3/4 file system dump/restore utilities") (description "Dump examines files in a file system, determines which ones @@ -1092,6 +1072,85 @@ directory subtrees may also be restored from full or partial backups in interactive mode.") (license license:bsd-3))) +(define-public btrbk + (package + (name "btrbk") + (version "0.31.3") + (source (origin + (method url-fetch) + (uri (string-append "https://digint.ch/download/btrbk/releases/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "1lx7vnf386nsik8mxrrfyx1h7mkqk5zs26sy0s0lynfxcm4lkxb2")))) + (build-system gnu-build-system) + (arguments + (list + #:make-flags #~(list (string-append "PREFIX=" #$output)) + #:phases #~(modify-phases %standard-phases + (replace 'configure + (lambda _ + (substitute* "Makefile" + (("= /etc") + (string-append "= " #$output "/etc"))))) + (delete 'check) + (add-after 'install 'wrap-scripts + (lambda* (#:key inputs outputs #:allow-other-keys) + (define btrbk (search-input-file outputs "bin/btrbk")) + ;; From a comment in btrbk, "Calling btrbk via 'lsbtr' + ;; symlink acts as an alias for 'btrbk ls', while also + ;; changing the semantics of the command line options." + (substitute* btrbk + (("program_name = \\$0") + (string-append "program_name = " + "$ENV{'BTRBK_PROGRAM_NAME'}"))) + ;; Wrap the script, so that it works with SSH URI and + ;; finds mbuffer out of the box. + (wrap-program btrbk + #:sh (search-input-file inputs "bin/bash") + '("BTRBK_PROGRAM_NAME" = ("$0")) + `("PATH" prefix + ,(list (string-append #$btrfs-progs "/bin") + (string-append #$coreutils "/bin") + (string-append #$mbuffer "/bin") + (string-append #$openssh "/bin"))))))))) + (native-inputs (list ruby-asciidoctor)) + (inputs (list bash-minimal + btrfs-progs + coreutils + mbuffer + openssh + perl)) + (home-page "https://digint.ch/btrbk/") + (synopsis "Backup tool for Btrfs subvolumes") + (description "Btrbk is a backup tool for Btrfs subvolumes, taking +advantage of Btrfs specific capabilities to create atomic snapshots and +transfer them incrementally to your backup locations. The source and target +locations are specified in a config file, which allows easily configuring +simple scenarios like e.g. a @i{laptop with locally attached backup disks}, as +well as more complex ones, e.g. a @i{server receiving backups from several +hosts via SSH, with different retention policy}. It has features such as: +@itemize +@item atomic snapshots +@item incremental backups +@item flexible retention policy +@item backups to multiple destinations +@item transfer via SSH +@item resume backups (for removable and mobile devices) +@item archive to offline storage +@item encrypted backups to non-btrfs storage +@item wildcard subvolumes (useful for Docker and LXC containers) +@item transaction log +@item comprehensive list and statistics output +@item resolve and trace Btrfs parent-child and received-from relationships +@item list file changes between backups +@item calculate accurate disk space usage based on block regions. +@end itemize +Btrbk is designed to run as a cron job for triggering periodic snapshots and +backups, as well as from the command line (e.g. for instantly creating +additional snapshots).") + (license license:gpl3+))) + (define-public burp (package (name "burp") @@ -1117,17 +1176,14 @@ interactive mode.") (string-append prefix " 3600" suffix "\n"))) #t))))) (inputs - `(("acl" ,acl) - ("librsync" ,librsync) - ("ncurses" ,ncurses) ; for the live status monitor - ("openssl" ,openssl) - ("uthash" ,uthash) - ("zlib" ,zlib))) + (list acl + librsync + ncurses ; for the live status monitor + openssl + uthash + zlib)) (native-inputs - `(("autoconf" ,autoconf) - ("automake" ,automake) - ("check" ,check-0.14) - ("pkg-config" ,pkg-config))) + (list autoconf automake check-0.14 pkg-config)) (home-page "https://burp.grke.org") (synopsis "Differential backup and restore") (description "Burp is a network backup and restore program. It attempts @@ -1138,33 +1194,27 @@ backup.") (define-public disarchive (package (name "disarchive") - (version "0.2.1") + (version "0.4.0") (source (origin (method url-fetch) (uri (string-append "https://files.ngyro.com/disarchive/" "disarchive-" version ".tar.gz")) (sha256 (base32 - "1jypk0gdwxqbqxiblww863nzq0kwnc676q68j32sprqd7ilnq02s")) - (patches (search-patches "disarchive-cross-compilation.patch")))) + "1pql8cspsxyx8cpw3xyhirnisv6rb4vj5mxr1d7w9la72q740n8s")))) (build-system gnu-build-system) - (arguments - `(#:phases (modify-phases %standard-phases - (add-after 'unpack 'delete-configure - (lambda _ - (delete-file "configure")))))) (native-inputs - `(("autoconf" ,autoconf) - ("automake" ,automake) - ("pkg-config" ,pkg-config) - ("guile" ,guile-3.0) ;for cross-compilation - ("guile-gcrypt" ,guile-gcrypt) - ("guile-quickcheck" ,guile-quickcheck))) + (list autoconf + automake + pkg-config + guile-3.0 ;for cross-compilation + guile-gcrypt + guile-lzma + guile-quickcheck)) (inputs - `(("guile" ,guile-3.0) - ("zlib" ,zlib))) + (list guile-3.0 zlib)) (propagated-inputs - `(("guile-gcrypt" ,guile-gcrypt))) + (list guile-gcrypt guile-lzma)) (home-page "https://ngyro.com/software/disarchive.html") (synopsis "Software archive disassembler") (description "Disarchive can disassemble software archives into data @@ -1174,3 +1224,46 @@ original files. For example, a software archive made using tar and Gzip will need to describe the order of files in the tarball and the compression parameters used by Gzip.") (license license:gpl3+))) + +(define-public borgmatic + (package + (name "borgmatic") + (version "1.5.22") + (source + (origin + (method url-fetch) + (uri (pypi-uri "borgmatic" version)) + (sha256 + (base32 "0pvqlj17vp81i7saxqh5hsaxqz29ldrjd7bcssh4g1h0ikmnaf2r")))) + (build-system python-build-system) + (arguments + (list #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'configure + (lambda* (#:key inputs #:allow-other-keys) + ;; Set absolute store path to borg. + (substitute* "borgmatic/commands/borgmatic.py" + (("location\\.get\\('local_path', 'borg'\\)") + (string-append "location.get('local_path', '" + (search-input-file inputs "bin/borg") + "')"))))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + ;; Tests require the installed executable. + (setenv "PATH" (string-append #$output "/bin" + ":" (getenv "PATH"))) + (invoke "pytest"))))))) + (inputs + (list borg python-colorama python-jsonschema python-requests + python-ruamel.yaml)) + (native-inputs + (list python-flexmock python-pytest python-pytest-cov)) + (home-page "https://torsion.org/borgmatic/") + (synopsis "Simple, configuration-driven backup software") + (description + "borgmatic is simple, configuration-driven backup software for servers +and workstations. Protect your files with client-side encryption. Backup +your databases too. Monitor it all with integrated third-party services. +borgmatic is powered by borg.") + (license license:gpl3+))) |