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