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