aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnu/packages/syncthing.scm121
1 files changed, 121 insertions, 0 deletions
diff --git a/gnu/packages/syncthing.scm b/gnu/packages/syncthing.scm
index 43aeaac0e7..b4bc1e0a8a 100644
--- a/gnu/packages/syncthing.scm
+++ b/gnu/packages/syncthing.scm
@@ -21,9 +21,130 @@
#:use-module (guix build-system go)
#:use-module (guix build-system trivial)
#:use-module (guix packages)
+ #:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix licenses))
+(define-public syncthing
+ (package
+ (name "syncthing")
+ (version "0.14.39")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/syncthing/syncthing"
+ "/releases/download/v" version
+ "/syncthing-source-v" version ".tar.gz"))
+ (sha256
+ (base32
+ "07mrvd3vq0p4f550dpq73xg1vpa2h7xxz7vq07sjw0whapknkw9f"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "github.com/syncthing/syncthing"
+ #:unpack-path "github.com/syncthing"
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'delete-bundled-source-code
+ (lambda _
+ ;; Keep the bundled cznic libraries. There are some "internal"
+ ;; cznic libraries that complicate the use of non-bundled copies.
+ (rename-file "src/github.com/syncthing/syncthing/vendor/github.com/cznic"
+ "cznic")
+ (delete-file-recursively "src/github.com/syncthing/syncthing/vendor")
+ (mkdir-p "src/github.com/syncthing/syncthing/vendor/github.com/")
+ (rename-file "cznic"
+ "src/github.com/syncthing/syncthing/vendor/github.com/cznic")
+ #t))
+
+ ;; We don't need to install the source code for end-user applications.
+ (delete 'install-source)
+
+ (add-before 'build 'increase-test-timeout
+ (lambda _
+ (substitute* "src/github.com/syncthing/syncthing/build.go"
+ (("60s") "999s"))
+ #t))
+
+ (replace 'build
+ (lambda* (#:key inputs #:allow-other-keys)
+ (with-directory-excursion "src/github.com/syncthing/syncthing"
+ (zero? (system* "go" "run" "build.go" "-no-upgrade")))))
+
+ (replace 'check
+ (lambda _
+ (with-directory-excursion "src/github.com/syncthing/syncthing"
+ (zero? (system* "go" "run" "build.go" "test")))))
+
+ (replace 'install
+ (lambda _
+ (copy-recursively "src/github.com/syncthing/syncthing/bin/"
+ (string-append (assoc-ref %outputs "out") "/bin"))
+ #t))
+
+ (add-after 'install 'install-docs
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (man (string-append out "/share/man/man"))
+ (src "src/github.com/syncthing/syncthing/man/"))
+ (for-each
+ (lambda (file)
+ (install-file file
+ (string-append man (string-take-right file 1))))
+ (find-files src "\\.[1-9]"))
+ #t))))))
+ ;; When updating Syncthing, check 'vendor/manifest' in the source
+ ;; distribution to ensure we are using the correct versions of these
+ ;; dependencies.
+ (inputs
+ `(("go-github-com-audriusbutkevicius-cli"
+ ,go-github-com-audriusbutkevicius-cli)
+ ("go-github-com-audriusbutkevicius-kcp-go"
+ ,go-github-com-audriusbutkevicius-kcp-go)
+ ("go-github-com-audriusbutkevicius-go-nat-pmp"
+ ,go-github-com-audriusbutkevicius-go-nat-pmp)
+ ("go-github-com-audriusbutkevicius-pfilter"
+ ,go-github-com-audriusbutkevicius-pfilter)
+ ("go-github-com-bkaradzic-go-lz4" ,go-github-com-bkaradzic-go-lz4)
+ ("go-github-com-calmh-du" ,go-github-com-calmh-du)
+ ("go-github-com-calmh-xdr" ,go-github-com-calmh-xdr)
+ ("go-github-com-ccding-go-stun"
+ ,go-github-com-ccding-go-stun)
+ ("go-github-com-chmduquesne-rollinghash-adler32"
+ ,go-github-com-chmduquesne-rollinghash-adler32)
+; ("go-github-com-cznic-ql" ,go-github-com-cznic-ql) ; bundled
+ ; Used by bundled ql
+ ("go-github-com-edsrzf-mmap-go" ,go-github-com-edsrzf-mmap-go)
+ ("go-github-com-gobwas-glob" ,go-github-com-gobwas-glob)
+ ("go-github-com-gogo-protobuf-union"
+ ,(go-github-com-gogo-protobuf-union))
+ ("go-github-com-golang-groupcache-lru"
+ ,go-github-com-golang-groupcache-lru)
+ ("go-github-com-jackpal-gateway" ,go-github-com-jackpal-gateway)
+ ("go-github-com-kardianos-osext" ,go-github-com-kardianos-osext)
+ ("go-github-com-kballard-go-shellquote"
+ ,go-github-com-kballard-go-shellquote)
+ ("go-github-com-lib-pq" ,go-github-com-lib-pq)
+ ("go-github-com-minio-sha256-simd" ,go-github-com-minio-sha256-simd)
+ ("go-github-com-oschwald-geoip2-golang"
+ ,go-github-com-oschwald-geoip2-golang)
+ ("go-github-com-rcrowley-go-metrics" ,go-github-com-rcrowley-go-metrics)
+ ("go-github-com-sasha-s-go-deadlock" ,go-github-com-sasha-s-go-deadlock)
+ ("go-github-com-syndtr-goleveldb" ,go-github-com-syndtr-goleveldb)
+ ("go-github-com-thejerf-suture" ,go-github-com-thejerf-suture)
+ ("go-github-com-vitrun-qart" ,(go-github-com-vitrun-qart-union))
+ ("go-github-com-xtaci-smux" ,go-github-com-xtaci-smux)
+ ("go-golang-org-x-crypto" ,(go-golang-org-x-crypto-union))
+ ("go-golang-org-x-net-union" ,(go-golang-org-x-net-union))
+ ("go-golang-org-x-text" ,(go-golang-org-x-text-union))
+ ("go-golang-org-x-time-rate" ,go-golang-org-x-time-rate)
+ ("go-github-com-d4l3k-messagediff"
+ ,go-github-com-d4l3k-messagediff)))
+ (synopsis "Decentralized continuous filesystem synchronization")
+ (description "Syncthing is a peer-to-peer file synchronization tool that
+supports a wide variety of computing platforms. It uses the Block Exchange
+Protocol.")
+ (home-page "https://github.com/syncthing/syncthing")
+ (license mpl2.0)))
+
(define-public go-github-com-audriusbutkevicius-go-nat-pmp
(let ((commit "452c97607362b2ab5a7839b8d1704f0396b640ca")
(revision "0"))