From bb2701b9111a3d82a82ceaaf2b22b51ecd8ac21f Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Sat, 22 Oct 2022 18:34:32 +0200 Subject: gnu: borg: Improve package style. * gnu/packages/backup.scm (borg)[origin]: Use G-expressions. Remove trailing #T. [arguments]: Use G-expressions. --- gnu/packages/backup.scm | 197 ++++++++++++++++++++++++------------------------ 1 file changed, 97 insertions(+), 100 deletions(-) (limited to 'gnu/packages/backup.scm') diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm index b9d559c27b..fd17992ab3 100644 --- a/gnu/packages/backup.scm +++ b/gnu/packages/backup.scm @@ -642,108 +642,105 @@ detection, and lossless compression.") (base32 "0q3jwmwwa3jlb02cbkcgh5a9cvwg64vawaypn41bdgpi8ds6hc6p")) (modules '((guix build utils))) (snippet - '(begin - ;; Delete files generated by Cython. We used to have a regex - ;; that created the list of generated files but Borg has - ;; added new non-generated C files that cause the regex to - ;; generate the wrong list. - (for-each delete-file - '("src/borg/algorithms/checksums.c" - "src/borg/chunker.c" - "src/borg/compress.c" - "src/borg/crypto/low_level.c" - "src/borg/hashindex.c" - "src/borg/item.c" - "src/borg/platform/darwin.c" - "src/borg/platform/freebsd.c" - "src/borg/platform/linux.c" - "src/borg/platform/posix.c" - "src/borg/platform/syncfilerange.c" - "src/borg/platform/windows.c")) - ;; Remove bundled shared libraries. - (with-directory-excursion "src/borg/algorithms" - (for-each delete-file-recursively - (list "lz4" "xxh64" "zstd"))) - #t)))) + #~(begin + ;; Delete files generated by Cython. We used to have a regex that + ;; created the list of generated files but Borg has added new + ;; non-generated C files that cause the regex to generate the + ;; wrong list. + (for-each delete-file + '("src/borg/algorithms/checksums.c" + "src/borg/chunker.c" + "src/borg/compress.c" + "src/borg/crypto/low_level.c" + "src/borg/hashindex.c" + "src/borg/item.c" + "src/borg/platform/darwin.c" + "src/borg/platform/freebsd.c" + "src/borg/platform/linux.c" + "src/borg/platform/posix.c" + "src/borg/platform/syncfilerange.c" + "src/borg/platform/windows.c")) + ;; Remove bundled shared libraries. + (with-directory-excursion "src/borg/algorithms" + (for-each delete-file-recursively + (list "lz4" "xxh64" "zstd"))))))) (build-system python-build-system) (arguments - `(#:modules ((srfi srfi-26) ; for cut + (list + #:modules '((srfi srfi-26) ; for cut (guix build utils) (guix build python-build-system)) - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'set-env - (lambda* (#:key inputs #:allow-other-keys) - (let ((openssl (assoc-ref inputs "openssl")) - (lz4 (assoc-ref inputs "lz4")) - (xxhash (assoc-ref inputs "xxhash")) - (zstd (assoc-ref inputs "zstd"))) - (setenv "BORG_OPENSSL_PREFIX" openssl) - (setenv "BORG_LIBLZ4_PREFIX" lz4) - (setenv "BORG_LIBXXHASH_PREFIX" xxhash) - (setenv "BORG_LIBZSTD_PREFIX" zstd) - (setenv "PYTHON_EGG_CACHE" "/tmp") - ;; The test 'test_return_codes[python]' fails when - ;; HOME=/homeless-shelter. - (setenv "HOME" "/tmp") - #t))) - ;; The tests need to be run after Borg is installed. - (delete 'check) - (add-after 'install 'check - (lambda* (#:key inputs outputs tests? #:allow-other-keys) - (when tests? - ;; Make the installed package available for the test suite. - (add-installed-pythonpath inputs outputs) - ;; The tests should be run in an empty directory. - (mkdir-p "tests") - (with-directory-excursion "tests" - (invoke "py.test" "-v" "--pyargs" "borg.testsuite" "-k" - (string-append - ;; These tests need to write to '/var'. - "not test_get_cache_dir " - "and not test_get_config_dir " - "and not test_get_keys_dir " - "and not test_get_security_dir " - ;; These tests assume there is a root user in '/etc/passwd'. - "and not test_access_acl " - "and not test_default_acl " - "and not test_get_item_uid_gid " - "and not test_non_ascii_acl " - "and not test_create_content_from_command " - "and not test_create_content_from_command_with_failed_command " - "and not test_create_stdin " - ;; We don't need to run benchmarks - "and not benchmark " - ;; These tests assume the kernel supports FUSE. - "and not test_fuse " - "and not test_fuse_allow_damaged_files " - "and not test_mount_hardlinks " - "and not test_readonly_mount " - "and not test_fuse_versions_view " - "and not test_migrate_lock_alive")))))) - (add-after 'install 'install-doc - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (man (string-append out "/share/man/man1")) - (misc (string-append out "/share/borg/misc"))) - (for-each (cut install-file <> misc) - '("docs/misc/create_chunker-params.txt" - "docs/misc/borg-data-flow.png" - "docs/misc/internals-picture.txt" - "docs/misc/prune-example.txt")) - (copy-recursively "docs/man" man)))) - (add-after 'install-docs 'install-shell-completions - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (etc (string-append out "/etc")) - (share (string-append out "/share"))) - (with-directory-excursion "scripts/shell_completions" - (install-file "bash/borg" - (string-append etc "/bash_completion.d")) - (install-file "zsh/_borg" - (string-append share "/zsh/site-functions")) - (install-file "fish/borg.fish" - (string-append share "/fish/vendor_completions.d"))))))))) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'set-env + (lambda* (#:key inputs #:allow-other-keys) + (let ((openssl #$(this-package-input "openssl")) + (lz4 #$(this-package-input "lz4")) + (xxhash #$(this-package-input "xxhash")) + (zstd #$(this-package-input "zstd"))) + (setenv "BORG_OPENSSL_PREFIX" openssl) + (setenv "BORG_LIBLZ4_PREFIX" lz4) + (setenv "BORG_LIBXXHASH_PREFIX" xxhash) + (setenv "BORG_LIBZSTD_PREFIX" zstd) + (setenv "PYTHON_EGG_CACHE" "/tmp") + ;; The test 'test_return_codes[python]' fails when + ;; HOME=/homeless-shelter. + (setenv "HOME" "/tmp")))) + ;; The tests need to be run after Borg is installed. + (delete 'check) + (add-after 'install 'check + (lambda* (#:key inputs outputs tests? #:allow-other-keys) + (when tests? + ;; Make the installed package available for the test suite. + (add-installed-pythonpath inputs outputs) + ;; The tests should be run in an empty directory. + (mkdir-p "tests") + (with-directory-excursion "tests" + (invoke "py.test" "-v" "--pyargs" "borg.testsuite" "-k" + (string-append + ;; These tests need to write to '/var'. + "not test_get_cache_dir " + "and not test_get_config_dir " + "and not test_get_keys_dir " + "and not test_get_security_dir " + ;; These tests assume there is a root user in '/etc/passwd'. + "and not test_access_acl " + "and not test_default_acl " + "and not test_get_item_uid_gid " + "and not test_non_ascii_acl " + "and not test_create_content_from_command " + "and not test_create_content_from_command_with_failed_command " + "and not test_create_stdin " + ;; We don't need to run benchmarks + "and not benchmark " + ;; These tests assume the kernel supports FUSE. + "and not test_fuse " + "and not test_fuse_allow_damaged_files " + "and not test_mount_hardlinks " + "and not test_readonly_mount " + "and not test_fuse_versions_view " + "and not test_migrate_lock_alive")))))) + (add-after 'install 'install-doc + (lambda _ + (let ((man (string-append #$output "/share/man/man1")) + (misc (string-append #$output "/share/borg/misc"))) + (for-each (cut install-file <> misc) + '("docs/misc/create_chunker-params.txt" + "docs/misc/borg-data-flow.png" + "docs/misc/internals-picture.txt" + "docs/misc/prune-example.txt")) + (copy-recursively "docs/man" man)))) + (add-after 'install-docs 'install-shell-completions + (lambda _ + (let ((etc (string-append #$output "/etc")) + (share (string-append #$output "/share"))) + (with-directory-excursion "scripts/shell_completions" + (install-file "bash/borg" + (string-append etc "/bash_completion.d")) + (install-file "zsh/_borg" + (string-append share "/zsh/site-functions")) + (install-file "fish/borg.fish" + (string-append share "/fish/vendor_completions.d"))))))))) (native-inputs (list python-cython python-dateutil python-setuptools-scm python-pytest)) (inputs @@ -755,8 +752,8 @@ detection, and lossless compression.") ;; FUSE 3 isn't working well, so we stick with FUSE 2 for now: ;; python-llfuse - `(,zstd "lib") - xxhash)) + xxhash + `(,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 -- cgit v1.2.3