Merge branch 'master' into staging
[jackhill/guix/guix.git] / gnu / packages / syncthing.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2016 Petter <petter@mykolab.ch>
3 ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Leo Famulari <leo@famulari.name>
4 ;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
5 ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
6 ;;;
7 ;;; This file is part of GNU Guix.
8 ;;;
9 ;;; GNU Guix is free software; you can redistribute it and/or modify it
10 ;;; under the terms of the GNU General Public License as published by
11 ;;; the Free Software Foundation; either version 3 of the License, or (at
12 ;;; your option) any later version.
13 ;;;
14 ;;; GNU Guix is distributed in the hope that it will be useful, but
15 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
16 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 ;;; GNU General Public License for more details.
18 ;;;
19 ;;; You should have received a copy of the GNU General Public License
20 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
21
22 (define-module (gnu packages syncthing)
23 #:use-module (guix build-system go)
24 #:use-module (guix build-system trivial)
25 #:use-module (guix packages)
26 #:use-module (guix download)
27 #:use-module (guix git-download)
28 #:use-module (guix licenses)
29 #:use-module (gnu packages)
30 #:use-module (gnu packages golang))
31
32 (define-public syncthing
33 (package
34 (name "syncthing")
35 (version "1.5.0")
36 (source (origin
37 (method url-fetch)
38 (uri (string-append "https://github.com/syncthing/syncthing"
39 "/releases/download/v" version
40 "/syncthing-source-v" version ".tar.gz"))
41 (sha256
42 (base32
43 "1394b8y4nllihnjngc0kjpdy7pvyh6v1h09hkn8rdmwxpsdkqkjb"))
44 (modules '((guix build utils)))
45 ;; Delete bundled ("vendored") free software source code.
46 (snippet '(begin
47 (delete-file-recursively "vendor")
48 #t))))
49 (build-system go-build-system)
50 ;; The primary Syncthing executable goes to "out", while the auxiliary
51 ;; server programs and utility tools go to "utils". This reduces the size
52 ;; of "out" by ~80 MiB.
53 (outputs '("out" "utils"))
54 ;; When updating Syncthing, check 'go.mod' in the source distribution to
55 ;; ensure we are using the correct versions of these dependencies.
56 (inputs
57 `(("go-github-com-jackpal-go-nat-pmp"
58 ,go-github-com-jackpal-go-nat-pmp)
59 ("go-github-com-bkaradzic-go-lz4" ,go-github-com-bkaradzic-go-lz4)
60 ("go-github-com-calmh-xdr" ,go-github-com-calmh-xdr)
61 ("go-github-com-chmduquesne-rollinghash"
62 ,go-github-com-chmduquesne-rollinghash)
63 ("go-github-com-gobwas-glob" ,go-github-com-gobwas-glob)
64 ("go-github-com-golang-groupcache-lru"
65 ,go-github-com-golang-groupcache-lru)
66 ("go-github-com-jackpal-gateway" ,go-github-com-jackpal-gateway)
67 ("go-github-com-kballard-go-shellquote"
68 ,go-github-com-kballard-go-shellquote)
69 ("go-github-com-lib-pq" ,go-github-com-lib-pq)
70 ("go-github-com-minio-sha256-simd" ,go-github-com-minio-sha256-simd)
71 ("go-github-com-oschwald-geoip2-golang"
72 ,go-github-com-oschwald-geoip2-golang)
73 ("go-github-com-pkg-errors" ,go-github-com-pkg-errors)
74 ("go-github-com-rcrowley-go-metrics" ,go-github-com-rcrowley-go-metrics)
75 ("go-github-com-sasha-s-go-deadlock" ,go-github-com-sasha-s-go-deadlock)
76 ("go-github-com-syncthing-notify" ,go-github-com-syncthing-notify)
77 ("go-github-com-syndtr-goleveldb" ,go-github-com-syndtr-goleveldb)
78 ("go-github-com-thejerf-suture" ,go-github-com-thejerf-suture)
79 ("go-golang-org-x-time" ,go-golang-org-x-time)
80 ("go-github-com-go-ldap-ldap" ,go-github-com-go-ldap-ldap)
81 ("go-github-com-gogo-protobuf" ,go-github-com-gogo-protobuf)
82 ("go-github-com-shirou-gopsutil" ,go-github-com-shirou-gopsutil)
83 ("go-github-com-prometheus-client-golang"
84 ,go-github-com-prometheus-client-golang)
85 ("go-golang-org-x-net" ,go-golang-org-x-net)
86 ("go-golang-org-x-text" ,go-golang-org-x-text)
87 ("go-github-com-audriusbutkevicius-recli"
88 ,go-github-com-audriusbutkevicius-recli)
89 ("go-github-com-urfave-cli" ,go-github-com-urfave-cli)
90 ("go-github-com-vitrun-qart" ,go-github-com-vitrun-qart)
91 ("go-github-com-mattn-go-isatty" ,go-github-com-mattn-go-isatty)
92 ("go-golang-org-x-crypto" ,go-golang-org-x-crypto)
93 ("go-github-com-flynn-archive-go-shlex"
94 ,go-github-com-flynn-archive-go-shlex)
95 ("go-github-com-getsentry-raven-go" ,go-github-com-getsentry-raven-go)
96 ("go-github-com-maruel-panicparse" ,go-github-com-maruel-panicparse)
97 ("go-github-com-ccding-go-stun" ,go-github-com-ccding-go-stun)
98 ("go-github-com-audriusbutkevicius-pfilter" ,go-github-com-audriusbutkevicius-pfilter)
99 ("go-github-com-lucas-clemente-quic-go" ,go-github-com-lucas-clemente-quic-go)
100 ("go-github-com-willf-bloom" ,go-github-com-willf-bloom)
101
102 ;; For tests.
103 ("go-github-com-d4l3k-messagediff" ,go-github-com-d4l3k-messagediff)))
104
105 (arguments
106 `(#:modules ((srfi srfi-26) ; for cut
107 (guix build utils)
108 (guix build go-build-system))
109 #:import-path "github.com/syncthing/syncthing"
110 ;; We don't need to install the source code for end-user applications.
111 #:install-source? #f
112 #:phases
113 (modify-phases %standard-phases
114 (add-before 'build 'increase-test-timeout
115 (lambda _
116 (substitute* "src/github.com/syncthing/syncthing/build.go"
117 (("120s") "999s"))
118 #t))
119
120 (replace 'build
121 (lambda _
122 (with-directory-excursion "src/github.com/syncthing/syncthing"
123 ;; XXX The only way to build Syncthing without its automatic
124 ;; updater and to build the utilities is to "build all" and then
125 ;; "build syncthing" again with -no-upgrade.
126 ;; https://github.com/syncthing/syncthing/issues/6118
127 (invoke "go" "run" "build.go" "build" "all")
128 (delete-file "syncthing")
129 (invoke "go" "run" "build.go" "-no-upgrade" "build" "syncthing"))))
130
131 (replace 'check
132 (lambda _
133 (with-directory-excursion "src/github.com/syncthing/syncthing"
134 (invoke "go" "run" "build.go" "test"))))
135
136 (replace 'install
137 (lambda* (#:key outputs #:allow-other-keys)
138 (let ((out (assoc-ref outputs "out"))
139 (utils (assoc-ref outputs "utils")))
140 (with-directory-excursion "src/github.com/syncthing/syncthing"
141 (install-file "syncthing" (string-append out "/bin"))
142 (for-each (cut install-file <> (string-append utils "/bin/"))
143 '("stcli" "stcompdirs" "stcrashreceiver"
144 "stdisco" "stdiscosrv" "stevents" "stfileinfo"
145 "stfinddevice" "stfindignored" "stgenfiles"
146 "stindex" "strelaypoolsrv" "strelaysrv" "stsigtool"
147 "stvanity" "stwatchfile" "uraggregate" "ursrv"))
148 #t))))
149
150 (add-after 'install 'install-docs
151 (lambda* (#:key outputs #:allow-other-keys)
152 (let* ((out (assoc-ref outputs "out"))
153 (utils (assoc-ref outputs "utils"))
154 (man "/share/man")
155 (man-section (string-append man "/man"))
156 (src "src/github.com/syncthing/syncthing/man/"))
157 ;; Install all the man pages to "out".
158 (for-each
159 (lambda (file)
160 (install-file file
161 (string-append out man-section
162 (string-take-right file 1))))
163 (find-files src "\\.[1-9]"))
164 ;; Copy all the man pages to "utils"
165 (copy-recursively (string-append out man)
166 (string-append utils man))
167 ;; Delete extraneous man pages from "out" and "utils",
168 ;; respectively.
169 (delete-file (string-append out man "/man1/stdiscosrv.1"))
170 (delete-file (string-append out man "/man1/strelaysrv.1"))
171 (delete-file (string-append utils man "/man1/syncthing.1"))
172 #t))))))
173 (synopsis "Decentralized continuous file system synchronization")
174 (description "Syncthing is a peer-to-peer file synchronization tool that
175 supports a wide variety of computing platforms. It uses the Block Exchange
176 Protocol.")
177 (home-page "https://github.com/syncthing/syncthing")
178 (license mpl2.0)))
179
180 (define-public go-github-com-jackpal-go-nat-pmp
181 (package
182 (name "go-github-com-jackpal-go-nat-pmp")
183 (version "1.0.2")
184 (source (origin
185 (method git-fetch)
186 (uri (git-reference
187 (url "https://github.com/jackpal/go-nat-pmp")
188 (commit (string-append "v" version))))
189 (file-name (git-file-name name version))
190 (sha256
191 (base32
192 "1p2yrzfbkazc9nisr2iqjwzhb6q16zj6finyxxn2ikk7iiighl1g"))))
193 (build-system go-build-system)
194 (arguments
195 `(#:import-path "github.com/jackpal/go-nat-pmp"))
196 (synopsis "Port mapping and discovery of external IP address")
197 (description "This package provides a Go client for the NAT-PMP internet
198 protocol for port mapping and discovering the external IP address of a
199 firewall.")
200 (home-page "https://github.com/jackpal/go-nat-pmp")
201 (license asl2.0)))
202
203 (define-public go-github-com-audriusbutkevicius-recli
204 (package
205 (name "go-github-com-audriusbutkevicius-recli")
206 (version "0.0.5")
207 (source (origin
208 (method git-fetch)
209 (uri (git-reference
210 (url "https://github.com/AudriusButkevicius/recli")
211 (commit (string-append "v" version))))
212 (file-name (git-file-name name version))
213 (sha256
214 (base32
215 "1m1xna1kb78pkmr1lfmvvnpk9j7c4x71j3a7c6vj7zpzc4srpsmf"))))
216 (build-system go-build-system)
217 (inputs
218 `(("go-github-com-pkg-errors" ,go-github-com-pkg-errors)
219 ("go-github-com-urfave-cli" ,go-github-com-urfave-cli)))
220 (arguments
221 `(#:import-path "github.com/AudriusButkevicius/recli"))
222 (synopsis "Reflection-based CLI generator")
223 (description "For a given struct, @code{recli} builds a set of
224 @code{urfave/cli} commands which allows you to modify it from the command line.
225 It is useful for generating command line clients for your application
226 configuration that is stored in a Go struct.")
227 (home-page "https://github.com/AudriusButkevicius/recli")
228 (license mpl2.0)))
229
230 (define-public go-github-com-bkaradzic-go-lz4
231 (let ((commit "7224d8d8f27ef618c0a95f1ae69dbb0488abc33a")
232 (revision "0"))
233 (package
234 (name "go-github-com-bkaradzic-go-lz4")
235 (version (git-version "0.0.0" revision commit))
236 (source (origin
237 (method git-fetch)
238 (uri (git-reference
239 (url "https://github.com/bkaradzic/go-lz4")
240 (commit commit)))
241 (file-name (git-file-name name version))
242 (sha256
243 (base32
244 "10lmya17vdqg2pvqni0p73iahni48s1v11ya9a0hcz4jh5vw4dkb"))))
245 (build-system go-build-system)
246 (arguments
247 `(#:import-path "github.com/bkaradzic/go-lz4"))
248 (synopsis "LZ4 compression algorithm")
249 (description "This package provides @code{go-lz4}, a Go implementation of
250 the LZ4 compression algorithm.")
251 (home-page "https://github.com/bkaradzic/go-lz4")
252 (license bsd-2))))
253
254 (define-public go-github-com-calmh-du
255 (package
256 (name "go-github-com-calmh-du")
257 (version "1.0.1")
258 (source (origin
259 (method git-fetch)
260 (uri (git-reference
261 (url "https://github.com/calmh/du")
262 (commit (string-append "v" version))))
263 (file-name (git-file-name name version))
264 (sha256
265 (base32
266 "0qb3a6y3p9nkyn3s66k6zcm16y8n8578qh23ddj14cxf2scrr2n2"))))
267 (build-system go-build-system)
268 (arguments
269 `(#:import-path "github.com/calmh/du"))
270 (synopsis "Get total and available disk space of a given volume")
271 (description "This is a Go implementation of `du`. It provides disk usage
272 information, such as how much storage space is available, free, and used.")
273 (home-page "https://github.com/calmh/du")
274 (license public-domain)))
275
276 (define-public go-github-com-calmh-xdr
277 (package
278 (name "go-github-com-calmh-xdr")
279 (version "1.1.0")
280 (source (origin
281 (method git-fetch)
282 (uri (git-reference
283 (url "https://github.com/calmh/xdr")
284 (commit (string-append "v" version))))
285 (file-name (git-file-name name version))
286 (sha256
287 (base32
288 "072wqdncz3nd4a3zkhvzzx1y3in1lm29wfvl0d8wrnqs5pyqh0mh"))))
289 (build-system go-build-system)
290 (arguments
291 `(#:import-path "github.com/calmh/xdr"))
292 (synopsis "XDR marshalling and unmarshalling")
293 (description "XDR is an External Data Representation (XDR)
294 marshalling and unmarshalling library in Go. It uses code generation and not
295 reflection.")
296 (home-page "https://github.com/calmh/xdr")
297 (license expat)))
298
299 (define-public go-github-com-d4l3k-messagediff
300 (package
301 (name "go-github-com-d4l3k-messagediff")
302 (version "1.2.1")
303 (source (origin
304 (method git-fetch)
305 (uri (git-reference
306 (url "https://github.com/d4l3k/messagediff")
307 (commit (string-append "v" version))))
308 (file-name (git-file-name name version))
309 (sha256
310 (base32
311 "104hl8x57ciaz7mzafg1vp9qggxcyfm8hsv9bmlihbz9ml3nyr8v"))))
312 (build-system go-build-system)
313 (arguments
314 `(#:import-path "github.com/d4l3k/messagediff"))
315 (synopsis "Diff arbitrary Go structs")
316 (description "Messagediff is a library for calculating diffs of arbitrary
317 structs in the Go programming language.")
318 (home-page "https://github.com/d4l3k/messagediff")
319 (license expat)))
320
321 (define-public go-github-com-gobwas-glob
322 (package
323 (name "go-github-com-gobwas-glob")
324 (version "0.2.3")
325 (source (origin
326 (method git-fetch)
327 (uri (git-reference
328 (url "https://github.com/gobwas/glob")
329 (commit (string-append "v" version))))
330 (file-name (git-file-name name version))
331 (sha256
332 (base32
333 "0jxk1x806zn5x86342s72dq2qy64ksb3zrvrlgir2avjhwb18n6z"))))
334 (build-system go-build-system)
335 (arguments
336 `(#:import-path "github.com/gobwas/glob"))
337 (synopsis "Go globbing library")
338 (description "This package provides a Go implementation of globs.")
339 (home-page "https://github.com/gobwas/glob")
340 (license expat)))
341
342
343 (define-public go-github-com-golang-groupcache-lru
344 (let ((commit "869f871628b6baa9cfbc11732cdf6546b17c1298")
345 (revision "2"))
346 (package
347 (name "go-github-com-golang-groupcache-lru")
348 (version (git-version "0.0.0" revision commit))
349 (source (origin
350 (method git-fetch)
351 (uri (git-reference
352 (url "https://github.com/golang/groupcache")
353 (commit commit)))
354 (file-name (git-file-name name version))
355 (sha256
356 (base32
357 "0r4nk8129bvx50qb4xzjaay39b2h6k7cbdqqzdlanmc82ygczsbw"))))
358 (build-system go-build-system)
359 (arguments
360 `(#:import-path "github.com/golang/groupcache/lru"
361 #:unpack-path "github.com/golang/groupcache"))
362 (synopsis "Groupcache is a caching and cache-filling library")
363 (description "Groupcache is a caching and cache-filling library, intended
364 as a replacement for memcached in many cases. It provides a data loading
365 mechanism with caching and de-duplication that works across a set of peer
366 processes.")
367 (home-page "https://github.com/golang/groupcache")
368 (license asl2.0))))
369
370 (define-public go-github-com-golang-snappy
371 (let ((commit "553a641470496b2327abcac10b36396bd98e45c9")
372 (revision "0"))
373 (package
374 (name "go-github-com-golang-snappy")
375 (version (git-version "0.0.0" revision commit))
376 (source (origin
377 (method git-fetch)
378 (uri (git-reference
379 (url "https://github.com/golang/snappy")
380 (commit commit)))
381 (file-name (git-file-name name version))
382 (sha256
383 (base32
384 "0kssxnih1l722hx9219c7javganjqkqhvl3i0hp0hif6xm6chvqk"))))
385 (build-system go-build-system)
386 (arguments
387 `(#:import-path "github.com/golang/snappy"))
388 (synopsis "Snappy compression format in the Go programming language")
389 (description "This package provides a Go implementation of the Snappy
390 compression format.")
391 (home-page "https://github.com/golang/snappy")
392 (license bsd-3))))
393
394 (define-public go-github-com-jackpal-gateway
395 (package
396 (name "go-github-com-jackpal-gateway")
397 (version "1.0.6")
398 (source (origin
399 (method git-fetch)
400 (uri (git-reference
401 (url "https://github.com/jackpal/gateway")
402 (commit (string-append "v" version))))
403 (file-name (git-file-name name version))
404 (sha256
405 (base32
406 "1yms2dw4dnz4cvj9vhwh6193d50jhvn5awsp2g3a4lcc3sjrgd6m"))))
407 (build-system go-build-system)
408 (arguments
409 `(#:import-path "github.com/jackpal/gateway"))
410 (synopsis "Discover the address of a LAN gateway")
411 (description "@code{gateway} is a Go library for discovering the IP
412 address of the default LAN gateway.")
413 (home-page "https://github.com/jackpal/gateway")
414 (license bsd-3)))
415
416 (define-public go-github-com-lib-pq
417 (package
418 (name "go-github-com-lib-pq")
419 (version "1.2.0")
420 (source (origin
421 (method git-fetch)
422 (uri (git-reference
423 (url "https://github.com/lib/pq")
424 (commit (string-append "v" version))))
425 (file-name (git-file-name name version))
426 (sha256
427 (base32
428 "08j1smm6rassdssdks4yh9aspa1dv1g5nvwimmknspvhx8a7waqz"))))
429 (build-system go-build-system)
430 (arguments
431 `(#:import-path "github.com/lib/pq"
432 ;; The tests seem to fail without access to the network or a running
433 ;; Postgres instance.
434 #:tests? #f))
435 (synopsis "Golang Postgres driver for Go's database/sql")
436 (description "This package provides a pure Go Postgres driver for Go's
437 database/sql package.")
438 (home-page "https://github.com/lib/pq")
439 (license expat)))
440
441 (define-public go-github-com-oschwald-geoip2-golang
442 (package
443 (name "go-github-com-oschwald-geoip2-golang")
444 (version "1.4.0")
445 (source (origin
446 (method git-fetch)
447 (uri (git-reference
448 (url "https://github.com/oschwald/geoip2-golang")
449 (commit (string-append "v" version))))
450 (file-name (git-file-name name version))
451 (sha256
452 (base32
453 "1jj4rbdpy87rbl79czg5hs5dyn6xlbnk0bnvyzi71dsxan57nixw"))))
454 (build-system go-build-system)
455 (propagated-inputs
456 `(("go-github-com-oschwald-maxminddb-golang"
457 ,go-github-com-oschwald-maxminddb-golang)
458 ("go-golang-org-x-sys" ,go-golang-org-x-sys)))
459 (arguments
460 `(#:import-path "github.com/oschwald/geoip2-golang"
461 #:tests? #f)) ; Requires some unpackaged software and test data
462 (synopsis "MaxMind GeoIP2 reader")
463 (description "This package provides a library for reading MaxMind
464 GeoLite2 and GeoIP2 databases in Go.")
465 (home-page "https://github.com/oschwald/geoip2-golang")
466 (license isc)))
467
468 (define-public go-github-com-oschwald-maxminddb-golang
469 (package
470 (name "go-github-com-oschwald-maxminddb-golang")
471 (version "1.4.0")
472 (source (origin
473 (method git-fetch)
474 (uri (git-reference
475 (url "https://github.com/oschwald/maxminddb-golang")
476 (commit (string-append "v" version))))
477 (file-name (git-file-name name version))
478 (sha256
479 (base32
480 "100wd5qv00pkcm6cb8c4x5gavc9jnn7drh6xrqh85hzci4rils66"))))
481 (build-system go-build-system)
482 (propagated-inputs
483 `(("go-golang-org-x-sys" ,go-golang-org-x-sys)))
484 (arguments
485 `(#:import-path "github.com/oschwald/maxminddb-golang"
486 #:tests? #f)) ; Requires some unpackaged software and test data
487 (synopsis "MaxMind DB Reader for Go")
488 (description "This is a Go reader for the MaxMind DB format. Although
489 this can be used to read GeoLite2 and GeoIP2 databases, @code{geoip2} provides a
490 higher-level API for doing so.")
491 (home-page "https://github.com/oschwald/maxminddb-golang")
492 (license isc)))
493
494 (define-public go-github-com-stathat-go
495 (let ((commit "74669b9f388d9d788c97399a0824adbfee78400e")
496 (revision "0"))
497 (package
498 (name "go-github-com-stathat-go")
499 (version (git-version "0.0.0" revision commit))
500 (source (origin
501 (method git-fetch)
502 (uri (git-reference
503 (url "https://github.com/stathat/go")
504 (commit commit)))
505 (file-name (git-file-name name version))
506 (sha256
507 (base32
508 "1zzlsl24dyr202qkr2pay22m6d0gb7ssms77wgdx0r0clgm7dihw"))))
509 (build-system go-build-system)
510 (arguments
511 `(#:import-path "github.com/stathat/go"))
512 (synopsis "Post statistics to StatHat")
513 (description "This is a Go package for posting to a StatHat account.")
514 (home-page "https://github.com/stathat/go")
515 (license expat))))
516
517 (define-public go-github-com-rcrowley-go-metrics
518 (let ((commit "cac0b30c2563378d434b5af411844adff8e32960")
519 (revision "2"))
520 (package
521 (name "go-github-com-rcrowley-go-metrics")
522 (version (git-version "0.0.0" revision commit))
523 (source (origin
524 (method git-fetch)
525 (uri (git-reference
526 (url "https://github.com/rcrowley/go-metrics")
527 (commit commit)))
528 (file-name (git-file-name name version))
529 (sha256
530 (base32
531 "1hfxffnpaw49pr3wrkbzq3pnv3nyzsvk5dxndv0yz70xlrbg8a04"))))
532 (build-system go-build-system)
533 (arguments
534 ;; Arbitrary precision tests are known to be broken on aarch64, ppc64le
535 ;; and s390x. See: https://github.com/rcrowley/go-metrics/issues/249
536 `(#:tests? ,(not (string-prefix? "aarch64" (or (%current-target-system)
537 (%current-system))))
538 #:import-path "github.com/rcrowley/go-metrics"))
539 (propagated-inputs
540 `(("go-github-com-stathat-go" ,go-github-com-stathat-go)))
541 (synopsis "Go port of Coda Hale's Metrics library")
542 (description "This package provides a Go implementation of Coda Hale's
543 Metrics library.")
544 (home-page "https://github.com/rcrowley/go-metrics")
545 (license bsd-2))))
546
547 (define-public go-github-com-sasha-s-go-deadlock
548 (package
549 (name "go-github-com-sasha-s-go-deadlock")
550 (version "0.2.0")
551 (source (origin
552 (method git-fetch)
553 (uri (git-reference
554 (url "https://github.com/sasha-s/go-deadlock")
555 (commit (string-append "v" version))))
556 (file-name (git-file-name name version))
557 (sha256
558 (base32
559 "13p7b7pakd9k1c2k0fs1hfim3c8mivz679977ai6zb01s4aw7gyg"))))
560 (build-system go-build-system)
561 (arguments
562 `(#:import-path "github.com/sasha-s/go-deadlock"))
563 (propagated-inputs
564 `(("go-github-com-petermattis-goid" ,go-github-com-petermattis-goid)))
565 (synopsis "Deadlock detection in go")
566 (description "This package provides tools for detecting deadlocks at
567 run-time in Go.")
568 (home-page "https://github.com/sasha-s/go-deadlock")
569 (license asl2.0)))
570
571 (define-public go-github-com-syndtr-goleveldb
572 (let ((commit "758128399b1df3a87e92df6c26c1d2063da8fabe")
573 (revision "4"))
574 (package
575 (name "go-github-com-syndtr-goleveldb")
576 (version (git-version "1.0.1" revision commit))
577 (source (origin
578 (method git-fetch)
579 (uri (git-reference
580 (url "https://github.com/syndtr/goleveldb")
581 (commit commit)))
582 (file-name (git-file-name name version))
583 (sha256
584 (base32
585 "0mnkzrz4di13g6ggd54my7bkb9nwk8f5k672dyasn467wsg7bf8f"))))
586 (build-system go-build-system)
587 (propagated-inputs
588 `(("go-github-com-golang-snappy" ,go-github-com-golang-snappy)))
589 (arguments
590 `(#:import-path "github.com/syndtr/goleveldb/leveldb"
591 #:unpack-path "github.com/syndtr/goleveldb"
592 #:tests? #f)) ; XXX needs 'github.com/onsi/gomega' package
593 (synopsis "LevelDB key/value database")
594 (description "This is an implementation of the LevelDB key / value
595 database in Go.")
596 (home-page "https://github.com/syndtr/goleveldb")
597 (license bsd-2))))
598
599 (define-public go-github-com-thejerf-suture
600 (package
601 (name "go-github-com-thejerf-suture")
602 (version "3.0.2")
603 (source (origin
604 (method git-fetch)
605 (uri (git-reference
606 (url "https://github.com/thejerf/suture")
607 (commit (string-append "v" version))))
608 (file-name (git-file-name name version))
609 (sha256
610 (base32
611 "03bdrl78jfwk0kw40lj63ga9cxhgccgss8yi9lp5j0m0ml7921gh"))))
612 (build-system go-build-system)
613 (arguments
614 `(#:import-path "github.com/thejerf/suture"))
615 (synopsis "Supervisor trees for Go")
616 (description "Suture provides Erlang-ish supervisor trees for Go.
617 \"Supervisor trees\" -> \"sutree\" -> \"suture\" -> holds your code together
618 when it's trying to die.
619
620 It is intended to deal gracefully with the real failure cases that can occur
621 with supervision trees (such as burning all your CPU time endlessly restarting
622 dead services), while also making no unnecessary demands on the \"service\"
623 code, and providing hooks to perform adequate logging with in a production
624 environment")
625 (home-page "https://github.com/thejerf/suture")
626 (license expat)))
627
628 (define-public go-github-com-vitrun-qart
629 (let ((commit "bf64b92db6b05651d6c25a3dabf2d543b360c0aa")
630 (revision "0"))
631 (package
632 (name "go-github-com-vitrun-qart")
633 (version (git-version "0.0.0" revision commit))
634 (source (origin
635 (method git-fetch)
636 (uri (git-reference
637 (url "https://github.com/vitrun/qart")
638 (commit commit)))
639 (file-name (string-append "go-github-com-vitrun-qart-"
640 version "-checkout"))
641 (sha256
642 (base32
643 "1xk7qki703xmay9ghi3kq2bjf1iw9dz8wik55739d6i7sn77vvkc"))))
644 (build-system go-build-system)
645 (arguments
646 `(#:import-path "github.com/vitrun/qart"))
647 (synopsis "Create QR codes with an embedded image")
648 (description "This package provides a library for embedding
649 human-meaningful graphics in QR codes. However, instead of scribbling on
650 redundant pieces and relying on error correction to preserve the meaning,
651 @code{qart} engineers the encoded values to create the picture in a code with no
652 inherent errors.")
653 (home-page "https://github.com/vitrun/qart")
654 (license bsd-3))))
655
656 (define-public go-github-com-chmduquesne-rollinghash
657 (let ((commit "a60f8e7142b536ea61bb5d84014171189eeaaa81")
658 (revision "0"))
659 (package
660 (name "go-github-com-chmduquesne-rollinghash")
661 (version (git-version "4.0.0" revision commit))
662 (source
663 (origin
664 (method git-fetch)
665 (uri (git-reference
666 (url "https://github.com/chmduquesne/rollinghash.git")
667 (commit commit)))
668 (file-name (git-file-name name version))
669 (sha256
670 (base32
671 "0fpaqq4zb0wikgbhn7vwqqj1h865f5xy195vkhivsp922p7qwsjr"))))
672 (build-system go-build-system)
673 (arguments
674 '(#:import-path "github.com/chmduquesne/rollinghash/"))
675 (synopsis "Rolling hashes in Go")
676 (description "This package provides a Go implementation of several rolling
677 hashes.")
678 (home-page "https://github.com/chmduquesne/rollinghash")
679 (license expat))))
680
681 (define-public go-github-com-petermattis-goid
682 (let ((commit "b0b1615b78e5ee59739545bb38426383b2cda4c9")
683 (revision "1"))
684 (package
685 (name "go-github-com-petermattis-goid")
686 (version (git-version "0.0.0" revision commit))
687 (source (origin
688 (method git-fetch)
689 (uri (git-reference
690 (url "https://github.com/petermattis/goid.git")
691 (commit commit)))
692 (file-name (git-file-name name version))
693 (sha256
694 (base32
695 "0ghfxn045r0bbn2vszw897lxzmhnm4k59aypjvpxl0pbzsw9ab2c"))))
696 (build-system go-build-system)
697 (arguments
698 '(#:import-path "github.com/petermattis/goid"))
699 (synopsis "Identify the running goroutine")
700 (description "This package offers a method of programmatically retrieving
701 the current goroutine's ID.")
702 (home-page "https://github.com/petermattis/goid")
703 (license asl2.0))))
704
705 (define-public go-github-com-kballard-go-shellquote
706 (let ((commit "95032a82bc518f77982ea72343cc1ade730072f0")
707 (revision "1"))
708 (package
709 (name "go-github-com-kballard-go-shellquote")
710 (version (git-version "0.0.0" revision commit))
711 (source (origin
712 (method git-fetch)
713 (uri (git-reference
714 (url "https://github.com/kballard/go-shellquote.git")
715 (commit commit)))
716 (file-name (git-file-name name version))
717 (sha256
718 (base32
719 "1rspvmnsikdq95jmx3dykxd4k1rmgl98ryjrysvl0cf18hl1vq80"))))
720 (build-system go-build-system)
721 (arguments
722 '(#:import-path "github.com/kballard/go-shellquote"))
723 (synopsis "Shell-style string joins and splits")
724 (description "Shellquote provides utilities for joining/splitting strings
725 using sh's word-splitting rules.")
726 (home-page "https://github.com/kballard/go-shellquote")
727 (license expat))))
728
729 (define-public go-github-com-syncthing-notify
730 (let ((commit "69c7a957d3e261f9744f46b3dd4d608d8480ad90")
731 (revision "5"))
732 (package
733 (name "go-github-com-syncthing-notify")
734 (version (git-version "0.0.0" revision commit))
735 (source (origin
736 (method git-fetch)
737 (uri (git-reference
738 (url "https://github.com/syncthing/notify")
739 (commit commit)))
740 (file-name (git-file-name name version))
741 (sha256
742 (base32
743 "1mmdzyfnmjabyhbipl4bggw4w5nlxyyjp0d93qd824kj07kmsr1f"))))
744 (build-system go-build-system)
745 (arguments
746 '(#:import-path "github.com/syncthing/notify"))
747 (propagated-inputs
748 `(("go-golang-org-x-sys" ,go-golang-org-x-sys)))
749 (synopsis "File system event notification library")
750 (description "This package provides @code{notify}, a file system event
751 notification library in Go.")
752 (home-page "https://github.com/syncthing/notify")
753 (license expat))))
754
755 (define-public go-github-com-beorn7-perks-quantile
756 (let ((commit "4c0e84591b9aa9e6dcfdf3e020114cd81f89d5f9")
757 (revision "0"))
758 (package
759 (name "go-github-com-beorn7-perks-quantile")
760 (version (git-version "0.0.0" revision commit))
761 (source (origin
762 (method git-fetch)
763 (uri (git-reference
764 (url "https://github.com/beorn7/perks.git")
765 (commit commit)))
766 (file-name (git-file-name name version))
767 (sha256
768 (base32
769 "1hrybsql68xw57brzj805xx2mghydpdiysv3gbhr7f5wlxj2514y"))))
770 (build-system go-build-system)
771 (arguments
772 '(#:import-path "github.com/beorn7/perks/quantile"
773 #:unpack-path "github.com/beorn7/perks"))
774 (synopsis "Compute approximate quantiles over an unbounded data stream")
775 (description "Perks contains the Go package @code{quantile} that computes
776 approximate quantiles over an unbounded data stream within low memory and CPU
777 bounds.")
778 (home-page "https://github.com/beorn7/perks")
779 (license expat))))
780
781 (define-public go-github-com-prometheus-client-model
782 (let ((commit "14fe0d1b01d4d5fc031dd4bec1823bd3ebbe8016")
783 (revision "2"))
784 (package
785 (name "go-github-com-prometheus-client-model")
786 (version (git-version "0.0.2" revision commit))
787 (source (origin
788 (method git-fetch)
789 (uri (git-reference
790 (url "https://github.com/prometheus/client_model.git")
791 (commit commit)))
792 (file-name (git-file-name name version))
793 (sha256
794 (base32
795 "0zdmk6rbbx39cvfz0r59v2jg5sg9yd02b4pds5n5llgvivi99550"))))
796 (build-system go-build-system)
797 (arguments
798 '(#:import-path "github.com/prometheus/client_model"
799 #:tests? #f
800 #:phases
801 (modify-phases %standard-phases
802 ;; Source-only package
803 (delete 'build))))
804 (propagated-inputs
805 `(("go-github-com-golang-protobuf-proto"
806 ,go-github-com-golang-protobuf-proto)))
807 (synopsis "Data model artifacts for Prometheus")
808 (description "This package provides data model artifacts for Prometheus.")
809 (home-page "https://github.com/prometheus/client_model")
810 (license asl2.0))))
811
812 (define-public go-github-com-matttproud-golang-protobuf-extensions-pbutil
813 (let ((commit "c12348ce28de40eed0136aa2b644d0ee0650e56c")
814 (revision "0"))
815 (package
816 (name "go-github-com-matttproud-golang-protobuf-extensions-pbutil")
817 (version (git-version "1.0.0" revision commit))
818 (source
819 (origin
820 (method git-fetch)
821 (uri
822 (git-reference
823 (url "https://github.com/matttproud/golang_protobuf_extensions.git")
824 (commit commit)))
825 (file-name (git-file-name name version))
826 (sha256
827 (base32
828 "1d0c1isd2lk9pnfq2nk0aih356j30k3h1gi2w0ixsivi5csl7jya"))))
829 (build-system go-build-system)
830 (arguments
831 '(#:import-path "github.com/matttproud/golang_protobuf_extensions/pbutil"
832 #:unpack-path "github.com/matttproud/golang_protobuf_extensions"))
833 (propagated-inputs
834 `(("go-github-com-golang-protobuf-proto"
835 ,go-github-com-golang-protobuf-proto)))
836 (synopsis "Streaming Protocol Buffers in Go")
837 (description "This package provides various Protocol Buffer
838 extensions for the Go language, namely support for record length-delimited
839 message streaming.")
840 (home-page "https://github.com/matttproud/golang_protobuf_extensions")
841 (license asl2.0))))
842
843 (define-public go-github-com-prometheus-common
844 (package
845 (name "go-github-com-prometheus-common")
846 (version "0.4.1")
847 (source (origin
848 (method git-fetch)
849 (uri (git-reference
850 (url "https://github.com/prometheus/common.git")
851 (commit (string-append "v" version))))
852 (file-name (git-file-name name version))
853 (sha256
854 (base32
855 "0sf4sjdckblz1hqdfvripk3zyp8xq89w7q75kbsyg4c078af896s"))))
856 (build-system go-build-system)
857 (arguments
858 '(#:import-path "github.com/prometheus/common"
859 #:tests? #f
860 #:phases
861 (modify-phases %standard-phases
862 (add-before 'reset-gzip-timestamps 'make-gzip-archive-writable
863 (lambda* (#:key outputs #:allow-other-keys)
864 (map (lambda (file)
865 (make-file-writable file))
866 (find-files
867 (string-append (assoc-ref outputs "out")
868 "/src/github.com/prometheus/common/expfmt/testdata/")
869 ".*\\.gz$"))
870 #t))
871 ;; Source-only package
872 (delete 'build))))
873 (propagated-inputs
874 `(("go-github-com-golang-protobuf-proto"
875 ,go-github-com-golang-protobuf-proto)
876 ("go-github-com-matttproud-golang-protobuf-extensions-pbutil"
877 ,go-github-com-matttproud-golang-protobuf-extensions-pbutil)
878 ("go-github-com-prometheus-client-model"
879 ,go-github-com-prometheus-client-model)))
880 (synopsis "Prometheus metrics")
881 (description "This package provides tools for reading and writing
882 Prometheus metrics.")
883 (home-page "https://github.com/prometheus/common")
884 (license asl2.0)))
885
886 (define-public go-github-com-prometheus-procfs
887 (package
888 (name "go-github-com-prometheus-procfs")
889 (version "0.0.4")
890 (source (origin
891 (method git-fetch)
892 (uri (git-reference
893 (url "https://github.com/prometheus/procfs.git")
894 (commit (string-append "v" version))))
895 (file-name (git-file-name name version))
896 (sha256
897 (base32
898 "1z5jq5rjala0a0di4nwk1rai0z9f73qwqj6mgcbpjbg2qknlb544"))))
899 (build-system go-build-system)
900 (arguments
901 '(#:import-path "github.com/prometheus/procfs"
902 ;; The tests require Go modules, which are not yet supported in Guix's
903 ;; Go build system.
904 #:tests? #f))
905 (synopsis "Go library for reading @file{/proc}")
906 (description "The @code{procfs} Go package provides functions to retrieve
907 system, kernel, and process metrics from the @file{/proc} pseudo file system.")
908 (home-page "https://github.com/prometheus/procfs")
909 (license asl2.0)))
910
911 (define-public go-github-com-prometheus-client-golang
912 (package
913 (name "go-github-com-prometheus-client-golang")
914 (version "1.2.1")
915 (source (origin
916 (method git-fetch)
917 (uri (git-reference
918 (url "https://github.com/prometheus/client_golang.git")
919 (commit (string-append "v" version))))
920 (file-name (git-file-name name version))
921 (sha256
922 (base32
923 "0zs49psk23n9z8wrl02d5vib5wclpym8kaxcy6n5pk696i419065"))))
924 (build-system go-build-system)
925 (arguments
926 '(#:tests? #f
927 #:import-path "github.com/prometheus/client_golang"
928 #:phases
929 (modify-phases %standard-phases
930 ;; Source-only package
931 (delete 'build))))
932 (propagated-inputs
933 `(("go-github-com-beorn7-perks-quantile"
934 ,go-github-com-beorn7-perks-quantile)
935 ("go-github-com-golang-protobuf-proto"
936 ,go-github-com-golang-protobuf-proto)
937 ("go-github-com-prometheus-client-model"
938 ,go-github-com-prometheus-client-model)
939 ("go-github-com-prometheus-common"
940 ,go-github-com-prometheus-common)
941 ("go-github-com-prometheus-procfs" ,go-github-com-prometheus-procfs)
942 ("go-github-com-cespare-xxhash" ,go-github-com-cespare-xxhash)))
943 (synopsis "HTTP server and client tools for Prometheus")
944 (description "This package @code{promhttp} provides HTTP client and
945 server tools for Prometheus metrics.")
946 (home-page "https://github.com/prometheus/client_golang")
947 (license asl2.0)))
948
949 (define-public go-github-com-go-asn1-ber-asn1-ber
950 (package
951 (name "go-github-com-go-asn1-ber-asn1-ber")
952 (version "1.3.1")
953 (source (origin
954 (method git-fetch)
955 (uri (git-reference
956 (url "https://github.com/go-asn1-ber/asn1-ber")
957 (commit (string-append "v" version))))
958 (file-name (git-file-name name version))
959 (sha256
960 (base32
961 "0dxfmgk84fn0p6pz3i0cspynh6rly5pfk9wghm1q07mx99npln02"))))
962 (build-system go-build-system)
963 (arguments
964 '(#:import-path "github.com/go-asn1-ber/asn1-ber"))
965 (synopsis "ASN.1 BER encoding and decoding in Go")
966 (description "This package provides ASN.1 BER encoding and decoding in the
967 Go language.")
968 (home-page "https://github.com/go-asn1-ber/asn1-ber")
969 (license expat)))
970
971 (define-public go-github-com-go-ldap-ldap
972 (package
973 (name "go-github-com-go-ldap-ldap")
974 (version "3.1.7")
975 (source (origin
976 (method git-fetch)
977 (uri (git-reference
978 (url "https://github.com/go-ldap/ldap")
979 (commit (string-append "v" version))))
980 (file-name (git-file-name name version))
981 (sha256
982 (base32
983 "1z6wxia7a1jkmasa9mm6g4n8f0qqbp5rw6vk0zyh4vzk7azklnj2"))))
984 (build-system go-build-system)
985 (arguments
986 '(#:import-path "github.com/go-ldap/ldap/v3"
987 #:tests? #f)) ; test suite requires internet access
988 (propagated-inputs
989 `(("go-github-com-go-asn1-ber-asn1-ber" ,go-github-com-go-asn1-ber-asn1-ber)))
990 (home-page "https://github.com/go-ldap/ldap")
991 (synopsis "LDAP v3 functionality for Go")
992 (description "This package provides basic LDAP v3 functionality in the Go
993 language.")
994 (license expat)))
995
996 (define-public go-github-com-flynn-archive-go-shlex
997 (let ((commit "3f9db97f856818214da2e1057f8ad84803971cff")
998 (revision "0"))
999 (package
1000 (name "go-github-com-flynn-archive-go-shlex")
1001 (version (git-version "0.0.0" revision commit))
1002 (source (origin
1003 (method git-fetch)
1004 (uri (git-reference
1005 (url "https://github.com/flynn-archive/go-shlex.git")
1006 (commit commit)))
1007 (file-name (git-file-name name version))
1008 (sha256
1009 (base32
1010 "1j743lysygkpa2s2gii2xr32j7bxgc15zv4113b0q9jhn676ysia"))))
1011 (build-system go-build-system)
1012 (arguments
1013 '(#:import-path "github.com/flynn-archive/go-shlex"))
1014 (synopsis "Go lexer")
1015 (description "Shlex is a simple lexer for go that supports shell-style
1016 quoting, commenting, and escaping.")
1017 (home-page "https://github.com/flynn-archive/go-shlex")
1018 (license asl2.0))))
1019
1020 (define-public go-github-com-audriusbutkevicius-pfilter
1021 (package
1022 (name "go-github-com-audriusbutkevicius-pfilter")
1023 (version "0.0.5")
1024 (source
1025 (origin
1026 (method git-fetch)
1027 (uri (git-reference
1028 (url "https://github.com/AudriusButkevicius/pfilter.git")
1029 (commit version)))
1030 (file-name (git-file-name name version))
1031 (sha256
1032 (base32
1033 "0xzhwyd0w21bhvzl5pinn22hp0y6h44rh3s2ppql69rafc6zd3c6"))))
1034 (build-system go-build-system)
1035 (arguments
1036 '(#:import-path "github.com/AudriusButkevicius/pfilter"))
1037 (synopsis "Filter packets into multiple virtual connections")
1038 (description "Pfilter is a Go package for filtering packets into multiple
1039 virtual connections from a single physical connection.")
1040 (home-page "https://github.com/AudriusButkevicius/pfilter")
1041 (license expat)))
1042
1043 (define-public go-github-com-ccding-go-stun
1044 (let ((commit "be486d185f3dfcb2dbf8429332da50a0da7f95a6")
1045 (revision "2"))
1046 (package
1047 (name "go-github-com-ccding-go-stun")
1048 (version (git-version "0.0.0" revision commit))
1049 (source
1050 (origin
1051 (method git-fetch)
1052 (uri (git-reference
1053 (url "https://github.com/ccding/go-stun.git")
1054 (commit commit)))
1055 (file-name (git-file-name name version))
1056 (sha256
1057 (base32
1058 "1gr0rw1c1y7wh6913lyn5k4ig023by27i36bly6am8dwgrgp34ww"))))
1059 (build-system go-build-system)
1060 (arguments
1061 '(#:import-path "github.com/ccding/go-stun"))
1062 (synopsis "STUN client implementation")
1063 (description "Go-stun is a go implementation of the STUN client (RFC 3489
1064 and RFC 5389).")
1065 (home-page "https://github.com/ccding/go-stun")
1066 (license asl2.0))))
1067
1068 (define-public go-github-com-cespare-xxhash
1069 (package
1070 (name "go-github-com-cespare-xxhash")
1071 (version "2.1.0")
1072 (source (origin
1073 (method git-fetch)
1074 (uri (git-reference
1075 (url "https://github.com/cespare/xxhash")
1076 (commit (string-append "v" version))))
1077 (file-name (git-file-name name version))
1078 (sha256
1079 (base32
1080 "12ad3z7ki9j07c4kx3ywkl6188i2afsjg7sl60wd21p6zkkpfjxq"))))
1081 (build-system go-build-system)
1082 (arguments
1083 '(#:import-path "github.com/cespare/xxhash"))
1084 (synopsis "Go implementation of xxHash")
1085 (description "This package provides of Go implementation of the 64-bit
1086 xxHash algorithm (XXH64).")
1087 (home-page "https://github.com/cespare/xxhash/")
1088 (license expat)))