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