gnu: emacs-consult: Fix grammar.
[jackhill/guix/guix.git] / gnu / packages / gnunet.scm
CommitLineData
eb4b2ab6 1;;; GNU Guix --- Functional package management for GNU
8ca73fce 2;;; Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr>
05e8a0b0 3;;; Copyright © 2014 Sree Harsha Totakura <sreeharsha@totakura.in>
9c8893ce 4;;; Copyright © 2015, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
cf7ca6fe 5;;; Copyright © 2015, 2017, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
3ccdd430 6;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
fd7fd3c1 7;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
a3a8b886 8;;; Copyright © 2016, 2017, 2018, 2019, 2020 Nikita <nikita@n0.is>
2392e589 9;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
1983a9b0 10;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
94cc994e 11;;; Copyright © 2019 Brett Gilio <brettg@gnu.org>
aaa7d17d 12;;; Copyright © 2020 Tanguy Le Carrour <tanguy@bioneland.org>
e402ccd0 13;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
eb4b2ab6
AE
14;;;
15;;; This file is part of GNU Guix.
16;;;
17;;; GNU Guix is free software; you can redistribute it and/or modify it
18;;; under the terms of the GNU General Public License as published by
19;;; the Free Software Foundation; either version 3 of the License, or (at
20;;; your option) any later version.
21;;;
22;;; GNU Guix is distributed in the hope that it will be useful, but
23;;; WITHOUT ANY WARRANTY; without even the implied warranty of
24;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25;;; GNU General Public License for more details.
26;;;
27;;; You should have received a copy of the GNU General Public License
28;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
29
30(define-module (gnu packages gnunet)
266b39fc 31 #:use-module (gnu packages)
2fd22ec5 32 #:use-module (gnu packages file)
3ccdd430 33 #:use-module (gnu packages aidc)
eb4b2ab6
AE
34 #:use-module (gnu packages autotools)
35 #:use-module (gnu packages compression)
ada42a42 36 #:use-module (gnu packages crypto)
88065ec2 37 #:use-module (gnu packages curl)
1dba6407 38 #:use-module (gnu packages gettext)
eb4b2ab6 39 #:use-module (gnu packages glib)
3ccdd430 40 #:use-module (gnu packages gnome)
88065ec2 41 #:use-module (gnu packages gnupg)
a85cb486 42 #:use-module (gnu packages groff)
3ccdd430 43 #:use-module (gnu packages gtk)
59698c2c 44 #:use-module (gnu packages guile)
248c0645 45 #:use-module (gnu packages gstreamer)
a85cb486 46 #:use-module (gnu packages libidn)
6adda006 47 #:use-module (gnu packages linux)
e55354b8 48 #:use-module (gnu packages image)
266b39fc
SHT
49 #:use-module (gnu packages libunistring)
50 #:use-module (gnu packages maths)
6adda006 51 #:use-module (gnu packages multiprecision)
b0a2addd 52 #:use-module (gnu packages music)
6adda006 53 #:use-module (gnu packages ncurses)
aff0cce9 54 #:use-module (gnu packages nss)
b0a2addd 55 #:use-module (gnu packages package-management)
eb4b2ab6 56 #:use-module (gnu packages pkg-config)
a85cb486 57 #:use-module (gnu packages perl)
266b39fc 58 #:use-module (gnu packages pulseaudio)
a85cb486 59 #:use-module (gnu packages python)
cd0322a3 60 #:use-module (gnu packages sqlite)
a7fd7b68 61 #:use-module (gnu packages tls)
edce1993 62 #:use-module (gnu packages upnp)
248c0645 63 #:use-module (gnu packages video)
edce1993 64 #:use-module (gnu packages vim)
6adda006 65 #:use-module (gnu packages web)
54ff0b7d 66 #:use-module (gnu packages xiph)
cd372ca3 67 #:use-module (gnu packages backup)
b5b73a82 68 #:use-module ((guix licenses) #:prefix license:)
eb4b2ab6
AE
69 #:use-module (guix packages)
70 #:use-module (guix download)
59698c2c 71 #:use-module (guix git-download)
eb4b2ab6
AE
72 #:use-module (guix build-system gnu))
73
74(define-public libextractor
75 (package
76 (name "libextractor")
e402ccd0 77 (version "1.10")
eb4b2ab6
AE
78 (source (origin
79 (method url-fetch)
80 (uri (string-append "mirror://gnu/libextractor/libextractor-"
81 version ".tar.gz"))
82 (sha256
83 (base32
e402ccd0 84 "0mr38g7kfn3p050hd3hckbcz2yd3za6dwl1c26x2kjf7vnsi3vcy"))))
eb4b2ab6
AE
85 (build-system gnu-build-system)
86 ;; WARNING: Checks require /dev/shm to be in the build chroot, especially
87 ;; not to be a symbolic link to /run/shm.
88 ;; FIXME:
89 ;; The following dependencies are all optional, but should be
90 ;; available for maximum coverage:
b0a2addd 91 ;; * librpm (rpm) ; investigate failure
e402ccd0 92 ;; * libtidy-html (tidy-html) ; investigate failure
eb4b2ab6 93 (inputs
2e838890 94 `(("exiv2" ,exiv2)
b0a2addd 95 ("bzip2" ,bzip2)
eb4b2ab6 96 ("flac" ,flac)
c44ba525 97 ("ffmpeg" ,ffmpeg)
2fd22ec5 98 ("file" ,file) ;libmagic, for the MIME plug-in
eb4b2ab6 99 ("glib" ,glib)
e402ccd0 100 ("giflib" ,giflib)
248c0645
AE
101 ("gstreamer" ,gstreamer)
102 ("gst-plugins-base" ,gst-plugins-base)
cd372ca3 103 ("gtk+" ,gtk+)
104 ("libarchive" ,libarchive)
105 ("libgsf" ,libgsf)
4bd428a7 106 ("libjpeg" ,libjpeg-turbo)
cd372ca3 107 ("libltdl" ,libltdl)
108 ("libmpeg2" ,libmpeg2)
b0a2addd 109 ("libmp4v2" ,libmp4v2)
110 ("libsmf" ,libsmf)
eb4b2ab6
AE
111 ("libogg" ,libogg)
112 ("libtiff" ,libtiff)
eb4b2ab6 113 ("libvorbis" ,libvorbis)
eb4b2ab6 114 ("zlib" ,zlib)))
c4c4cc05 115 (native-inputs
cd372ca3 116 `(("pkg-config" ,pkg-config)))
ff711960 117 (outputs '("out"
118 "static")) ; 396 KiB .a files
cd372ca3 119 (arguments
120 `(#:configure-flags
121 (list (string-append "--with-ltdl="
e402ccd0 122 (assoc-ref %build-inputs "libltdl")))
ff711960 123 #:parallel-tests? #f
124 #:phases
125 (modify-phases %standard-phases
e402ccd0
MR
126 (add-after 'configure 'fix-exiv2-tests
127 ;; exiv2>=0.27.3 rounds geolocation
128 ;; https://github.com/Exiv2/exiv2/pull/1107/commits/db1be4ae8e1077949fcb6a960e93069d6a41b395#diff-f3f55183ccbe956c720c86e61f708d9f
129 (lambda _
130 (substitute* "src/plugins/test_exiv2.c"
131 (("17.585\\\\\" ") "18\\\"")
132 (("21.713\\\\\" ") "22\\\""))
133 #t))
ff711960 134 (add-after 'install 'move-static-libraries
135 (lambda* (#:key outputs #:allow-other-keys)
136 ;; Move static libraries to the "static" output.
137 (let* ((out (assoc-ref outputs "out"))
138 (lib (string-append out "/lib"))
139 (static (assoc-ref outputs "static"))
140 (slib (string-append static "/lib")))
141 (mkdir-p slib)
142 (for-each (lambda (file)
143 (install-file file slib)
144 (delete-file file))
145 (find-files lib "\\.a$"))
146 #t))))))
eb4b2ab6
AE
147 (synopsis "Library to extract meta-data from media files")
148 (description
79c311b8 149 "GNU libextractor is a library for extracting metadata from files. It
a22dc0c4
LC
150supports a very large number of file formats, including audio files, document
151files, and archive files. Each file format is implemented as a plugin, so
79c311b8 152new formats can be added easily. The package also contains a command-line
a22dc0c4 153tool to extract metadata from a file and print the results.")
eb4b2ab6 154 (license license:gpl3+)
6fd52309 155 (home-page "https://www.gnu.org/software/libextractor/")))
88065ec2
AE
156
157(define-public libmicrohttpd
158 (package
159 (name "libmicrohttpd")
7700f8e9 160 (version "0.9.72")
88065ec2
AE
161 (source (origin
162 (method url-fetch)
163 (uri (string-append "mirror://gnu/libmicrohttpd/libmicrohttpd-"
164 version ".tar.gz"))
165 (sha256
166 (base32
7700f8e9 167 "1y1g9hk608jm4sfdbs8gql5wphalyhfdz824zl0i5x6pw3w2bs0a"))))
88065ec2
AE
168 (build-system gnu-build-system)
169 (inputs
170 `(("curl" ,curl)
1472f630 171 ("gnutls" ,gnutls/dane)
88065ec2
AE
172 ("libgcrypt" ,libgcrypt)
173 ("openssl" ,openssl)
174 ("zlib" ,zlib)))
175 (synopsis "C library implementing an HTTP 1.1 server")
176 (description
dce17227
AE
177 "GNU libmicrohttpd is a small, embeddable HTTP server implemented as a
178C library. It makes it easy to run an HTTP server as part of another
a22dc0c4 179application. The library is fully HTTP 1.1 compliant. It can listen on
dce17227 180multiple ports, supports four different threading models, and supports
ff6dcc1a
EF
181IPv6. It also features security features such as basic and digest
182authentication and support for SSL3 and TLS.")
88065ec2 183 (license license:lgpl2.1+)
b02b9a52 184 (home-page "https://www.gnu.org/software/libmicrohttpd/")))
a85cb486
SHT
185
186(define-public gnurl
187 (package
188 (name "gnurl")
a3a8b886 189 (version "7.70.0")
a85cb486
SHT
190 (source (origin
191 (method url-fetch)
55d45264 192 (uri (string-append "mirror://gnu/gnunet/gnurl-" version ".tar.gz"))
a85cb486 193 (sha256
7012e2c7 194 (base32
a3a8b886 195 "0px9la8v4bj1dzxb95fx3yxk0rcjqjrxpj733ga27cza45wwzkqa"))))
a85cb486 196 (build-system gnu-build-system)
50e9f81a 197 (outputs '("out"
cf7ca6fe 198 "doc")) ; 1.8 MiB of man3 pages
fd67e3a2 199 (inputs `(("gnutls" ,gnutls/dane)
cf7ca6fe 200 ("libidn2" ,libidn2)
a85cb486
SHT
201 ("zlib" ,zlib)))
202 (native-inputs
a35e0033 203 `(("libtool" ,libtool)
7af52bd5
SHT
204 ("perl" ,perl)
205 ("pkg-config" ,pkg-config)
cf7ca6fe 206 ("python" ,python)))
a85cb486 207 (arguments
cf7ca6fe
EF
208 `(#:configure-flags
209 ;; All of these produce errors during configure.
210 (list "--disable-ftp"
211 "--disable-file"
212 "--disable-ldap"
213 "--disable-rtsp"
214 "--disable-dict"
215 "--disable-telnet"
216 "--disable-tftp"
217 "--disable-pop3"
218 "--disable-imap"
219 "--disable-smb"
220 "--disable-smtp"
221 "--disable-gopher"
222 "--without-ssl"
223 "--without-libpsl"
224 "--without-librtmp"
225 "--disable-ntlm-wb")
c543b4e1 226 #:phases
b9fe72bf 227 (modify-phases %standard-phases
50e9f81a 228 (add-after 'install 'move-man3-pages
229 (lambda* (#:key outputs #:allow-other-keys)
230 ;; Move section 3 man pages to "doc".
231 (let ((out (assoc-ref outputs "out"))
232 (doc (assoc-ref outputs "doc")))
233 (mkdir-p (string-append doc "/share/man"))
234 (rename-file (string-append out "/share/man/man3")
235 (string-append doc "/share/man/man3"))
236 #t)))
cf7ca6fe 237 ;; We have to patch runtests.pl in tests/ directory
4ec08b63 238 (replace 'check
a0e43c9f 239 (lambda _
b9fe72bf
EF
240 (substitute* "tests/runtests.pl"
241 (("/bin/sh") (which "sh")))
4ec08b63 242
243 ;; Make test output more verbose.
0741c3a4 244 (invoke "make" "-C" "tests" "test"))))))
a85cb486
SHT
245 (synopsis "Microfork of cURL with support for the HTTP/HTTPS/GnuTLS subset of cURL")
246 (description
247 "Gnurl is a microfork of cURL, a command line tool for transferring data
35b9e423 248with URL syntax. While cURL supports many crypto backends, libgnurl only
5f9d5905 249supports HTTP, HTTPS and GnuTLS.")
166191b3
LC
250 (license (license:non-copyleft "file://COPYING"
251 "See COPYING in the distribution."))
5f2122fb
EF
252 (properties '((ftp-server . "ftp.gnu.org")
253 (ftp-directory . "/gnunet")))
9c8893ce 254 (home-page "https://gnunet.org/en/gnurl.html")))
266b39fc
SHT
255
256(define-public gnunet
257 (package
258 (name "gnunet")
bea2134f 259 (version "0.13.1")
266b39fc
SHT
260 (source
261 (origin
262 (method url-fetch)
263 (uri (string-append "mirror://gnu/gnunet/gnunet-" version
264 ".tar.gz"))
6adda006 265 (sha256
266 (base32
bea2134f 267 "15jnca5zxng7r6m3qzq9lr73xxq0v6mvcp0lny3zrlkz5s2nmmq3"))))
266b39fc
SHT
268 (build-system gnu-build-system)
269 (inputs
edce1993
EF
270 `(("bluez" ,bluez)
271 ("glpk" ,glpk)
05e8a0b0 272 ("gnurl" ,gnurl)
6a5f7af6 273 ("gnutls" ,gnutls/dane)
edce1993
EF
274 ("gstreamer" ,gstreamer)
275 ("jansson" ,jansson)
266b39fc 276 ("libextractor" ,libextractor)
edce1993 277 ("libidn" ,libidn2)
266b39fc 278 ("libgcrypt" ,libgcrypt)
c4d769d3 279 ("libjpeg" ,libjpeg-turbo)
3246cc91 280 ("libltdl" ,libltdl)
edce1993
EF
281 ("libmicrohttpd" ,libmicrohttpd)
282 ("libogg" ,libogg)
ada42a42 283 ("libsodium" ,libsodium)
edce1993
EF
284 ("libunistring" ,libunistring)
285 ("miniupnpc" ,miniupnpc)
286 ("opus" ,opus)
287 ("pulseaudio" ,pulseaudio)
288 ("sqlite" ,sqlite)
289 ("zbar" ,zbar)
290 ("zlib" ,zlib)))
266b39fc 291 (native-inputs
ada42a42
TLC
292 `(("curl" ,curl)
293 ("pkg-config" ,pkg-config)
edce1993
EF
294 ("python" ,python)
295 ("xxd" ,xxd)
296 ("which" ,(@ (gnu packages base) which))))
266b39fc 297 (arguments
edce1993 298 '(#:parallel-tests? #f ; Parallel tests aren't supported.
f944fbf1 299 #:phases
90d8ef6b 300 (modify-phases %standard-phases
edce1993 301 (add-after 'configure 'remove-failing-tests
aaa7d17d 302 ;; These tests fail in Guix's building environment.
edce1993
EF
303 (lambda _
304 (substitute* "src/transport/Makefile"
aaa7d17d
TLC
305 (("\\$\\(am__EXEEXT_15\\)") "") ; test_transport_api_https
306 (("test_transport_api_manipulation_cfg\\$\\(EXEEXT\\) \\\\\n") "")
edce1993 307 (("test_transport_api_udp_nat\\$\\(EXEEXT\\) \\\\\n") "")
aaa7d17d
TLC
308 (("test_transport_blacklisting_multiple_plugins\\$\\(EXEEXT\\) \\\\\n") ""))
309 (substitute* "src/testbed/Makefile"
310 (("test_testbed_api_2peers_1controller\\$\\(EXEEXT\\) \\\\\n") "")
aaa7d17d 311 (("test_testbed_api_statistics\\$\\(EXEEXT\\) \\\\\n") "")
ada42a42
TLC
312 (("test_testbed_api_test\\$\\(EXEEXT\\) \\\\\n") "")
313 (("test_testbed_api_test_timeout\\$\\(EXEEXT\\) \\\\\n") "")
aaa7d17d
TLC
314 (("test_testbed_api_topology\\$\\(EXEEXT\\) \\\\\n") "")
315 (("test_testbed_api_topology_clique\\$\\(EXEEXT\\) \\\\\n") ""))
edce1993
EF
316 (substitute* "src/topology/Makefile"
317 (("^check_PROGRAMS.*") "\n")
318 (("test_gnunet_daemon_topology\\$\\(EXEEXT\\)\n") ""))
319 (substitute* "src/namestore/Makefile"
320 (("\\$\\(am__append_2\\)") ""))
321 (substitute* "src/gns/Makefile"
322 (("\\$\\(am__append_4\\)") ""))
323 (substitute* "contrib/Makefile"
324 (("^check_PROGRAMS.*") "\n"))
325 ;; 'test' from coreutils doesn't behave as the test expects.
326 (substitute* '("src/gns/gnunet-gns-proxy-setup-ca.in"
327 "src/transport/gnunet-transport-certificate-creation.in")
328 (("gnutls-certtool") "certtool"))
329 #t))
aaa7d17d
TLC
330 (add-before 'check 'set-env-var-for-tests
331 (lambda _
332 (setenv "LANG" "en_US.UTF-8")))
edce1993 333 ;; Swap 'check and 'install phases and add installed binaries to $PATH.
90d8ef6b
EF
334 (add-before 'check 'set-path-for-check
335 (lambda* (#:key outputs #:allow-other-keys)
336 (let ((out (assoc-ref outputs "out")))
337 (setenv "GNUNET_PREFIX" (string-append out "/lib"))
338 (setenv "PATH" (string-append (getenv "PATH") ":" out "/bin")))
339 #t))
edce1993 340 (delete 'check)
90d8ef6b 341 (add-after 'install 'check
edce1993 342 (assoc-ref %standard-phases 'check)))))
574e86f9 343 (synopsis "Secure, decentralized, peer-to-peer networking framework")
266b39fc 344 (description
a3947cb1
LC
345 "GNUnet is a framework for secure peer-to-peer networking. The
346high-level goal is to provide a strong foundation of free software for a
347global, distributed network that provides security and privacy. GNUnet in
348that sense aims to replace the current internet protocol stack. Along with
349an application for secure publication of files, it has grown to include all
350kinds of basic applications for the foundation of a GNU internet.")
94cc994e 351 (license license:agpl3+)
266b39fc 352 (home-page "https://gnunet.org/")))
59698c2c
LC
353
354(define-public guile-gnunet ;GSoC 2015!
5651e74c
AV
355 (let ((commit "d12167ab3c8d7d6caffd9c606e389ef043760602")
356 (revision "1"))
59698c2c
LC
357 (package
358 (name "guile-gnunet")
5651e74c 359 (version (git-version "0.0" revision commit))
59698c2c
LC
360 (source (origin
361 (method git-fetch)
362 (uri (git-reference
5f13bf09 363 (url "https://git.savannah.gnu.org/git/guix/gnunet.git/")
59698c2c 364 (commit commit)))
5651e74c 365 (file-name (git-file-name name version))
59698c2c
LC
366 (sha256
367 (base32
5651e74c 368 "0nqc18jh9j30y4l6yh6j35byfg6qalq7yr3frv9rk10qa041c2sv"))))
59698c2c 369 (build-system gnu-build-system)
59698c2c 370 (native-inputs `(("pkg-config" ,pkg-config)
ce10e2b3 371 ("autoconf" ,autoconf)
59698c2c
LC
372 ("automake" ,automake)))
373 (inputs `(("guile" ,guile-2.0)
374 ("gnunet" ,gnunet)))
375 (synopsis "Guile bindings for GNUnet services")
376 (description
377 "This package provides Guile bindings to the client libraries of various
378GNUnet services, including the @dfn{identity} and @dfn{file sharing}
379services.")
cc04b099 380 (home-page "https://gnu.org/software/guix")
59698c2c 381 (license license:gpl3+))))
3ccdd430 382
383;; FIXME: "gnunet-setup" segfaults under certain conditions and "gnunet-gtk"
384;; does not seem to be fully functional. This has been reported upstream:
385;; http://lists.gnu.org/archive/html/gnunet-developers/2016-02/msg00004.html
386(define-public gnunet-gtk
387 (package (inherit gnunet)
388 (name "gnunet-gtk")
5e707f12 389 (version "0.13.1")
3ccdd430 390 (source (origin
391 (method url-fetch)
392 (uri (string-append "mirror://gnu/gnunet/gnunet-gtk-"
393 version ".tar.gz"))
394 (sha256
395 (base32
5e707f12 396 "1zdzgq16h77w6ybwg3lqjsjr965np6iqvncqvkbj07glqd4wss0j"))))
3ccdd430 397 (arguments
398 `(#:configure-flags
d8bc4729 399 (list "--with-libunique"
9b12bc70 400 "--with-qrencode"
401 (string-append "--with-gnunet="
402 (assoc-ref %build-inputs "gnunet")))))
3ccdd430 403 (inputs
2f6500fa
EF
404 `(("glade3" ,glade3)
405 ("gnunet" ,gnunet)
dbdd7707 406 ("gnutls" ,gnutls/dane)
3ccdd430 407 ("gtk+" ,gtk+)
408 ("libextractor" ,libextractor)
2f6500fa
EF
409 ("libgcrypt" ,libgcrypt)
410 ("libunique" ,libunique)
411 ("qrencode" ,qrencode)))
3ccdd430 412 (native-inputs
413 `(("pkg-config" ,pkg-config)
414 ("libglade" ,libglade)))
baac9ff9
EF
415 (synopsis "Graphical front-end tools for GNUnet")
416 (properties '((ftp-server . "ftp.gnu.org")
417 (ftp-directory . "/gnunet")))))