diff options
-rw-r--r-- | gnu/local.mk | 1 | ||||
-rw-r--r-- | gnu/packages/backup.scm | 41 | ||||
-rw-r--r-- | gnu/packages/patches/borg-fix-archive-corruption-bug.patch | 68 |
3 files changed, 24 insertions, 86 deletions
diff --git a/gnu/local.mk b/gnu/local.mk index 2c4305d94c..346c8285e0 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -557,7 +557,6 @@ dist_patch_DATA = \ %D%/packages/patches/binutils-ld-new-dtags.patch \ %D%/packages/patches/binutils-loongson-workaround.patch \ %D%/packages/patches/blast+-fix-makefile.patch \ - %D%/packages/patches/borg-fix-archive-corruption-bug.patch \ %D%/packages/patches/byobu-writable-status.patch \ %D%/packages/patches/cairo-CVE-2016-9082.patch \ %D%/packages/patches/calibre-no-updates-dialog.patch \ diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm index 5156ac9167..2fba1a9e76 100644 --- a/gnu/packages/backup.scm +++ b/gnu/packages/backup.scm @@ -468,18 +468,22 @@ detection, and lossless compression.") (define-public borg (package (name "borg") - (version "1.1.3") - (source (origin - (method url-fetch) - (uri (pypi-uri "borgbackup" version)) - (patches (search-patches "borg-fix-archive-corruption-bug.patch")) - (sha256 - (base32 - "1rvn8b6clzd1r317r9jkvk34r31risi0dxfjc7jffhnwasck4anc")) - (modules '((guix build utils))) - (snippet - '(for-each - delete-file (find-files "borg" "^(c|h|p).*\\.c$"))))) + (version "1.1.4") + (source + (origin + (method url-fetch) + (uri (pypi-uri "borgbackup" version)) + (sha256 + (base32 "1cicqwh85wfp65y00qaq6q4i4jcyy9b66qz5gpl80qc880wab912")) + (modules '((guix build utils))) + (snippet + '(begin + (for-each delete-file + (find-files "borg" "^(c|h|p).*\\.c$")) + ;; Remove bundled shared libraries. + (with-directory-excursion "src/borg/algorithms" + (for-each delete-file-recursively + (list "lz4" "zstd"))))))) (build-system python-build-system) (arguments `(#:modules ((srfi srfi-26) ; for cut @@ -490,9 +494,11 @@ detection, and lossless compression.") (add-after 'unpack 'set-env (lambda* (#:key inputs #:allow-other-keys) (let ((openssl (assoc-ref inputs "openssl")) - (lz4 (assoc-ref inputs "lz4"))) + (lz4 (assoc-ref inputs "lz4")) + (zstd (assoc-ref inputs "zstd"))) (setenv "BORG_OPENSSL_PREFIX" openssl) - (setenv "BORG_LZ4_PREFIX" lz4) + (setenv "BORG_LIBLZ4_PREFIX" lz4) + (setenv "BORG_LIBZSTD_PREFIX" zstd) (setenv "PYTHON_EGG_CACHE" "/tmp") ;; The test 'test_return_codes[python]' fails when ;; HOME=/homeless-shelter. @@ -544,8 +550,8 @@ detection, and lossless compression.") (native-inputs `(("python-cython" ,python-cython) ("python-setuptools-scm" ,python-setuptools-scm) - ;; Borg 1.0.8's test suite uses 'tmpdir_factory', which was introduced in - ;; pytest 2.8. + ;; Borg >=1.0.8's test suite uses 'tmpdir_factory', which was introduced + ;; in pytest 2.8. ("python-pytest" ,python-pytest-3.0) ;; For generating the documentation. ("python-sphinx" ,python-sphinx) @@ -555,7 +561,8 @@ detection, and lossless compression.") ("lz4" ,lz4) ("openssl" ,openssl) ("python-llfuse" ,python-llfuse) - ("python-msgpack" ,python-msgpack))) + ("python-msgpack" ,python-msgpack) + ("zstd" ,zstd))) (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 diff --git a/gnu/packages/patches/borg-fix-archive-corruption-bug.patch b/gnu/packages/patches/borg-fix-archive-corruption-bug.patch deleted file mode 100644 index 0debf119be..0000000000 --- a/gnu/packages/patches/borg-fix-archive-corruption-bug.patch +++ /dev/null @@ -1,68 +0,0 @@ -Fix a bug in `borg check --repair` that corrupts existing archives: - -https://github.com/borgbackup/borg/issues/3444 - -Patches copied from upstream source repository: - -https://github.com/borgbackup/borg/commit/e09892caec8a63d59e909518c4e9c230dbd69774 -https://github.com/borgbackup/borg/commit/a68d28bfa4db30561150c83eb6a0dca5efa4d9e8 - -From a68d28bfa4db30561150c83eb6a0dca5efa4d9e8 Mon Sep 17 00:00:00 2001 -From: Thomas Waldmann <tw@waldmann-edv.de> -Date: Sat, 16 Dec 2017 01:11:40 +0100 -Subject: [PATCH 1/2] modify borg check unit test so it "hangs", see #3444 - -it doesn't infinitely hang, but slows down considerably. ---- - src/borg/testsuite/archiver.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/borg/testsuite/archiver.py b/src/borg/testsuite/archiver.py -index c7def2c7..b3383e97 100644 ---- a/src/borg/testsuite/archiver.py -+++ b/src/borg/testsuite/archiver.py -@@ -3006,7 +3006,7 @@ def test_missing_file_chunk(self): - def test_missing_archive_item_chunk(self): - archive, repository = self.open_archive('archive1') - with repository: -- repository.delete(archive.metadata.items[-5]) -+ repository.delete(archive.metadata.items[0]) - repository.commit() - self.cmd('check', self.repository_location, exit_code=1) - self.cmd('check', '--repair', self.repository_location, exit_code=0) --- -2.15.1 - - -From e09892caec8a63d59e909518c4e9c230dbd69774 Mon Sep 17 00:00:00 2001 -From: Thomas Waldmann <tw@waldmann-edv.de> -Date: Sat, 16 Dec 2017 01:16:05 +0100 -Subject: [PATCH 2/2] check --repair: fix malfunctioning validator, fixes #3444 - -the major problem was the ('path' in item) expression. -the dict has bytes-typed keys there, so it never succeeded as it -looked for a str key. this is a 1.1 regression, 1.0 was fine. - -the dict -> StableDict change is just for being more specific, -the check triggered correctly as StableDict subclasses dict, -it was just a bit too general. ---- - src/borg/archive.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/borg/archive.py b/src/borg/archive.py -index 239d00b7..be086800 100644 ---- a/src/borg/archive.py -+++ b/src/borg/archive.py -@@ -1457,7 +1457,7 @@ def robust_iterator(archive): - """ - item_keys = frozenset(key.encode() for key in self.manifest.item_keys) - required_item_keys = frozenset(key.encode() for key in REQUIRED_ITEM_KEYS) -- unpacker = RobustUnpacker(lambda item: isinstance(item, dict) and 'path' in item, -+ unpacker = RobustUnpacker(lambda item: isinstance(item, StableDict) and b'path' in item, - self.manifest.item_keys) - _state = 0 - --- -2.15.1 - |