gnu: borg: Update to 1.1.4.

* gnu/packages/backup.scm (borg): Update to 1.1.4.
[source]: Remove obsolete patch.  Remove bundled lz4 and zstd.
[inputs]: Add zstd.
[arguments]: Build with input versions of lz4 and zstd.
* gnu/packages/patches/borg-fix-archive-corruption-bug.patch: Delete file.
* gnu/local.mk (dist_patch_DATA): Remove it.
This commit is contained in:
Tobias Geerinckx-Rice 2017-12-30 15:37:36 +00:00
parent 50d22ef15d
commit c4556777d9
No known key found for this signature in database
GPG Key ID: 0DB0FF884F556D79
3 changed files with 24 additions and 86 deletions

View File

@ -557,7 +557,6 @@ dist_patch_DATA = \
%D%/packages/patches/binutils-ld-new-dtags.patch \ %D%/packages/patches/binutils-ld-new-dtags.patch \
%D%/packages/patches/binutils-loongson-workaround.patch \ %D%/packages/patches/binutils-loongson-workaround.patch \
%D%/packages/patches/blast+-fix-makefile.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/byobu-writable-status.patch \
%D%/packages/patches/cairo-CVE-2016-9082.patch \ %D%/packages/patches/cairo-CVE-2016-9082.patch \
%D%/packages/patches/calibre-no-updates-dialog.patch \ %D%/packages/patches/calibre-no-updates-dialog.patch \

View File

@ -468,18 +468,22 @@ detection, and lossless compression.")
(define-public borg (define-public borg
(package (package
(name "borg") (name "borg")
(version "1.1.3") (version "1.1.4")
(source (origin (source
(method url-fetch) (origin
(uri (pypi-uri "borgbackup" version)) (method url-fetch)
(patches (search-patches "borg-fix-archive-corruption-bug.patch")) (uri (pypi-uri "borgbackup" version))
(sha256 (sha256
(base32 (base32 "1cicqwh85wfp65y00qaq6q4i4jcyy9b66qz5gpl80qc880wab912"))
"1rvn8b6clzd1r317r9jkvk34r31risi0dxfjc7jffhnwasck4anc")) (modules '((guix build utils)))
(modules '((guix build utils))) (snippet
(snippet '(begin
'(for-each (for-each delete-file
delete-file (find-files "borg" "^(c|h|p).*\\.c$"))))) (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) (build-system python-build-system)
(arguments (arguments
`(#:modules ((srfi srfi-26) ; for cut `(#:modules ((srfi srfi-26) ; for cut
@ -490,9 +494,11 @@ detection, and lossless compression.")
(add-after 'unpack 'set-env (add-after 'unpack 'set-env
(lambda* (#:key inputs #:allow-other-keys) (lambda* (#:key inputs #:allow-other-keys)
(let ((openssl (assoc-ref inputs "openssl")) (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_OPENSSL_PREFIX" openssl)
(setenv "BORG_LZ4_PREFIX" lz4) (setenv "BORG_LIBLZ4_PREFIX" lz4)
(setenv "BORG_LIBZSTD_PREFIX" zstd)
(setenv "PYTHON_EGG_CACHE" "/tmp") (setenv "PYTHON_EGG_CACHE" "/tmp")
;; The test 'test_return_codes[python]' fails when ;; The test 'test_return_codes[python]' fails when
;; HOME=/homeless-shelter. ;; HOME=/homeless-shelter.
@ -544,8 +550,8 @@ detection, and lossless compression.")
(native-inputs (native-inputs
`(("python-cython" ,python-cython) `(("python-cython" ,python-cython)
("python-setuptools-scm" ,python-setuptools-scm) ("python-setuptools-scm" ,python-setuptools-scm)
;; Borg 1.0.8's test suite uses 'tmpdir_factory', which was introduced in ;; Borg >=1.0.8's test suite uses 'tmpdir_factory', which was introduced
;; pytest 2.8. ;; in pytest 2.8.
("python-pytest" ,python-pytest-3.0) ("python-pytest" ,python-pytest-3.0)
;; For generating the documentation. ;; For generating the documentation.
("python-sphinx" ,python-sphinx) ("python-sphinx" ,python-sphinx)
@ -555,7 +561,8 @@ detection, and lossless compression.")
("lz4" ,lz4) ("lz4" ,lz4)
("openssl" ,openssl) ("openssl" ,openssl)
("python-llfuse" ,python-llfuse) ("python-llfuse" ,python-llfuse)
("python-msgpack" ,python-msgpack))) ("python-msgpack" ,python-msgpack)
("zstd" ,zstd)))
(synopsis "Deduplicated, encrypted, authenticated and compressed backups") (synopsis "Deduplicated, encrypted, authenticated and compressed backups")
(description "Borg is a deduplicating backup program. Optionally, it (description "Borg is a deduplicating backup program. Optionally, it
supports compression and authenticated encryption. The main goal of Borg is to supports compression and authenticated encryption. The main goal of Borg is to

View File

@ -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