1
0
mirror of https://git.savannah.gnu.org/git/guix.git synced 2026-04-06 21:20:33 +02:00

gnu: restic: Update to 0.17.3.

* gnu/packages/backup.scm (restic): Update to 0.17.3. Use G-Expressions.
[source]: Switch to git-fetch.
[arguments] <go>: Use defult (go-1.24).
<tests?, test-flags, test-subdirs>: Enable tests, skip only 2 tests and
step up from "cmd/restic".
<phases>: Use default 'build, 'check and 'install; remove
'install-shell-comletion, no longer provided.
[native-inputs]: Add go-cloud-google-com-go-storage,
go-github-com-anacrolix-fuse,
go-github-com-azure-azure-sdk-for-go-sdk-azcore,
go-github-com-azure-azure-sdk-for-go-sdk-azidentity,
go-github-com-azure-azure-sdk-for-go-sdk-storage-azblob,
go-github-com-backblaze-blazer, go-github-com-cenkalti-backoff-v4,
go-github-com-cespare-xxhash-v2, go-github-com-elithrar-simple-scrypt,
go-github-com-google-go-cmp, go-github-com-hashicorp-golang-lru-v2,
go-github-com-klauspost-compress, go-github-com-minio-minio-go-v7,
go-github-com-minio-sha256-simd, go-github-com-ncw-swift-v2,
go-github-com-peterbourgon-unixtransport, go-github-com-pkg-errors,
go-github-com-pkg-profile, go-github-com-pkg-sftp,
go-github-com-pkg-xattr, go-github-com-restic-chunker,
go-github-com-spf13-cobra, go-github-com-spf13-pflag,
go-go-uber-org-automaxprocs, go-golang-org-x-crypto,
go-golang-org-x-net, go-golang-org-x-oauth2, go-golang-org-x-sync,
go-golang-org-x-sys, go-golang-org-x-term, go-golang-org-x-text,
go-golang-org-x-time, go-google-golang-org-api,
go-github-com-envoyproxy-go-control-plane, and
go-github-com-envoyproxy-go-control-plane-envoy.

Fixes: guix/guix#4915
Change-Id: I8f470a16e97cf2081a8cb3a798f7e931a96cae1f
This commit is contained in:
Sharlatan Hellseher
2026-03-19 10:31:16 +00:00
parent 504c8a3592
commit 76e3a33a1d

View File

