gnu: rust-percent-encoding-2: Update to 2.2.0.
[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>
3c9856c7 5;;; Copyright © 2015, 2017, 2019, 2020, 2021 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>
90091899 9;;; Copyright © 2016–2020, 2022 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>
26da81af 14;;; Copyright © 2022 Maxime Devos <maximedevos@telenet.be>
eb4b2ab6
AE
15;;;
16;;; This file is part of GNU Guix.
17;;;
18;;; GNU Guix is free software; you can redistribute it and/or modify it
19;;; under the terms of the GNU General Public License as published by
20;;; the Free Software Foundation; either version 3 of the License, or (at
21;;; your option) any later version.
22;;;
23;;; GNU Guix is distributed in the hope that it will be useful, but
24;;; WITHOUT ANY WARRANTY; without even the implied warranty of
25;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26;;; GNU General Public License for more details.
27;;;
28;;; You should have received a copy of the GNU General Public License
29;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
30
31(define-module (gnu packages gnunet)
266b39fc 32 #:use-module (gnu packages)
2fd22ec5 33 #:use-module (gnu packages file)
3ccdd430 34 #:use-module (gnu packages aidc)
eb4b2ab6 35 #:use-module (gnu packages autotools)
85aa25cd 36 #:use-module (gnu packages check)
eb4b2ab6 37 #:use-module (gnu packages compression)
ada42a42 38 #:use-module (gnu packages crypto)
88065ec2 39 #:use-module (gnu packages curl)
1dba6407 40 #:use-module (gnu packages gettext)
eb4b2ab6 41 #:use-module (gnu packages glib)
3ccdd430 42 #:use-module (gnu packages gnome)
88065ec2 43 #:use-module (gnu packages gnupg)
a85cb486 44 #:use-module (gnu packages groff)
3ccdd430 45 #:use-module (gnu packages gtk)
59698c2c 46 #:use-module (gnu packages guile)
26da81af 47 #:use-module (gnu packages guile-xyz)
248c0645 48 #:use-module (gnu packages gstreamer)
a85cb486 49 #:use-module (gnu packages libidn)
6adda006 50 #:use-module (gnu packages linux)
e55354b8 51 #:use-module (gnu packages image)
266b39fc
SHT
52 #:use-module (gnu packages libunistring)
53 #:use-module (gnu packages maths)
6adda006 54 #:use-module (gnu packages multiprecision)
b0a2addd 55 #:use-module (gnu packages music)
6adda006 56 #:use-module (gnu packages ncurses)
aff0cce9 57 #:use-module (gnu packages nss)
b0a2addd 58 #:use-module (gnu packages package-management)
eb4b2ab6 59 #:use-module (gnu packages pkg-config)
a85cb486 60 #:use-module (gnu packages perl)
266b39fc 61 #:use-module (gnu packages pulseaudio)
a85cb486 62 #:use-module (gnu packages python)
cd0322a3 63 #:use-module (gnu packages sqlite)
26da81af 64 #:use-module (gnu packages text-editors)
a7fd7b68 65 #:use-module (gnu packages tls)
edce1993 66 #:use-module (gnu packages upnp)
248c0645 67 #:use-module (gnu packages video)
edce1993 68 #:use-module (gnu packages vim)
26da81af 69 #:use-module (gnu packages xorg)
6adda006 70 #:use-module (gnu packages web)
54ff0b7d 71 #:use-module (gnu packages xiph)
cd372ca3 72 #:use-module (gnu packages backup)
90091899 73 #:use-module (guix gexp)
b5b73a82 74 #:use-module ((guix licenses) #:prefix license:)
eb4b2ab6
AE
75 #:use-module (guix packages)
76 #:use-module (guix download)
59698c2c 77 #:use-module (guix git-download)
eb4b2ab6
AE
78 #:use-module (guix build-system gnu))
79
80(define-public libextractor
81 (package
82 (name "libextractor")
3c9856c7 83 (version "1.11")
eb4b2ab6
AE
84 (source (origin
85 (method url-fetch)
86 (uri (string-append "mirror://gnu/libextractor/libextractor-"
87 version ".tar.gz"))
88 (sha256
89 (base32
3c9856c7 90 "13xxv11mif3m0mpk7i43mljhhaqrj52kznm1qi3qb8s6hymk7xhn"))))
eb4b2ab6
AE
91 (build-system gnu-build-system)
92 ;; WARNING: Checks require /dev/shm to be in the build chroot, especially
93 ;; not to be a symbolic link to /run/shm.
94 ;; FIXME:
95 ;; The following dependencies are all optional, but should be
96 ;; available for maximum coverage:
b0a2addd 97 ;; * librpm (rpm) ; investigate failure
e402ccd0 98 ;; * libtidy-html (tidy-html) ; investigate failure
eb4b2ab6 99 (inputs
2e838890 100 `(("exiv2" ,exiv2)
b0a2addd 101 ("bzip2" ,bzip2)
eb4b2ab6 102 ("flac" ,flac)
c44ba525 103 ("ffmpeg" ,ffmpeg)
2fd22ec5 104 ("file" ,file) ;libmagic, for the MIME plug-in
eb4b2ab6 105 ("glib" ,glib)
e402ccd0 106 ("giflib" ,giflib)
248c0645
AE
107 ("gstreamer" ,gstreamer)
108 ("gst-plugins-base" ,gst-plugins-base)
cd372ca3 109 ("gtk+" ,gtk+)
110 ("libarchive" ,libarchive)
111 ("libgsf" ,libgsf)
4bd428a7 112 ("libjpeg" ,libjpeg-turbo)
cd372ca3 113 ("libltdl" ,libltdl)
114 ("libmpeg2" ,libmpeg2)
b0a2addd 115 ("libmp4v2" ,libmp4v2)
116 ("libsmf" ,libsmf)
eb4b2ab6
AE
117 ("libogg" ,libogg)
118 ("libtiff" ,libtiff)
eb4b2ab6 119 ("libvorbis" ,libvorbis)
eb4b2ab6 120 ("zlib" ,zlib)))
c4c4cc05 121 (native-inputs
8394619b 122 (list pkg-config))
ff711960 123 (outputs '("out"
3c9856c7 124 "static")) ; 420 KiB .a files
cd372ca3 125 (arguments
126 `(#:configure-flags
127 (list (string-append "--with-ltdl="
e402ccd0 128 (assoc-ref %build-inputs "libltdl")))
ff711960 129 #:parallel-tests? #f
130 #:phases
131 (modify-phases %standard-phases
e402ccd0
MR
132 (add-after 'configure 'fix-exiv2-tests
133 ;; exiv2>=0.27.3 rounds geolocation
134 ;; https://github.com/Exiv2/exiv2/pull/1107/commits/db1be4ae8e1077949fcb6a960e93069d6a41b395#diff-f3f55183ccbe956c720c86e61f708d9f
135 (lambda _
136 (substitute* "src/plugins/test_exiv2.c"
137 (("17.585\\\\\" ") "18\\\"")
138 (("21.713\\\\\" ") "22\\\""))
139 #t))
ff711960 140 (add-after 'install 'move-static-libraries
141 (lambda* (#:key outputs #:allow-other-keys)
142 ;; Move static libraries to the "static" output.
143 (let* ((out (assoc-ref outputs "out"))
144 (lib (string-append out "/lib"))
145 (static (assoc-ref outputs "static"))
146 (slib (string-append static "/lib")))
147 (mkdir-p slib)
148 (for-each (lambda (file)
149 (install-file file slib)
150 (delete-file file))
151 (find-files lib "\\.a$"))
152 #t))))))
eb4b2ab6
AE
153 (synopsis "Library to extract meta-data from media files")
154 (description
79c311b8 155 "GNU libextractor is a library for extracting metadata from files. It
a22dc0c4
LC
156supports a very large number of file formats, including audio files, document
157files, and archive files. Each file format is implemented as a plugin, so
79c311b8 158new formats can be added easily. The package also contains a command-line
a22dc0c4 159tool to extract metadata from a file and print the results.")
eb4b2ab6 160 (license license:gpl3+)
6fd52309 161 (home-page "https://www.gnu.org/software/libextractor/")))
88065ec2
AE
162
163(define-public libmicrohttpd
164 (package
165 (name "libmicrohttpd")
a08c21f2 166 (version "0.9.75")
88065ec2
AE
167 (source (origin
168 (method url-fetch)
169 (uri (string-append "mirror://gnu/libmicrohttpd/libmicrohttpd-"
170 version ".tar.gz"))
171 (sha256
172 (base32
a08c21f2 173 "1fz3ljqfvfyfb5inzihy66bys22id9jgsi4nmcd3j6spdxx90y4j"))))
88065ec2 174 (build-system gnu-build-system)
90091899
TGR
175 (arguments
176 (list #:configure-flags
177 #~(list "--disable-static")))
88065ec2 178 (inputs
e3196755 179 (list curl gnutls/dane libgcrypt openssl zlib))
88065ec2
AE
180 (synopsis "C library implementing an HTTP 1.1 server")
181 (description
dce17227
AE
182 "GNU libmicrohttpd is a small, embeddable HTTP server implemented as a
183C library. It makes it easy to run an HTTP server as part of another
a22dc0c4 184application. The library is fully HTTP 1.1 compliant. It can listen on
dce17227 185multiple ports, supports four different threading models, and supports
ff6dcc1a
EF
186IPv6. It also features security features such as basic and digest
187authentication and support for SSL3 and TLS.")
88065ec2 188 (license license:lgpl2.1+)
b02b9a52 189 (home-page "https://www.gnu.org/software/libmicrohttpd/")))
a85cb486
SHT
190
191(define-public gnurl
192 (package
193 (name "gnurl")
a3a8b886 194 (version "7.70.0")
a85cb486
SHT
195 (source (origin
196 (method url-fetch)
55d45264 197 (uri (string-append "mirror://gnu/gnunet/gnurl-" version ".tar.gz"))
a85cb486 198 (sha256
7012e2c7 199 (base32
a3a8b886 200 "0px9la8v4bj1dzxb95fx3yxk0rcjqjrxpj733ga27cza45wwzkqa"))))
a85cb486 201 (build-system gnu-build-system)
50e9f81a 202 (outputs '("out"
cf7ca6fe 203 "doc")) ; 1.8 MiB of man3 pages
fd67e3a2 204 (inputs `(("gnutls" ,gnutls/dane)
cf7ca6fe 205 ("libidn2" ,libidn2)
a85cb486
SHT
206 ("zlib" ,zlib)))
207 (native-inputs
8394619b 208 (list libtool perl pkg-config python))
a85cb486 209 (arguments
cf7ca6fe
EF
210 `(#:configure-flags
211 ;; All of these produce errors during configure.
212 (list "--disable-ftp"
213 "--disable-file"
214 "--disable-ldap"
215 "--disable-rtsp"
216 "--disable-dict"
217 "--disable-telnet"
218 "--disable-tftp"
219 "--disable-pop3"
220 "--disable-imap"
221 "--disable-smb"
222 "--disable-smtp"
223 "--disable-gopher"
224 "--without-ssl"
225 "--without-libpsl"
226 "--without-librtmp"
227 "--disable-ntlm-wb")
c543b4e1 228 #:phases
b9fe72bf 229 (modify-phases %standard-phases
50e9f81a 230 (add-after 'install 'move-man3-pages
231 (lambda* (#:key outputs #:allow-other-keys)
232 ;; Move section 3 man pages to "doc".
233 (let ((out (assoc-ref outputs "out"))
234 (doc (assoc-ref outputs "doc")))
235 (mkdir-p (string-append doc "/share/man"))
236 (rename-file (string-append out "/share/man/man3")
237 (string-append doc "/share/man/man3"))
238 #t)))
cf7ca6fe 239 ;; We have to patch runtests.pl in tests/ directory
4ec08b63 240 (replace 'check
a0e43c9f 241 (lambda _
b9fe72bf
EF
242 (substitute* "tests/runtests.pl"
243 (("/bin/sh") (which "sh")))
4ec08b63 244
245 ;; Make test output more verbose.
0741c3a4 246 (invoke "make" "-C" "tests" "test"))))))
a85cb486
SHT
247 (synopsis "Microfork of cURL with support for the HTTP/HTTPS/GnuTLS subset of cURL")
248 (description
249 "Gnurl is a microfork of cURL, a command line tool for transferring data
35b9e423 250with URL syntax. While cURL supports many crypto backends, libgnurl only
5f9d5905 251supports HTTP, HTTPS and GnuTLS.")
166191b3
LC
252 (license (license:non-copyleft "file://COPYING"
253 "See COPYING in the distribution."))
5f2122fb
EF
254 (properties '((ftp-server . "ftp.gnu.org")
255 (ftp-directory . "/gnunet")))
9c8893ce 256 (home-page "https://gnunet.org/en/gnurl.html")))
266b39fc
SHT
257
258(define-public gnunet
259 (package
260 (name "gnunet")
8f5043bb 261 (version "0.16.3")
266b39fc
SHT
262 (source
263 (origin
264 (method url-fetch)
265 (uri (string-append "mirror://gnu/gnunet/gnunet-" version
266 ".tar.gz"))
6adda006 267 (sha256
268 (base32
8f5043bb 269 "12n33r9nnkl5xwx8pwf571l2zvnvfllc8vm6mamrlyjk2cphaf9j"))))
266b39fc
SHT
270 (build-system gnu-build-system)
271 (inputs
8f5043bb
TLC
272 (list bluez
273 glpk
274 gnurl
275 gnutls/dane
276 gstreamer
277 jansson
278 libextractor
279 libidn2
280 libgcrypt
281 libjpeg-turbo
282 libltdl
283 libmicrohttpd
284 libogg
285 libsodium
286 libunistring
287 miniupnpc
288 opus
289 pulseaudio
290 sqlite
291 zbar
292 zlib))
266b39fc 293 (native-inputs
8f5043bb 294 (list curl openssl pkg-config python xxd
8394619b 295 (@ (gnu packages base) which)))
266b39fc 296 (arguments
edce1993 297 '(#:parallel-tests? #f ; Parallel tests aren't supported.
f944fbf1 298 #:phases
90d8ef6b 299 (modify-phases %standard-phases
aaa7d17d
TLC
300 (add-before 'check 'set-env-var-for-tests
301 (lambda _
302 (setenv "LANG" "en_US.UTF-8")))
edce1993 303 ;; Swap 'check and 'install phases and add installed binaries to $PATH.
90d8ef6b
EF
304 (add-before 'check 'set-path-for-check
305 (lambda* (#:key outputs #:allow-other-keys)
306 (let ((out (assoc-ref outputs "out")))
307 (setenv "GNUNET_PREFIX" (string-append out "/lib"))
308 (setenv "PATH" (string-append (getenv "PATH") ":" out "/bin")))
309 #t))
edce1993 310 (delete 'check)
90d8ef6b 311 (add-after 'install 'check
edce1993 312 (assoc-ref %standard-phases 'check)))))
574e86f9 313 (synopsis "Secure, decentralized, peer-to-peer networking framework")
266b39fc 314 (description
a3947cb1
LC
315 "GNUnet is a framework for secure peer-to-peer networking. The
316high-level goal is to provide a strong foundation of free software for a
317global, distributed network that provides security and privacy. GNUnet in
318that sense aims to replace the current internet protocol stack. Along with
319an application for secure publication of files, it has grown to include all
320kinds of basic applications for the foundation of a GNU internet.")
94cc994e 321 (license license:agpl3+)
8f5043bb 322 (home-page "https://gnunet.org/en/")))
59698c2c
LC
323
324(define-public guile-gnunet ;GSoC 2015!
5651e74c
AV
325 (let ((commit "d12167ab3c8d7d6caffd9c606e389ef043760602")
326 (revision "1"))
59698c2c
LC
327 (package
328 (name "guile-gnunet")
5651e74c 329 (version (git-version "0.0" revision commit))
59698c2c
LC
330 (source (origin
331 (method git-fetch)
332 (uri (git-reference
5f13bf09 333 (url "https://git.savannah.gnu.org/git/guix/gnunet.git/")
59698c2c 334 (commit commit)))
5651e74c 335 (file-name (git-file-name name version))
59698c2c
LC
336 (sha256
337 (base32
5651e74c 338 "0nqc18jh9j30y4l6yh6j35byfg6qalq7yr3frv9rk10qa041c2sv"))))
59698c2c 339 (build-system gnu-build-system)
8394619b
LC
340 (native-inputs (list pkg-config autoconf automake))
341 (inputs (list guile-2.0 gnunet))
59698c2c
LC
342 (synopsis "Guile bindings for GNUnet services")
343 (description
344 "This package provides Guile bindings to the client libraries of various
345GNUnet services, including the @dfn{identity} and @dfn{file sharing}
346services.")
cc04b099 347 (home-page "https://gnu.org/software/guix")
59698c2c 348 (license license:gpl3+))))
3ccdd430 349
26da81af
MD
350(define-public gnunet-scheme
351 (package
352 (name "gnunet-scheme")
77b37fcb 353 (version "0.3")
26da81af
MD
354 (source (origin
355 (method git-fetch)
356 (uri (git-reference
357 (url "https://git.gnunet.org/git/gnunet-scheme.git")
77b37fcb
MD
358 ;; Go three commits beyond the v0.3 tag, as these three
359 ;; commits work-around
360 ;; <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=49623>.
361 (commit "f5dc44e66373c29f1c84ea89d8080939a8dfbfd2")))
26da81af
MD
362 (file-name (git-file-name name version))
363 (sha256
364 (base32
344159b9
MD
365 "0kvqbqijfyp3fhsqjyzwd7b3cm5khwv557wq196mv6rx47aaivgd"))
366 (modules '((guix build utils)))
367 (snippet
368 ;; Unbundle dependencies. TODO: build-aux/test-driver.scm
369 ;; is bundled too, but it's not yet automatically copied by
370 ;; autoreconf -i.
371 #~(delete-file "build-aux/config.rpath"))))
26da81af 372 (build-system gnu-build-system)
85aa25cd
MD
373 (arguments
374 (list #:phases
375 #~(modify-phases %standard-phases
376 ;; For reproducibility, do not insert real timestamps in the PDF.
377 (add-after 'unpack 'reproducible-timestamp
378 (lambda _
379 (substitute* "Makefile.am"
380 (("\\$\\(TEXMACS_CONVERT\\)")
381 "faketime -m -f '1970-01-01 00:00:00' $(TEXMACS_CONVERT)")))))))
26da81af
MD
382 (inputs (list guile-3.0)) ;for pkg-config
383 (propagated-inputs (list guile-bytestructures guile-gcrypt guile-pfds
384 guile-fibers-1.1))
385 (native-inputs (list guile-3.0 ;as a compiler
386 ;; for cross-compilation, the guile inputs need to be
387 ;; native-inputs as well.
388 guile-bytestructures
389 guile-gcrypt
390 guile-pfds
391 guile-fibers-1.1
85aa25cd 392 libfaketime
26da81af
MD
393 automake
394 autoconf
395 pkg-config
396 texmacs
397 xvfb-run ;for documentation
398 guile-quickcheck)) ;for tests
399 (synopsis "Guile implementation of GNUnet client libraries")
400 (description
77b37fcb
MD
401 "This package provides Guile modules for connecting to various
402GNUnet services. It also has infrastructure for writing new GNUnet services and
403connecting to them and can be used from multi-threaded environments. It is not
404to be confused with @code{guile-gnunet} -- @code{guile-gnunet} supports a different
405set of services.
406
407The following services are supported:
408
409@itemize
410@item NSE (network size estimation)
411@item DHT (distributed hash table)
412@item CADET (secure end-to-end communication between arbitrary peers)
413@end itemize")
26da81af
MD
414 ;; Most code is licensed as AGPL and a few modules are licensed as LGPL
415 ;; or GPL. Documentation is licensed as GFDL.
416 (license (list license:agpl3+ license:gpl3+ license:fdl1.3+ license:lgpl3+))
417 (home-page "https://git.gnunet.org/gnunet-scheme.git")))
418
3ccdd430 419;; FIXME: "gnunet-setup" segfaults under certain conditions and "gnunet-gtk"
420;; does not seem to be fully functional. This has been reported upstream:
421;; http://lists.gnu.org/archive/html/gnunet-developers/2016-02/msg00004.html
422(define-public gnunet-gtk
423 (package (inherit gnunet)
424 (name "gnunet-gtk")
5e707f12 425 (version "0.13.1")
3ccdd430 426 (source (origin
427 (method url-fetch)
428 (uri (string-append "mirror://gnu/gnunet/gnunet-gtk-"
429 version ".tar.gz"))
430 (sha256
431 (base32
5e707f12 432 "1zdzgq16h77w6ybwg3lqjsjr965np6iqvncqvkbj07glqd4wss0j"))))
3ccdd430 433 (arguments
434 `(#:configure-flags
d8bc4729 435 (list "--with-libunique"
9b12bc70 436 "--with-qrencode"
437 (string-append "--with-gnunet="
438 (assoc-ref %build-inputs "gnunet")))))
3ccdd430 439 (inputs
2f6500fa
EF
440 `(("glade3" ,glade3)
441 ("gnunet" ,gnunet)
dbdd7707 442 ("gnutls" ,gnutls/dane)
3ccdd430 443 ("gtk+" ,gtk+)
444 ("libextractor" ,libextractor)
2f6500fa
EF
445 ("libgcrypt" ,libgcrypt)
446 ("libunique" ,libunique)
447 ("qrencode" ,qrencode)))
3ccdd430 448 (native-inputs
8394619b 449 (list pkg-config libglade))
baac9ff9
EF
450 (synopsis "Graphical front-end tools for GNUnet")
451 (properties '((ftp-server . "ftp.gnu.org")
452 (ftp-directory . "/gnunet")))))