1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2016 Petter <petter@mykolab.ch>
3 ;;; Copyright © 2016, 2017, 2018 Leo Famulari <leo@famulari.name>
5 ;;; This file is part of GNU Guix.
7 ;;; GNU Guix is free software; you can redistribute it and/or modify it
8 ;;; under the terms of the GNU General Public License as published by
9 ;;; the Free Software Foundation; either version 3 of the License, or (at
10 ;;; your option) any later version.
12 ;;; GNU Guix is distributed in the hope that it will be useful, but
13 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
14 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 ;;; GNU General Public License for more details.
17 ;;; You should have received a copy of the GNU General Public License
18 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
20 (define-module (gnu packages syncthing)
21 #:use-module (guix build-system go)
22 #:use-module (guix build-system trivial)
23 #:use-module (guix packages)
24 #:use-module (guix download)
25 #:use-module (guix git-download)
26 #:use-module (guix licenses)
27 #:use-module (gnu packages)
28 #:use-module (gnu packages golang))
30 (define-public syncthing
36 (uri (string-append "https://github.com/syncthing/syncthing"
37 "/releases/download/v" version
38 "/syncthing-source-v" version ".tar.gz"))
41 "1hhn72l74vb9l32i1a54ry2l85ji78cq6isd20lxxdk0bjqc4m29"))
42 (modules '((guix build utils)))
43 ;; Delete bundled ("vendored") free software source code.
45 (delete-file-recursively "vendor")
47 (build-system go-build-system)
48 ;; The primary Syncthing executable goes to "out", while the auxiliary
49 ;; server programs and utility tools go to "utils". This reduces the size
50 ;; of "out" by ~80 MiB.
51 (outputs '("out" "utils"))
53 `(#:import-path "github.com/syncthing/syncthing"
54 #:unpack-path "github.com/syncthing"
55 ;; We don't need to install the source code for end-user applications.
58 (modify-phases %standard-phases
59 (add-before 'build 'increase-test-timeout
61 (substitute* "src/github.com/syncthing/syncthing/build.go"
66 (lambda* (#:key inputs #:allow-other-keys)
67 (with-directory-excursion "src/github.com/syncthing/syncthing"
68 (invoke "go" "run" "build.go" "-no-upgrade"))))
72 (with-directory-excursion "src/github.com/syncthing/syncthing"
73 (invoke "go" "run" "build.go" "test"))))
76 (lambda* (#:key outputs #:allow-other-keys)
77 (let ((out (assoc-ref outputs "out"))
78 (utils (assoc-ref outputs "utils"))
79 (src "src/github.com/syncthing/syncthing/bin/"))
80 (install-file (string-append src "/syncthing")
81 (string-append out "/bin"))
82 (delete-file (string-append src "/syncthing"))
83 (copy-recursively "src/github.com/syncthing/syncthing/bin/"
84 (string-append utils "/bin"))
87 (add-after 'install 'install-docs
88 (lambda* (#:key outputs #:allow-other-keys)
89 (let* ((out (assoc-ref outputs "out"))
90 (utils (assoc-ref outputs "utils"))
92 (man-section (string-append man "/man"))
93 (src "src/github.com/syncthing/syncthing/man/"))
94 ;; Install all the man pages to "out".
98 (string-append out man-section
99 (string-take-right file 1))))
100 (find-files src "\\.[1-9]"))
101 ;; Copy all the man pages to "utils"
102 (copy-recursively (string-append out man)
103 (string-append utils man))
104 ;; Delete extraneous man pages from "out" and "utils",
106 (delete-file (string-append out man "/man1/stdiscosrv.1"))
107 (delete-file (string-append out man "/man1/strelaysrv.1"))
108 (delete-file (string-append utils man "/man1/syncthing.1"))
110 ;; When updating Syncthing, check 'vendor/manifest' in the source
111 ;; distribution to ensure we are using the correct versions of these
114 `(("go-github-com-audriusbutkevicius-cli"
115 ,go-github-com-audriusbutkevicius-cli)
116 ("go-github-com-audriusbutkevicius-go-nat-pmp"
117 ,go-github-com-audriusbutkevicius-go-nat-pmp)
118 ("go-github-com-audriusbutkevicius-pfilter"
119 ,go-github-com-audriusbutkevicius-pfilter)
120 ("go-github-com-bkaradzic-go-lz4" ,go-github-com-bkaradzic-go-lz4)
121 ("go-github-com-calmh-du" ,go-github-com-calmh-du)
122 ("go-github-com-calmh-xdr" ,go-github-com-calmh-xdr)
123 ("go-github-com-prometheus-union" ,(go-github-com-prometheus-union))
124 ("go-github-com-chmduquesne-rollinghash-adler32"
125 ,go-github-com-chmduquesne-rollinghash-adler32)
126 ("go-github-com-gobwas-glob" ,go-github-com-gobwas-glob)
127 ("go-github-com-gogo-protobuf-union"
128 ,(go-github-com-gogo-protobuf-union))
129 ("go-github-com-golang-groupcache-lru"
130 ,go-github-com-golang-groupcache-lru)
131 ("go-github-com-jackpal-gateway" ,go-github-com-jackpal-gateway)
132 ("go-github-com-kballard-go-shellquote"
133 ,go-github-com-kballard-go-shellquote)
134 ("go-github-com-lib-pq" ,go-github-com-lib-pq)
135 ("go-github-com-minio-sha256-simd" ,go-github-com-minio-sha256-simd)
136 ("go-github-com-oschwald-geoip2-golang"
137 ,go-github-com-oschwald-geoip2-golang)
138 ("go-github-com-pkg-errors" ,go-github-com-pkg-errors)
139 ("go-github-com-rcrowley-go-metrics" ,go-github-com-rcrowley-go-metrics)
140 ("go-github-com-sasha-s-go-deadlock" ,go-github-com-sasha-s-go-deadlock)
141 ("go-github-com-syncthing-notify" ,go-github-com-syncthing-notify)
142 ("go-github-com-syndtr-goleveldb" ,go-github-com-syndtr-goleveldb)
143 ("go-github-com-thejerf-suture" ,go-github-com-thejerf-suture)
144 ("go-github-com-vitrun-qart" ,(go-github-com-vitrun-qart-union))
145 ("go-golang-org-x-crypto" ,(go-golang-org-x-crypto-union))
146 ("go-golang-org-x-net-union" ,(go-golang-org-x-net-union))
147 ("go-golang-org-x-text" ,(go-golang-org-x-text-union))
148 ("go-golang-org-x-time-rate" ,go-golang-org-x-time-rate)
149 ("go-gopkg.in-ldap.v2" ,go-gopkg.in-ldap.v2)
151 ("go-github-com-d4l3k-messagediff" ,go-github-com-d4l3k-messagediff)))
152 (synopsis "Decentralized continuous file system synchronization")
153 (description "Syncthing is a peer-to-peer file synchronization tool that
154 supports a wide variety of computing platforms. It uses the Block Exchange
156 (home-page "https://github.com/syncthing/syncthing")
159 (define-public go-github-com-audriusbutkevicius-go-nat-pmp
160 (let ((commit "452c97607362b2ab5a7839b8d1704f0396b640ca")
163 (name "go-github-com-audriusbutkevicius-go-nat-pmp")
164 (version (git-version "0.0.0" revision commit))
168 (url "https://github.com/AudriusButkevicius/go-nat-pmp")
170 (file-name (git-file-name name version))
172 (base32 "1accmpl1llk16a19nlyy991fqrgfay6l53gb64hgmdfmqljdvbk7"))))
173 (build-system go-build-system)
175 `(#:import-path "github.com/AudriusButkevicius/go-nat-pmp"))
176 (synopsis "Port mapping and discovery of external IP address")
177 (description "This packages provides a Go client for the NAT-PMP internet
178 protocol for port mapping and discovering the external IP address of a
180 (home-page "https://github.com/AudriusButkevicius/go-nat-pmp")
183 (define-public go-github-com-bkaradzic-go-lz4
184 (let ((commit "7224d8d8f27ef618c0a95f1ae69dbb0488abc33a")
187 (name "go-github-com-bkaradzic-go-lz4")
188 (version (git-version "0.0.0" revision commit))
192 (url "https://github.com/bkaradzic/go-lz4")
194 (file-name (git-file-name name version))
197 "10lmya17vdqg2pvqni0p73iahni48s1v11ya9a0hcz4jh5vw4dkb"))))
198 (build-system go-build-system)
200 `(#:import-path "github.com/bkaradzic/go-lz4"))
201 (synopsis "LZ4 compression algorithm")
202 (description "This package provides @code{go-lz4}, a Go implementation of
203 the LZ4 compression algorithm.")
204 (home-page "https://github.com/bkaradzic/go-lz4")
207 (define-public go-github-com-calmh-du
209 (name "go-github-com-calmh-du")
214 (url "https://github.com/calmh/du")
215 (commit (string-append "v" version))))
216 (file-name (git-file-name name version))
219 "0qb3a6y3p9nkyn3s66k6zcm16y8n8578qh23ddj14cxf2scrr2n2"))))
220 (build-system go-build-system)
222 `(#:import-path "github.com/calmh/du"))
223 (synopsis "Get total and available disk space of a given volume")
224 (description "This is a Go implementation of `du`. It provides disk usage
225 information, such as how much storage space is available, free, and used.")
226 (home-page "https://github.com/calmh/du")
227 (license public-domain)))
229 (define-public go-github-com-calmh-xdr
230 (let ((commit "08e072f9cb164f943a92eb59f90f3abc64ac6e8f")
233 (name "go-github-com-calmh-xdr")
234 (version (git-version "2.0.1" revision commit))
238 (url "https://github.com/calmh/xdr")
240 (file-name (git-file-name name version))
243 "072wqdncz3nd4a3zkhvzzx1y3in1lm29wfvl0d8wrnqs5pyqh0mh"))))
244 (build-system go-build-system)
246 `(#:import-path "github.com/calmh/xdr"))
247 (synopsis "XDR marshalling and unmarshalling")
248 (description "XDR is an External Data Representation (XDR)
249 marshalling and unmarshalling library in Go. It uses code generation and not
251 (home-page "https://github.com/calmh/xdr")
254 (define-public go-github-com-d4l3k-messagediff
255 (let ((commit "29f32d820d112dbd66e58492a6ffb7cc3106312b")
258 (name "go-github-com-d4l3k-messagediff")
259 (version (git-version "1.1.0" revision commit))
263 (url "https://github.com/d4l3k/messagediff")
265 (file-name (git-file-name name version))
268 "104hl8x57ciaz7mzafg1vp9qggxcyfm8hsv9bmlihbz9ml3nyr8v"))))
269 (build-system go-build-system)
271 `(#:import-path "github.com/d4l3k/messagediff"))
272 (synopsis "Diff arbitrary Go structs")
273 (description "Messagediff is a library for calculating diffs of arbitrary
274 structs in the Go programming language.")
275 (home-page "https://github.com/d4l3k/messagediff")
278 (define-public go-github-com-gobwas-glob
279 (let ((commit "51eb1ee00b6d931c66d229ceeb7c31b985563420")
282 (name "go-github-com-gobwas-glob")
283 (version (git-version "0.0.0" revision commit))
287 (url "https://github.com/gobwas/glob")
289 (file-name (git-file-name name version))
292 "090wzpwsjana1qas8ipwh1pj959gvc4b7vwybzi01f3bmd79jwlp"))))
293 (build-system go-build-system)
295 `(#:import-path "github.com/gobwas/glob"))
296 (synopsis "Go globbing library")
297 (description "This packages provides a Go implementation of globs.")
298 (home-page "https://github.com/gobwas/glob")
302 (define-public go-github-com-golang-groupcache-lru
303 (let ((commit "84a468cf14b4376def5d68c722b139b881c450a4")
306 (name "go-github-com-golang-groupcache-lru")
307 (version (git-version "0.0.0" revision commit))
311 (url "https://github.com/golang/groupcache")
313 (file-name (git-file-name name version))
316 "1ky1r9qh54yi9zp2769qrjngzndgd8fn7mja2qfac285n06chmcn"))))
317 (build-system go-build-system)
319 `(#:import-path "github.com/golang/groupcache/lru"
320 #:unpack-path "github.com/golang/groupcache"))
321 (synopsis "Groupcache is a caching and cache-filling library")
322 (description "Groupcache is a caching and cache-filling library, intended
323 as a replacement for memcached in many cases. It provides a data loading
324 mechanism with caching and de-duplication that works across a set of peer
326 (home-page "https://github.com/golang/groupcache")
329 (define-public go-github-com-golang-snappy
330 (let ((commit "553a641470496b2327abcac10b36396bd98e45c9")
333 (name "go-github-com-golang-snappy")
334 (version (git-version "0.0.0" revision commit))
338 (url "https://github.com/golang/snappy")
340 (file-name (git-file-name name version))
343 "0kssxnih1l722hx9219c7javganjqkqhvl3i0hp0hif6xm6chvqk"))))
344 (build-system go-build-system)
346 `(#:import-path "github.com/golang/snappy"))
347 (synopsis "Snappy compression format in the Go programming language")
348 (description "This package provides a Go implementation of the Snappy
349 compression format.")
350 (home-page "https://github.com/golang/snappy")
353 (define-public go-github-com-jackpal-gateway
354 (let ((commit "5795ac81146e01d3fab7bcf21c043c3d6a32b006")
357 (name "go-github-com-jackpal-gateway")
358 (version (git-version "0.0.0" revision commit))
362 (url "https://github.com/jackpal/gateway")
364 (file-name (git-file-name name version))
367 "0fkwkwmhfadwk3cha8616bhqxfkr9gjjnynhhxyldlphixgs3f25"))))
368 (build-system go-build-system)
370 `(#:import-path "github.com/jackpal/gateway"))
371 (synopsis "Discover the address of a LAN gateway")
372 (description "@code{gateway} is a Go library for discovering the IP
373 address of the default LAN gateway.")
374 (home-page "https://github.com/jackpal/gateway")
377 (define-public go-github-com-lib-pq
378 (let ((commit "83612a56d3dd153a94a629cd64925371c9adad78")
381 (name "go-github-com-lib-pq")
382 (version (git-version "0.0.0" revision commit))
386 (url "https://github.com/lib/pq")
388 (file-name (git-file-name name version))
391 "12334yigh284k5cdvb9pgxaq6n78205jcbp75ajz44vvfd4wi6qc"))))
392 (build-system go-build-system)
394 `(#:import-path "github.com/lib/pq"
395 ;; The tests seem to fail without access to the network or a running
396 ;; Postgres instance.
398 (synopsis "Golang Postgres driver for Go's database/sql")
399 (description "This packages provides a pure Go Postgres driver for Go's
400 database/sql package.")
401 (home-page "https://github.com/lib/pq")
404 (define-public go-github-com-minio-sha256-simd
405 (let ((commit "ad98a36ba0da87206e3378c556abbfeaeaa98668")
408 (name "go-github-com-minio-sha256-simd")
409 (version (git-version "0.0.0" revision commit))
413 (url "https://github.com/minio/sha256-simd")
415 (file-name (git-file-name name version))
418 "0yfnqn3kqdnlfm54yvc4fr5vpdmwdi2kw571nlkbpmy8ldhsqqfi"))))
419 (build-system go-build-system)
421 `(#:import-path "github.com/minio/sha256-simd"))
422 (synopsis "Hardware-accelerated SHA256 in Go using SIMD")
423 (description "This packages provides a pure Go implementation of SHA256
424 using SIMD (Single instruction, multiple data) instructions for Intel and ARM
426 (home-page "https://github.com/minio/sha256-simd")
429 (define-public go-github-com-oschwald-geoip2-golang
431 (name "go-github-com-oschwald-geoip2-golang")
436 (url "https://github.com/oschwald/geoip2-golang")
437 (commit (string-append "v" version))))
438 (file-name (git-file-name name version))
441 "0v698bzs8lb59cqpsa9cf4sl8rdsvnnmaravhbfn6g6i511ppclr"))))
442 (build-system go-build-system)
444 `(("go-github-com-oschwald-maxminddb-golang"
445 ,go-github-com-oschwald-maxminddb-golang)
446 ("go-golang-org-x-sys-unix" ,go-golang-org-x-sys-unix)))
448 `(#:import-path "github.com/oschwald/geoip2-golang"
449 #:tests? #f)) ; Requires some unpackaged software and test data
450 (synopsis "MaxMind GeoIP2 reader")
451 (description "This packages provides a library for reading MaxMind
452 GeoLite2 and GeoIP2 databases in Go.")
453 (home-page "https://github.com/oschwald/geoip2-golang")
456 (define-public go-github-com-oschwald-maxminddb-golang
457 (let ((commit "26fe5ace1c706491c2936119e1dc69c1a9c04d7f")
460 (name "go-github-com-oschwald-maxminddb-golang")
461 (version (git-version "1.2.0" revision commit))
465 (url "https://github.com/oschwald/maxminddb-golang")
467 (file-name (git-file-name name version))
470 "1i6d935f3cv9djpjvc2ibh8aps8jqvg454b9pkwg2h98al759ggk"))))
471 (build-system go-build-system)
473 `(("go-golang-org-x-sys-unix" ,go-golang-org-x-sys-unix)))
475 `(#:import-path "github.com/oschwald/maxminddb-golang"
476 #:tests? #f)) ; Requires some unpackaged software and test data
477 (synopsis "MaxMind DB Reader for Go")
478 (description "This is a Go reader for the MaxMind DB format. Although
479 this can be used to read GeoLite2 and GeoIP2 databases, @code{geoip2} provides a
480 higher-level API for doing so.")
481 (home-page "https://github.com/oschwald/maxminddb-golang")
484 (define-public go-github-com-stathat-go
485 (let ((commit "74669b9f388d9d788c97399a0824adbfee78400e")
488 (name "go-github-com-stathat-go")
489 (version (git-version "0.0.0" revision commit))
493 (url "https://github.com/stathat/go")
495 (file-name (git-file-name name version))
498 "1zzlsl24dyr202qkr2pay22m6d0gb7ssms77wgdx0r0clgm7dihw"))))
499 (build-system go-build-system)
501 `(#:import-path "github.com/stathat/go"))
502 (synopsis "Post statistics to StatHat")
503 (description "This is a Go package for posting to a StatHat account.")
504 (home-page "https://github.com/stathat/go")
507 (define-public go-github-com-rcrowley-go-metrics
508 (let ((commit "e181e095bae94582363434144c61a9653aff6e50")
511 (name "go-github-com-rcrowley-go-metrics")
512 (version (git-version "0.0.0" revision commit))
516 (url "https://github.com/rcrowley/go-metrics")
518 (file-name (git-file-name name version))
521 "1pwkyw801hy7n94skzk6h177zqcil6ayrmb5gs3jdpsfayh8ia5w"))))
522 (build-system go-build-system)
524 `(#:import-path "github.com/rcrowley/go-metrics"))
526 `(("go-github-com-stathat-go" ,go-github-com-stathat-go)))
527 (synopsis "Go port of Coda Hale's Metrics library")
528 (description "This package provides a Go implementation of Coda Hale's
530 (home-page "https://github.com/rcrowley/go-metrics")
533 (define-public go-github-com-sasha-s-go-deadlock
534 (let ((commit "03d40e5dbd5488667a13b3c2600b2f7c2886f02f")
537 (name "go-github-com-sasha-s-go-deadlock")
538 (version (git-version "0.1.0" revision commit))
542 (url "https://github.com/sasha-s/go-deadlock")
544 (file-name (git-file-name name version))
547 "13p7b7pakd9k1c2k0fs1hfim3c8mivz679977ai6zb01s4aw7gyg"))))
548 (build-system go-build-system)
550 `(#:import-path "github.com/sasha-s/go-deadlock"))
552 `(("go-github-com-petermattis-goid" ,go-github-com-petermattis-goid)))
553 (synopsis "Deadlock detection in go")
554 (description "This package provides tools for detecting deadlocks at
556 (home-page "https://github.com/sasha-s/go-deadlock")
559 (define-public go-github-com-syndtr-goleveldb
560 (let ((commit "34011bf325bce385408353a30b101fe5e923eb6e")
563 (name "go-github-com-syndtr-goleveldb")
564 (version (git-version "0.0.0" revision commit))
568 (url "https://github.com/syndtr/goleveldb")
570 (file-name (git-file-name name version))
573 "097ja0vyj6p27zrxha9nhk09fj977xsvhmd3bk2hbyvnbw4znnhd"))))
574 (build-system go-build-system)
576 `(("go-github-com-golang-snappy" ,go-github-com-golang-snappy)))
578 `(#:import-path "github.com/syndtr/goleveldb/leveldb"
579 #:unpack-path "github.com/syndtr/goleveldb"
580 #:tests? #f)) ; XXX needs 'github.com/onsi/gomega' package
581 (synopsis "LevelDB key/value database")
582 (description "This is an implementation of the LevelDB key / value
584 (home-page "https://github.com/syndtr/goleveldb")
587 (define-public go-github-com-thejerf-suture
588 (let ((commit "bf6ee6a0b047ebbe9ae07d847f750dd18c6a9276")
591 (name "go-github-com-thejerf-suture")
592 (version (git-version "3.0.0" revision commit))
596 (url "https://github.com/thejerf/suture")
598 (file-name (git-file-name name version))
601 "0rzx9k408vaglwnnpgpcs6y7ff7p65915nbg33rvbaz13hxwkz3y"))))
602 (build-system go-build-system)
604 `(#:import-path "github.com/thejerf/suture"))
605 (synopsis "Supervisor trees for Go")
606 (description "Suture provides Erlang-ish supervisor trees for Go.
607 \"Supervisor trees\" -> \"sutree\" -> \"suture\" -> holds your code together
608 when it's trying to die.
610 It is intended to deal gracefully with the real failure cases that can occur
611 with supervision trees (such as burning all your CPU time endlessly restarting
612 dead services), while also making no unnecessary demands on the \"service\"
613 code, and providing hooks to perform adequate logging with in a production
615 (home-page "https://github.com/thejerf/suture")
618 (define* (go-github-com-vitrun-qart-union
619 #:optional (packages (list go-github-com-vitrun-qart-coding
620 go-github-com-vitrun-qart-gf256
621 go-github-com-vitrun-qart-qr)))
623 (name "go-github-com-vitrun-qart")
624 (version (package-version go-github-com-vitrun-qart-qr))
626 (build-system trivial-build-system)
628 '(#:modules ((guix build union))
630 (use-modules (ice-9 match)
633 (((names . directories) ...)
634 (union-build (assoc-ref %outputs "out")
637 (inputs (map (lambda (package)
638 (list (package-name package) package))
640 (synopsis "Union of qart libraries")
641 (description "This is a union of qart libraries.")
642 (home-page (package-home-page go-github-com-vitrun-qart-qr))
643 (license (package-license go-github-com-vitrun-qart-qr))))
645 (define-public go-github-com-vitrun-qart-coding
646 (let ((commit "bf64b92db6b05651d6c25a3dabf2d543b360c0aa")
649 (name "go-github-com-vitrun-qart-coding")
650 (version (git-version "0.0.0" revision commit))
654 (url "https://github.com/vitrun/qart")
656 (file-name (string-append "go-github-com-vitrun-qart-"
657 version "-checkout"))
660 "1xk7qki703xmay9ghi3kq2bjf1iw9dz8wik55739d6i7sn77vvkc"))))
661 (build-system go-build-system)
663 `(#:import-path "github.com/vitrun/qart/coding"
664 #:unpack-path "github.com/vitrun/qart"))
665 (synopsis "Low-level QR coding library")
666 (description "This package provides a library for embedding
667 human-meaningful graphics in QR codes. However, instead of scribbling on
668 redundant pieces and relying on error correction to preserve the meaning,
669 @code{qart} engineers the encoded values to create the picture in a code with no
670 inherent errors. This @code{qart} component, @code{coding}, implements
671 low-level QR coding details.")
672 (home-page "https://github.com/vitrun/qart/")
675 (define-public go-github-com-vitrun-qart-gf256
676 (let ((commit "bf64b92db6b05651d6c25a3dabf2d543b360c0aa")
679 (name "go-github-com-vitrun-qart-gf256")
680 (version (git-version "0.0.0" revision commit))
684 (url "https://github.com/vitrun/qart")
686 (file-name (string-append "go-github-com-vitrun-qart-"
687 version "-checkout"))
690 "1xk7qki703xmay9ghi3kq2bjf1iw9dz8wik55739d6i7sn77vvkc"))))
691 (build-system go-build-system)
693 `(#:import-path "github.com/vitrun/qart/gf256"
694 #:unpack-path "github.com/vitrun/qart"))
695 (synopsis "Qart library for Galois Field GF(256) math")
696 (description "This package, a component of @code{qart}, provides @code{gf256},
697 implements arithmetic over the Galois Field GF(256).")
698 (home-page "https://github.com/vitrun/qart")
701 (define-public go-github-com-vitrun-qart-qr
702 (let ((commit "bf64b92db6b05651d6c25a3dabf2d543b360c0aa")
705 (name "go-github-com-vitrun-qart-qr")
706 (version (git-version "0.0.0" revision commit))
710 (url "https://github.com/vitrun/qart")
712 (file-name (string-append "go-github-com-vitrun-qart-"
713 version "-checkout"))
716 "1xk7qki703xmay9ghi3kq2bjf1iw9dz8wik55739d6i7sn77vvkc"))))
717 (build-system go-build-system)
719 `(#:import-path "github.com/vitrun/qart/qr"
720 #:unpack-path "github.com/vitrun/qart"))
721 (synopsis "Qart component for generating QR codes")
722 (description "This package provides a library for embedding
723 human-meaningful graphics in QR codes. However, instead of scribbling on
724 redundant pieces and relying on error correction to preserve the meaning,
725 @code{qart} engineers the encoded values to create the picture in a code with no
726 inherent errors. This @code{qart} component, @code{qr}, provides QR code
728 (home-page "https://github.com/vitrun/qart")
731 (define* (go-golang-org-x-net-union #:optional
732 (packages (list go-golang-org-x-net-ipv4
733 go-golang-org-x-net-bpf
734 go-golang-org-x-net-ipv6
735 go-golang-org-x-net-proxy
736 go-golang-org-x-net-internal-iana)))
738 (name "go-golang-org-x-net")
739 (version (package-version go-golang-org-x-net-ipv4))
741 (build-system trivial-build-system)
743 '(#:modules ((guix build union))
745 (use-modules (ice-9 match)
748 (((names . directories) ...)
749 (union-build (assoc-ref %outputs "out")
752 (inputs (map (lambda (package)
753 (list (package-name package) package))
755 (synopsis "Union of the Go net libraries")
756 (description "A union of the Golang net libraries.")
757 (home-page (package-home-page go-golang-org-x-net-ipv4))
758 (license (package-license go-golang-org-x-net-ipv4))))
760 (define* (go-golang-org-x-text-union #:optional
761 (packages (list go-golang-org-x-text-transform
762 go-golang-org-x-text-unicode-norm)))
764 (name "go-golang-org-x-text")
765 (version (package-version go-golang-org-x-text-transform))
767 (build-system trivial-build-system)
769 '(#:modules ((guix build union))
771 (use-modules (ice-9 match)
774 (((names . directories) ...)
775 (union-build (assoc-ref %outputs "out")
778 (inputs (map (lambda (package)
779 (list (package-name package) package))
781 (synopsis "Union of the Go text libraries")
782 (description "A union of the Golang text libraries.")
783 (home-page (package-home-page go-golang-org-x-text-transform))
784 (license (package-license go-golang-org-x-text-transform))))
786 (define-public go-github-com-audriusbutkevicius-pfilter
787 (let ((commit "9dca34a5b530bfc9843fa8aa2ff08ff9821032cb")
790 (name "go-github-com-audriusbutkevicius-pfilter")
791 (version (git-version "0.0.0" revision commit))
796 (url "https://github.com/AudriusButkevicius/pfilter.git")
798 (file-name (git-file-name name version))
801 "0i4qbnwba49db27fb1y792gcvhb0m744i9q4zgwjbypqmy3bj2a5"))))
802 (build-system go-build-system)
804 '(#:import-path "github.com/AudriusButkevicius/pfilter"))
805 (synopsis "Filter packets into mulitple virtual connections")
806 (description "Pfilter is a Go package for filtering packets into multiple
807 virtual connections from a single physical connection.")
808 (home-page "https://github.com/AudriusButkevicius/pfilter")
811 (define-public go-github-com-chmduquesne-rollinghash-adler32
812 (let ((commit "abb8cbaf9915e48ee20cae94bcd94221b61707a2")
815 (name "go-github-com-chmduquesne-rollinghash-adler32")
816 (version (git-version "0.0.0" revision commit))
821 (url "https://github.com/chmduquesne/rollinghash.git")
823 (file-name (git-file-name name version))
826 "0ylqb9r60q77qw0d6g9cg4yzadxzwcw74lfd25cw9yglyq0wgd3l"))))
827 (build-system go-build-system)
829 '(#:import-path "github.com/chmduquesne/rollinghash/adler32"
830 #:unpack-path "github.com/chmduquesne/rollinghash"))
831 (synopsis "Adler-32 rolling hash in Go")
832 (description "This package provides a Go implementation of the Adler-32
834 (home-page "https://github.com/chmduquesne/rollinghash")
837 (define-public go-github-com-pkg-errors
838 (let ((commit "e881fd58d78e04cf6d0de1217f8707c8cc2249bc")
841 (name "go-github-com-pkg-errors")
842 (version (git-version "0.0.0" revision commit))
846 (url "https://github.com/pkg/errors.git")
848 (file-name (git-file-name name version))
851 "0vfhj598jp6dzy4pbyjdrqxzb5kppw8ggvfh78g80nz11r34xnzs"))))
852 (build-system go-build-system)
854 `(#:import-path "github.com/pkg/errors"))
855 (synopsis "Go error handling primitives")
856 (description "This packages provides @code{error}, which offers simple
857 error handling primitives in Go.")
858 (home-page "https://github.com/pkg/errors")
861 (define-public go-github-com-petermattis-goid
862 (let ((commit "3db12ebb2a599ba4a96bea1c17b61c2f78a40e02")
865 (name "go-github-com-petermattis-goid")
866 (version (git-version "0.0.0" revision commit))
870 (url "https://github.com/petermattis/goid.git")
872 (file-name (git-file-name name version))
876 "0z18a3mr72c52g7g94n08gxw0ksnaafbfwdl5p5jav2sffirb0kd"))))
877 (build-system go-build-system)
879 '(#:import-path "github.com/petermattis/goid"))
880 (synopsis "Identify the running goroutine")
881 (description "This package offers a method of programatically retrieving
882 the current goroutine's ID.")
883 (home-page "https://github.com/petermattis/goid")
886 (define-public go-github-com-audriusbutkevicius-cli
887 (let ((commit "7f561c78b5a4aad858d9fd550c92b5da6d55efbb")
890 (name "go-github-com-audriusbutkevicius-cli")
891 (version (git-version "0.0.0" revision commit))
895 (url "https://github.com/AudriusButkevicius/cli.git")
897 (file-name (git-file-name name version))
900 "0bg26pfg25vr16jmczig2m493mja2nxjxyswz3hha7avxw20rpi5"))))
901 (build-system go-build-system)
903 '(#:import-path "github.com/AudriusButkevicius/cli"
904 ;; Tests don't pass "vet" on go-1.11. See
905 ;; https://github.com/AudriusButkevicius/cli/pull/1.
907 (modify-phases %standard-phases
909 (lambda* (#:key import-path #:allow-other-keys)
913 (synopsis "Library for building command-line interfaces in Go")
914 (description "This package provides a library for building command-line
916 (home-page "https://github.com/AudriusButkevicius/cli")
919 (define-public go-github-com-kballard-go-shellquote
920 (let ((commit "cd60e84ee657ff3dc51de0b4f55dd299a3e136f2")
923 (name "go-github-com-kballard-go-shellquote")
924 (version (git-version "0.0.0" revision commit))
928 (url "https://github.com/kballard/go-shellquote.git")
930 (file-name (git-file-name name version))
933 "1xjpin4jq1zl84dcn96xhjmn9bsfyszf6g9aqyj2dc0xfi6c88y0"))))
934 (build-system go-build-system)
936 '(#:import-path "github.com/kballard/go-shellquote"))
937 (synopsis "Shell-style string joins and splits")
938 (description "Shellquote provides utilities for joining/splitting strings
939 using sh's word-splitting rules.")
940 (home-page "https://github.com/kballard/go-shellquote")
943 (define-public go-github-com-syncthing-notify
944 (let ((commit "b76b45868a77e7800dd06cce61101af9c4274bcc")
947 (name "go-github-com-syncthing-notify")
948 (version (git-version "0.0.0" revision commit))
952 (url "https://github.com/syncthing/notify")
954 (file-name (git-file-name name version))
957 "1xxkzaxygxxr51i2kdxsdaqb5i95hqpkw4kcr75wmsp914slw2q9"))))
958 (build-system go-build-system)
960 '(#:import-path "github.com/syncthing/notify"))
962 `(("go-golang-org-x-sys-unix" ,go-golang-org-x-sys-unix)))
963 (synopsis "File system event notification library")
964 (description "This package provides @code{notify}, a file system event
965 notification library in Go.")
966 (home-page "https://github.com/syncthing/notify")
969 (define-public go-github-com-beorn7-perks-quantile
970 (let ((commit "4c0e84591b9aa9e6dcfdf3e020114cd81f89d5f9")
973 (name "go-github-com-beorn7-perks-quantile")
974 (version (git-version "0.0.0" revision commit))
978 (url "https://github.com/beorn7/perks.git")
980 (file-name (git-file-name name version))
983 "1hrybsql68xw57brzj805xx2mghydpdiysv3gbhr7f5wlxj2514y"))))
984 (build-system go-build-system)
986 '(#:import-path "github.com/beorn7/perks/quantile"
987 #:unpack-path "github.com/beorn7/perks"))
988 (synopsis "Compute approximate quantiles over an unbounded data stream")
989 (description "Perks contains the Go package @code{quantile} that computes
990 approximate quantiles over an unbounded data stream within low memory and CPU
992 (home-page "https://github.com/beorn7/perks")
995 (define-public go-github-com-golang-protobuf-proto
996 (let ((commit "1e59b77b52bf8e4b449a57e6f79f21226d571845")
999 (name "go-github-com-golang-protobuf-proto")
1000 (version (git-version "0.0.0" revision commit))
1004 (url "https://github.com/golang/protobuf.git")
1006 (file-name (git-file-name name version))
1009 "19bkh81wnp6njg3931wky6hsnnl2d1ig20vfjxpv450sd3k6yys8"))))
1010 (build-system go-build-system)
1012 '(#:import-path "github.com/golang/protobuf/proto"
1013 #:unpack-path "github.com/golang/protobuf"
1014 #:tests? #f ; requires unpackaged golang.org/x/sync/errgroup
1016 (synopsis "Go support for Protocol Buffers")
1017 (description "This package provides Go support for the Protocol Buffers
1018 data serialization format.")
1019 (home-page "https://github.com/golang/protobuf")
1022 (define-public go-github-com-prometheus-client-model-go
1023 (let ((commit "99fa1f4be8e564e8a6b613da7fa6f46c9edafc6c")
1026 (name "go-github-com-prometheus-client-model-go")
1027 (version (git-version "0.0.2" revision commit))
1031 (url "https://github.com/prometheus/client_model.git")
1033 (file-name (git-file-name name version))
1036 "19y4ywsivhpxj7ikf2j0gm9k3cmyw37qcbfi78n526jxcc7kw998"))))
1037 (build-system go-build-system)
1039 '(#:import-path "github.com/prometheus/client_model/go"
1040 #:unpack-path "github.com/prometheus/client_model"))
1042 `(("go-github-com-golang-protobuf-proto"
1043 ,go-github-com-golang-protobuf-proto)))
1044 (synopsis "Data model artifacts for Prometheus")
1045 (description "This package provides data model artifacts for Prometheus.")
1046 (home-page "https://github.com/prometheus/client_model")
1049 (define-public go-github-com-matttproud-golang-protobuf-extensions-pbutil
1050 (let ((commit "c12348ce28de40eed0136aa2b644d0ee0650e56c")
1053 (name "go-github-com-matttproud-golang-protobuf-extensions-pbutil")
1054 (version (git-version "1.0.0" revision commit))
1060 (url "https://github.com/matttproud/golang_protobuf_extensions.git")
1062 (file-name (git-file-name name version))
1065 "1d0c1isd2lk9pnfq2nk0aih356j30k3h1gi2w0ixsivi5csl7jya"))))
1066 (build-system go-build-system)
1068 '(#:import-path "github.com/matttproud/golang_protobuf_extensions/pbutil"
1069 #:unpack-path "github.com/matttproud/golang_protobuf_extensions"))
1071 `(("go-github-com-golang-protobuf-proto"
1072 ,go-github-com-golang-protobuf-proto)))
1073 (synopsis "Streaming Protocol Buffers in Go")
1074 (description "This package provides various Protocol Buffer
1075 extensions for the Go language, namely support for record length-delimited
1076 message streaming.")
1077 (home-page "https://github.com/matttproud/golang_protobuf_extensions")
1080 (define-public go-github-com-prometheus-common-expfmt
1081 (let ((commit "2e54d0b93cba2fd133edc32211dcc32c06ef72ca")
1084 (name "go-github-com-prometheus-common-expfmt")
1085 (version (git-version "0.0.0" revision commit))
1089 (url "https://github.com/prometheus/common.git")
1091 (file-name (git-file-name name version))
1094 "14kn5w7imcxxlfdqxl21fsnlf1ms7200g3ldy29hwamldv8qlm7j"))))
1095 (build-system go-build-system)
1097 '(#:import-path "github.com/prometheus/common/expfmt"
1098 #:unpack-path "github.com/prometheus/common"
1100 (modify-phases %standard-phases
1101 (add-before 'reset-gzip-timestamps 'make-gzip-archive-writable
1102 (lambda* (#:key outputs #:allow-other-keys)
1104 (make-file-writable file))
1106 (string-append (assoc-ref outputs "out")
1107 "/src/github.com/prometheus/common/expfmt/testdata/")
1111 ;; Tests don't pass "vet" on go-1.11. See
1112 ;; https://github.com/syncthing/syncthing/issues/5311.
1113 (lambda* (#:key import-path #:allow-other-keys)
1118 `(("go-github-com-golang-protobuf-proto"
1119 ,go-github-com-golang-protobuf-proto)
1120 ("go-github-com-matttproud-golang-protobuf-extensions-pbutil"
1121 ,go-github-com-matttproud-golang-protobuf-extensions-pbutil)
1122 ("go-github-com-prometheus-client-model-go"
1123 ,go-github-com-prometheus-client-model-go)))
1124 (synopsis "Prometheus metrics")
1125 (description "This package provides tools for reading and writing
1126 Prometheus metrics.")
1127 (home-page "https://github.com/prometheus/common")
1130 (define-public go-github-com-prometheus-procfs
1131 (let ((commit "b15cd069a83443be3154b719d0cc9fe8117f09fb")
1134 (name "go-github-com-prometheus-procfs")
1135 (version (git-version "0.0.0" revision commit))
1139 (url "https://github.com/prometheus/procfs.git")
1141 (file-name (git-file-name name version))
1144 "1cr45wg2m40bj2za8f32mq09rjlcnk5kfam0h0hr8wcb015k4wxj"))))
1145 (build-system go-build-system)
1147 '(#:import-path "github.com/prometheus/procfs"))
1148 (synopsis "Go library for reading @file{/proc}")
1149 (description "The @code{procfs} Go package provides functions to retrieve
1150 system, kernel, and process metrics from the @file{/proc} pseudo file system.")
1151 (home-page "https://github.com/prometheus/procfs")
1154 (define-public go-github-com-client-golang-prometheus-promhttp
1155 (let ((commit "180b8fdc22b4ea7750bcb43c925277654a1ea2f3")
1158 (name "go-github-com-client-golang-prometheus-promhttp")
1159 (version (git-version "0.0.0" revision commit))
1163 (url "https://github.com/prometheus/client_golang.git")
1165 (file-name (git-file-name name version))
1168 "1kkfx1j9ka18ydsmdi2cdy3hs39c22b39mbc4laykmj2x93lmbdp"))))
1169 (build-system go-build-system)
1171 '(#:tests? #f ; The tests require internet access
1172 #:import-path "github.com/prometheus/client_golang/prometheus/promhttp"
1173 #:unpack-path "github.com/prometheus/client_golang"))
1175 `(("go-github-com-beorn7-perks-quantile"
1176 ,go-github-com-beorn7-perks-quantile)
1177 ("go-github-com-golang-protobuf-proto"
1178 ,go-github-com-golang-protobuf-proto)
1179 ("go-github-com-prometheus-client-model-go"
1180 ,go-github-com-prometheus-client-model-go)
1181 ("go-github-com-prometheus-common-expfmt"
1182 ,go-github-com-prometheus-common-expfmt)
1183 ("go-github-com-prometheus-procfs" ,go-github-com-prometheus-procfs)))
1184 (synopsis "HTTP server and client tools for Prometheus")
1185 (description "This package @code{promhttp} provides HTTP client and
1186 server tools for Prometheus metrics.")
1187 (home-page "https://github.com/prometheus/client_golang")
1190 (define-public go-github-com-client-golang-prometheus
1191 (let ((commit "180b8fdc22b4ea7750bcb43c925277654a1ea2f3")
1194 (name "go-github-com-prometheus-client-golang-prometheus")
1195 (version (git-version "0.0.0" revision commit))
1199 (url "https://github.com/prometheus/client_golang.git")
1201 (file-name (git-file-name name version))
1204 "1kkfx1j9ka18ydsmdi2cdy3hs39c22b39mbc4laykmj2x93lmbdp"))))
1205 (build-system go-build-system)
1207 '(#:import-path "github.com/prometheus/client_golang/prometheus"
1208 #:unpack-path "github.com/prometheus/client_golang"))
1210 `(("go-github-com-beorn7-perks-quantile"
1211 ,go-github-com-beorn7-perks-quantile)
1212 ("go-github-com-golang-protobuf-proto"
1213 ,go-github-com-golang-protobuf-proto)
1214 ("go-github-com-prometheus-client-model-go"
1215 ,go-github-com-prometheus-client-model-go)
1216 ("go-github-com-prometheus-common-expfmt"
1217 ,go-github-com-prometheus-common-expfmt)
1218 ("go-github-com-prometheus-procfs" ,go-github-com-prometheus-procfs)
1219 ("go-github-com-client-golang-prometheus-promhttp"
1220 ,go-github-com-client-golang-prometheus-promhttp)))
1221 (synopsis "Prometheus instrumentation library for Go applications")
1222 (description "This package provides the Go client library for the
1223 Prometheus monitoring and alerting system. It has two separate parts, one for
1224 instrumenting application code, and one for creating clients that talk to the
1225 Prometheus HTTP API.")
1226 (home-page "https://github.com/prometheus/client_golang")
1229 (define* (go-github-com-prometheus-union
1230 #:optional (packages (list go-github-com-client-golang-prometheus
1231 go-github-com-client-golang-prometheus-promhttp)))
1233 (name "go-github-com-prometheus-union")
1234 (version (package-version go-github-com-client-golang-prometheus))
1236 (build-system trivial-build-system)
1238 '(#:modules ((guix build union))
1240 (use-modules (ice-9 match)
1242 (match %build-inputs
1243 (((names . directories) ...)
1244 (union-build (assoc-ref %outputs "out")
1247 (inputs (map (lambda (package)
1248 (list (package-name package) package))
1250 (synopsis "Union of Go Prometheus libraries")
1251 (description "This is a union of Go Prometheus libraries")
1252 (home-page (package-home-page go-github-com-client-golang-prometheus))
1253 (license (package-license go-github-com-client-golang-prometheus))))
1255 (define-public go-gopkg.in-asn1-ber.v1
1257 (name "go-gopkg.in-asn1-ber.v1")
1262 (url "https://gopkg.in/asn1-ber.v1")
1263 (commit (string-append "v" version))))
1264 (file-name (git-file-name name version))
1267 "1y8bvzbxpw0lfnn7pbcdwzqj4l90qj6xf88dvv9pxd9yl5g6cskx"))))
1268 (build-system go-build-system)
1270 '(#:import-path "gopkg.in/asn1-ber.v1"))
1271 (synopsis "ASN.1 BER encoding and decoding in Go")
1272 (description "This package provides ASN.1 BER encoding and decoding in the
1274 (home-page "https://gopkg.in/asn1-ber.v1")
1277 (define-public go-gopkg.in-ldap.v2
1279 (name "go-gopkg.in-ldap.v2")
1284 (url "https://gopkg.in/ldap.v2")
1285 (commit (string-append "v" version))))
1286 (file-name (git-file-name name version))
1289 "1wf81wy04nhkqs0dg5zkivr4sh37r83bxrfwjz9vr4jq6vmljr3h"))))
1290 (build-system go-build-system)
1292 '(#:import-path "gopkg.in/ldap.v2"
1293 #:tests? #f)) ; the test suite requires network access
1295 `(("go-gopkg.in-asn1-ber.v1" ,go-gopkg.in-asn1-ber.v1)))
1296 (synopsis "LDAP v3 functionality for Go")
1297 (description "This package provides basic LDAP v3 functionality in the Go
1299 (home-page "https://gopkg.in/ldap.v2")