gnu: ruby-connection-pool: Update to 2.2.2.
[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>
464f5447 4;;; Copyright © 2015, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
ff6dcc1a 5;;; Copyright © 2015, 2017 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>
4a78fd46 8;;; Copyright © 2016, 2017, 2018 Nils Gillmann <ng0@n0.is>
5de4653d 9;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
eb4b2ab6
AE
10;;;
11;;; This file is part of GNU Guix.
12;;;
13;;; GNU Guix is free software; you can redistribute it and/or modify it
14;;; under the terms of the GNU General Public License as published by
15;;; the Free Software Foundation; either version 3 of the License, or (at
16;;; your option) any later version.
17;;;
18;;; GNU Guix is distributed in the hope that it will be useful, but
19;;; WITHOUT ANY WARRANTY; without even the implied warranty of
20;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21;;; GNU General Public License for more details.
22;;;
23;;; You should have received a copy of the GNU General Public License
24;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
25
26(define-module (gnu packages gnunet)
266b39fc 27 #:use-module (gnu packages)
2fd22ec5 28 #:use-module (gnu packages file)
3ccdd430 29 #:use-module (gnu packages aidc)
eb4b2ab6
AE
30 #:use-module (gnu packages autotools)
31 #:use-module (gnu packages compression)
88065ec2 32 #:use-module (gnu packages curl)
1dba6407 33 #:use-module (gnu packages gettext)
eb4b2ab6 34 #:use-module (gnu packages glib)
3ccdd430 35 #:use-module (gnu packages gnome)
88065ec2 36 #:use-module (gnu packages gnupg)
6adda006 37 #:use-module (gnu packages gnuzilla)
a85cb486 38 #:use-module (gnu packages groff)
3ccdd430 39 #:use-module (gnu packages gtk)
59698c2c 40 #:use-module (gnu packages guile)
248c0645 41 #:use-module (gnu packages gstreamer)
a85cb486 42 #:use-module (gnu packages libidn)
6adda006 43 #:use-module (gnu packages linux)
e55354b8 44 #:use-module (gnu packages image)
266b39fc
SHT
45 #:use-module (gnu packages libunistring)
46 #:use-module (gnu packages maths)
6adda006 47 #:use-module (gnu packages multiprecision)
b0a2addd 48 #:use-module (gnu packages music)
6adda006 49 #:use-module (gnu packages ncurses)
b0a2addd 50 #:use-module (gnu packages package-management)
eb4b2ab6 51 #:use-module (gnu packages pkg-config)
a85cb486 52 #:use-module (gnu packages perl)
266b39fc 53 #:use-module (gnu packages pulseaudio)
a85cb486 54 #:use-module (gnu packages python)
5f96f303 55 #:use-module (gnu packages databases)
a7fd7b68 56 #:use-module (gnu packages tls)
248c0645 57 #:use-module (gnu packages video)
6adda006 58 #:use-module (gnu packages web)
54ff0b7d 59 #:use-module (gnu packages xiph)
cd372ca3 60 #:use-module (gnu packages backup)
b5b73a82 61 #:use-module ((guix licenses) #:prefix license:)
eb4b2ab6
AE
62 #:use-module (guix packages)
63 #:use-module (guix download)
59698c2c 64 #:use-module (guix git-download)
eb4b2ab6
AE
65 #:use-module (guix build-system gnu))
66
67(define-public libextractor
68 (package
69 (name "libextractor")
f41bb8d1 70 (version "1.6")
eb4b2ab6
AE
71 (source (origin
72 (method url-fetch)
73 (uri (string-append "mirror://gnu/libextractor/libextractor-"
74 version ".tar.gz"))
75 (sha256
76 (base32
f41bb8d1 77 "17gnpgspdhfgcr27j8sn9105vb4lw22yqdrhic62l79q5v5avm16"))))
eb4b2ab6
AE
78 (build-system gnu-build-system)
79 ;; WARNING: Checks require /dev/shm to be in the build chroot, especially
80 ;; not to be a symbolic link to /run/shm.
81 ;; FIXME:
82 ;; The following dependencies are all optional, but should be
83 ;; available for maximum coverage:
eb4b2ab6 84 ;; * libmagic (file)
b0a2addd 85 ;; * librpm (rpm) ; investigate failure
cd372ca3 86 ;; * libgif (giflib) ; investigate failure
eb4b2ab6 87 (inputs
2e838890 88 `(("exiv2" ,exiv2)
b0a2addd 89 ("bzip2" ,bzip2)
eb4b2ab6 90 ("flac" ,flac)
06079c19 91 ("ffmpeg" ,ffmpeg-3.4)
2fd22ec5 92 ("file" ,file) ;libmagic, for the MIME plug-in
eb4b2ab6 93 ("glib" ,glib)
248c0645
AE
94 ("gstreamer" ,gstreamer)
95 ("gst-plugins-base" ,gst-plugins-base)
cd372ca3 96 ("gtk+" ,gtk+)
97 ("libarchive" ,libarchive)
98 ("libgsf" ,libgsf)
eb4b2ab6 99 ("libjpeg" ,libjpeg)
cd372ca3 100 ("libltdl" ,libltdl)
101 ("libmpeg2" ,libmpeg2)
b0a2addd 102 ("libmp4v2" ,libmp4v2)
103 ("libsmf" ,libsmf)
104 ("tidy-html" ,tidy-html)
eb4b2ab6
AE
105 ("libogg" ,libogg)
106 ("libtiff" ,libtiff)
eb4b2ab6 107 ("libvorbis" ,libvorbis)
eb4b2ab6 108 ("zlib" ,zlib)))
c4c4cc05 109 (native-inputs
cd372ca3 110 `(("pkg-config" ,pkg-config)))
ff711960 111 (outputs '("out"
112 "static")) ; 396 KiB .a files
cd372ca3 113 (arguments
114 `(#:configure-flags
115 (list (string-append "--with-ltdl="
b0a2addd 116 (assoc-ref %build-inputs "libltdl"))
117 (string-append "--with-tidy="
118 (assoc-ref %build-inputs "tidy-html")))
ff711960 119 #:parallel-tests? #f
120 #:phases
121 (modify-phases %standard-phases
122 (add-after 'install 'move-static-libraries
123 (lambda* (#:key outputs #:allow-other-keys)
124 ;; Move static libraries to the "static" output.
125 (let* ((out (assoc-ref outputs "out"))
126 (lib (string-append out "/lib"))
127 (static (assoc-ref outputs "static"))
128 (slib (string-append static "/lib")))
129 (mkdir-p slib)
130 (for-each (lambda (file)
131 (install-file file slib)
132 (delete-file file))
133 (find-files lib "\\.a$"))
134 #t))))))
eb4b2ab6
AE
135 (synopsis "Library to extract meta-data from media files")
136 (description
79c311b8 137 "GNU libextractor is a library for extracting metadata from files. It
a22dc0c4
LC
138supports a very large number of file formats, including audio files, document
139files, and archive files. Each file format is implemented as a plugin, so
79c311b8 140new formats can be added easily. The package also contains a command-line
a22dc0c4 141tool to extract metadata from a file and print the results.")
eb4b2ab6 142 (license license:gpl3+)
6fd52309 143 (home-page "https://www.gnu.org/software/libextractor/")))
88065ec2
AE
144
145(define-public libmicrohttpd
146 (package
147 (name "libmicrohttpd")
5de4653d 148 (version "0.9.59")
88065ec2
AE
149 (source (origin
150 (method url-fetch)
151 (uri (string-append "mirror://gnu/libmicrohttpd/libmicrohttpd-"
152 version ".tar.gz"))
153 (sha256
154 (base32
5de4653d 155 "0g4jgnv43yddr9yxrqg11632rip0lg5c53gmy5wy3c0i1dywv74v"))))
88065ec2
AE
156 (build-system gnu-build-system)
157 (inputs
158 `(("curl" ,curl)
1472f630 159 ("gnutls" ,gnutls/dane)
88065ec2
AE
160 ("libgcrypt" ,libgcrypt)
161 ("openssl" ,openssl)
162 ("zlib" ,zlib)))
dce17227 163 (arguments
e1ecc890
LC
164 `(#:parallel-tests? #f
165 #:phases (modify-phases %standard-phases
166 (add-before 'check 'add-missing-LDFLAGS
167 (lambda _
168 ;; The two test_upgrade* programs depend on GnuTLS
169 ;; directly but lack -lgnutls; add it.
170 (substitute* "src/microhttpd/Makefile"
171 (("^test_upgrade(.*)LDFLAGS = (.*)$" _ first rest)
172 (string-append "test_upgrade" first
173 "LDFLAGS = -lgnutls " rest)))
174 #t)))))
88065ec2
AE
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")
c10679f5 189 (version "7.60.0")
a85cb486
SHT
190 (source (origin
191 (method url-fetch)
c10679f5 192 (uri (string-append "mirror://gnu/gnunet/" name "-" version ".tar.Z"))
a85cb486 193 (sha256
7012e2c7 194 (base32
c10679f5 195 "0klf3h339dznbm903474mjjysrarz09s1wiypnbai3xnfjamha99"))))
a85cb486 196 (build-system gnu-build-system)
50e9f81a 197 (outputs '("out"
198 "doc")) ; 1.5 MiB of man3 pages
fd67e3a2 199 (inputs `(("gnutls" ,gnutls/dane)
a85cb486
SHT
200 ("libidn" ,libidn)
201 ("zlib" ,zlib)))
202 (native-inputs
a35e0033 203 `(("libtool" ,libtool)
a0e43c9f 204 ("groff" ,groff)
7af52bd5
SHT
205 ("perl" ,perl)
206 ("pkg-config" ,pkg-config)
a85cb486
SHT
207 ("python" ,python-2)))
208 (arguments
bb85ce73 209 `(#:configure-flags (list "--disable-ntlm-wb")
c543b4e1 210 #:test-target "test"
211 #:parallel-tests? #f
212 #:phases
213 ;; We have to patch runtests.pl in tests/ directory
b9fe72bf 214 (modify-phases %standard-phases
50e9f81a 215 (add-after 'install 'move-man3-pages
216 (lambda* (#:key outputs #:allow-other-keys)
217 ;; Move section 3 man pages to "doc".
218 (let ((out (assoc-ref outputs "out"))
219 (doc (assoc-ref outputs "doc")))
220 (mkdir-p (string-append doc "/share/man"))
221 (rename-file (string-append out "/share/man/man3")
222 (string-append doc "/share/man/man3"))
223 #t)))
4ec08b63 224 (replace 'check
a0e43c9f 225 (lambda _
b9fe72bf
EF
226 (substitute* "tests/runtests.pl"
227 (("/bin/sh") (which "sh")))
4ec08b63 228
229 ;; Make test output more verbose.
0741c3a4 230 (invoke "make" "-C" "tests" "test"))))))
a85cb486
SHT
231 (synopsis "Microfork of cURL with support for the HTTP/HTTPS/GnuTLS subset of cURL")
232 (description
233 "Gnurl is a microfork of cURL, a command line tool for transferring data
35b9e423 234with URL syntax. While cURL supports many crypto backends, libgnurl only
5f9d5905 235supports HTTP, HTTPS and GnuTLS.")
166191b3
LC
236 (license (license:non-copyleft "file://COPYING"
237 "See COPYING in the distribution."))
a85cb486 238 (home-page "https://gnunet.org/gnurl")))
266b39fc
SHT
239
240(define-public gnunet
241 (package
242 (name "gnunet")
f944fbf1 243 (version "0.10.1")
266b39fc
SHT
244 (source
245 (origin
246 (method url-fetch)
247 (uri (string-append "mirror://gnu/gnunet/gnunet-" version
248 ".tar.gz"))
6adda006 249 (sha256
250 (base32
251 "04wxzm3wkgqbn42b8ksr4cx6m5cckyig5cls1adh0nwdczwvnp7n"))))
266b39fc
SHT
252 (build-system gnu-build-system)
253 (inputs
05e8a0b0
AE
254 `(("glpk" ,glpk)
255 ("gnurl" ,gnurl)
1eb6bbd8
RW
256 ("gstreamer" ,gstreamer)
257 ("gst-plugins-base" ,gst-plugins-base)
6a5f7af6 258 ("gnutls" ,gnutls/dane)
266b39fc
SHT
259 ("libextractor" ,libextractor)
260 ("libgcrypt" ,libgcrypt)
266b39fc 261 ("libidn" ,libidn)
6adda006 262 ("libmicrohttpd" ,libmicrohttpd) ; hostlist, pt, contrib, and more
3246cc91 263 ("libltdl" ,libltdl)
6adda006 264 ("libunistring" ,libunistring) ; fs and more
265 ("openssl" ,openssl) ; transport, certificate creation, contribs
266 ("opus" ,opus) ; gnunet-conversation
267 ("pulseaudio" ,pulseaudio) ; conversation
268 ("sqlite" ,sqlite) ; sqlite bindings, *store
269 ("zlib" ,zlib)
270 ("perl" ,perl) ; doxygen and more
271 ("jansson" ,jansson) ; identity, taler (external), gnunet-json, gns
272 ("nss" ,nss) ; gns
273 ("gmp" ,gmp) ; util
274 ("bluez" ,bluez) ; gnunet-transport
275 ("glib" ,glib)
276 ("libogg" ,libogg) ; gnunet-conversation
277 ("python-2" ,python-2))) ; tests, gnunet-qr
266b39fc 278 (native-inputs
6adda006 279 `(("pkg-config" ,pkg-config)))
266b39fc 280 (arguments
972f4e50
SB
281 '(#:configure-flags
282 (list (string-append "--with-nssdir=" %output "/lib"))
283 #:parallel-tests? #f
f944fbf1
AE
284 ;; test_gnunet_service_arm fails; reported upstream
285 #:tests? #f
286 #:phases
90d8ef6b 287 (modify-phases %standard-phases
05e8a0b0 288 ;; swap check and install phases and set paths to installed binaries
90d8ef6b
EF
289 (add-before 'check 'set-path-for-check
290 (lambda* (#:key outputs #:allow-other-keys)
291 (let ((out (assoc-ref outputs "out")))
292 (setenv "GNUNET_PREFIX" (string-append out "/lib"))
293 (setenv "PATH" (string-append (getenv "PATH") ":" out "/bin")))
294 #t))
295 (add-after 'install 'check
296 (assoc-ref %standard-phases 'check))
297 (delete 'check))))
574e86f9 298 (synopsis "Secure, decentralized, peer-to-peer networking framework")
266b39fc 299 (description
a3947cb1
LC
300 "GNUnet is a framework for secure peer-to-peer networking. The
301high-level goal is to provide a strong foundation of free software for a
302global, distributed network that provides security and privacy. GNUnet in
303that sense aims to replace the current internet protocol stack. Along with
304an application for secure publication of files, it has grown to include all
305kinds of basic applications for the foundation of a GNU internet.")
266b39fc
SHT
306 (license license:gpl3+)
307 (home-page "https://gnunet.org/")))
59698c2c
LC
308
309(define-public guile-gnunet ;GSoC 2015!
698bd297 310 (let ((commit "383eac2aab175d8d9ea5315c2f1c8a5055c76a52"))
59698c2c
LC
311 (package
312 (name "guile-gnunet")
698bd297 313 (version (string-append "0.0." (string-take commit 7)))
59698c2c
LC
314 (source (origin
315 (method git-fetch)
316 (uri (git-reference
5f13bf09 317 (url "https://git.savannah.gnu.org/git/guix/gnunet.git/")
59698c2c 318 (commit commit)))
821f4dc2 319 (file-name (string-append name "-" version "-checkout"))
59698c2c
LC
320 (sha256
321 (base32
322 "0k6mn28isjlxrnvbnblab3nh2xqx1b7san8k98kc35ap9lq0iz8w"))))
323 (build-system gnu-build-system)
324 (arguments
325 '(#:phases (modify-phases %standard-phases
d10092b8 326 (add-after 'unpack 'bootstrap
59698c2c 327 (lambda _
0741c3a4 328 (invoke "autoreconf" "-vfi"))))))
59698c2c 329 (native-inputs `(("pkg-config" ,pkg-config)
464f5447 330 ("autoconf" ,autoconf-wrapper)
59698c2c
LC
331 ("automake" ,automake)))
332 (inputs `(("guile" ,guile-2.0)
333 ("gnunet" ,gnunet)))
334 (synopsis "Guile bindings for GNUnet services")
335 (description
336 "This package provides Guile bindings to the client libraries of various
337GNUnet services, including the @dfn{identity} and @dfn{file sharing}
338services.")
cc04b099 339 (home-page "https://gnu.org/software/guix")
59698c2c 340 (license license:gpl3+))))
3ccdd430 341
342;; FIXME: "gnunet-setup" segfaults under certain conditions and "gnunet-gtk"
343;; does not seem to be fully functional. This has been reported upstream:
344;; http://lists.gnu.org/archive/html/gnunet-developers/2016-02/msg00004.html
345(define-public gnunet-gtk
346 (package (inherit gnunet)
347 (name "gnunet-gtk")
348 (version (package-version gnunet))
349 (source (origin
350 (method url-fetch)
351 (uri (string-append "mirror://gnu/gnunet/gnunet-gtk-"
352 version ".tar.gz"))
353 (sha256
354 (base32
355 "1p38k1s6a2fmcfc9a7cf1zrdycm9h06kqdyand4s3k500nj6mb4g"))))
356 (arguments
357 `(#:configure-flags
d8bc4729 358 (list "--with-libunique"
9b12bc70 359 "--with-qrencode"
360 (string-append "--with-gnunet="
361 (assoc-ref %build-inputs "gnunet")))))
3ccdd430 362 (inputs
363 `(("gnunet" ,gnunet)
364 ("libgcrypt" ,libgcrypt)
365 ("gtk+" ,gtk+)
366 ("libextractor" ,libextractor)
367 ("glade3" ,glade3)
d8bc4729 368 ("qrencode" ,qrencode)
369 ("libunique" ,libunique)))
3ccdd430 370 (native-inputs
371 `(("pkg-config" ,pkg-config)
372 ("libglade" ,libglade)))
373 (synopsis "Graphical front-end tools for GNUnet")))