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