@@ -77,6 +77,8 @@
#:use-module (gnu packages gnupg)
#:use-module (gnu packages golang)
#:use-module (gnu packages golang-build)
#:use-module (gnu packages golang-check)
#:use-module (gnu packages golang-compression)
#:use-module (gnu packages golang-crypto)
#:use-module (gnu packages golang-web)
#:use-module (gnu packages golang-xyz)
@@ -891,94 +893,85 @@ is like a time machine for your data.")
(define-public restic
(package
(name "restic")
(version "0.9.6")
;; TODO Try packaging the bundled / vendored dependencies in the 'vendor/'
;; directory.
(source (origin
(method url-fetch)
(uri (string-append
"https://github.com/restic/restic/releases/download/"
"v" version "/restic-" version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1zmh42aah32ah8w5n6ilz9bci0y2xrf8p7qshy3yf1lzm5gnbj0w"))
(patches
(search-patches "restic-0.9.6-fix-tests-for-go1.15.patch"))))
(version "0.17.3")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/restic/restic")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "1wsgq7f0bfi0i5iiwcc3hlf2lhxcnz3zfs8p8bc6l913r9hvyg1x"))))
(build-system go-build-system)
(arguments
`(;; XXX: Tests failed on a newer version of Golang, newer version of
;; restic does not provide vendor folder any longer which means - a
;; long way of packaging missing inputs.
#:go ,go-1.17
#:import-path "github.com/restic/restic"
;; We don't need to install the source code for end-user applications.
#:install-source? #f
#:phases
(modify-phases %standard-phases
(replace 'build
(lambda* (#:key inputs #:allow-other-keys)
(with-directory-excursion "src/github.com/restic/restic"
;; Disable 'restic self-update'. It makes little sense in Guix.
(substitute* "build.go" (("selfupdate") ""))
(setenv "HOME" (getcwd)) ; for $HOME/.cache/go-build
(invoke "go" "run" "build.go"))))
(list
#:go go-1.25
#:install-source? #f
#:import-path "github.com/restic/restic/cmd/restic"
#:unpack-path "github.com/restic/restic"
#:embed-files #~(list "children" "nodes" "text")
#:test-flags
;; Python is required.
#~(list "-skip" "TestStdinFromCommand|TestStdinFromCommandNoOutput")
#:test-subdirs #~(list "../../...")
#:phases
#~(modify-phases %standard-phases
(add-after 'install 'install-docs
(lambda* (#:key import-path #:allow-other-keys)
(with-directory-excursion (string-append "src/" import-path)
(let* ((man "/share/man")
(man-section (string-append man "/man")))
;; Install all the man pages to "out".
(for-each
(lambda (file)
(install-file file
(string-append #$output man-section
(string-take-right file 1))))
(find-files "doc/man" "\\.[1-9]"))))))
(add-before 'check 'pre-check
(lambda _
(setenv "RESTIC_TEST_FUSE" "0"))))))
(native-inputs
(list go-cloud-google-com-go-storage
go-github-com-anacrolix-fuse
go-github-com-azure-azure-sdk-for-go-sdk-azcore
go-github-com-azure-azure-sdk-for-go-sdk-azidentity
go-github-com-azure-azure-sdk-for-go-sdk-storage-azblob
go-github-com-backblaze-blazer
go-github-com-cenkalti-backoff-v4
go-github-com-cespare-xxhash-v2
go-github-com-elithrar-simple-scrypt
;; go-github-com-go-ole-go-ole ;windows only
go-github-com-google-go-cmp
go-github-com-hashicorp-golang-lru-v2
go-github-com-klauspost-compress
go-github-com-minio-minio-go-v7
go-github-com-minio-sha256-simd
go-github-com-ncw-swift-v2
go-github-com-peterbourgon-unixtransport
go-github-com-pkg-errors
go-github-com-pkg-profile
go-github-com-pkg-sftp
go-github-com-pkg-xattr
go-github-com-restic-chunker
go-github-com-spf13-cobra
go-github-com-spf13-pflag
go-go-uber-org-automaxprocs
go-golang-org-x-crypto
go-golang-org-x-net
go-golang-org-x-oauth2
go-golang-org-x-sync
go-golang-org-x-sys
go-golang-org-x-term
go-golang-org-x-text
go-golang-org-x-time
go-google-golang-org-api
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(with-directory-excursion "src/github.com/restic/restic"
;; Disable FUSE tests.
(setenv "RESTIC_TEST_FUSE" "0")
(invoke "go" "run" "build.go" "--test")))))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
(src "src/github.com/restic/restic"))
(install-file (string-append src "/restic")
(string-append out "/bin"))
#t)))
(add-after 'install 'install-docs
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(man "/share/man")
(man-section (string-append man "/man"))
(src "src/github.com/restic/restic/doc/man/"))
;; Install all the man pages to "out".
(for-each
(lambda (file)
(install-file file
(string-append out man-section
(string-take-right file 1))))
(find-files src "\\.[1-9]"))
#t)))
(add-after 'install-docs 'install-shell-completion
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))
(etc (string-append out "/etc"))
(share (string-append out "/share")))
(for-each
(lambda (shell)
(let* ((shell-name (symbol->string shell))
(dir (string-append "etc/completion/" shell-name)))
(mkdir-p dir)
(invoke (string-append bin "/restic") "generate"
(string-append "--" shell-name "-completion")
(string-append dir "/"
(case shell
((bash) "restic")
((zsh) "_restic"))))))
'(bash zsh))
(with-directory-excursion "etc/completion"
(install-file "bash/restic"
(string-append etc "/bash_completion.d"))
(install-file "zsh/_restic"
(string-append share "/zsh/site-functions")))
#t))))))
;; XXX: These packages have to be bootstrapped to break cycle with
;; go-google-golang-org-grpc.
go-github-com-envoyproxy-go-control-plane
go-github-com-envoyproxy-go-control-plane-envoy))
(home-page "https://restic.net/")
(synopsis "Backup program with multiple revisions, encryption and more")
(description "Restic is a program that does backups right and was designed