gnu: gtk+-2: Split binaries.
[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>
aff0cce9 4;;; Copyright © 2015, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
c5c42f0a 5;;; Copyright © 2015, 2017, 2019 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>
a3f2c295 8;;; Copyright © 2016, 2017, 2018, 2019 ng0 <ng0@n0.is>
3fd3dd33 9;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
1983a9b0 10;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
eb4b2ab6
AE
11;;;
12;;; This file is part of GNU Guix.
13;;;
14;;; GNU Guix is free software; you can redistribute it and/or modify it
15;;; under the terms of the GNU General Public License as published by
16;;; the Free Software Foundation; either version 3 of the License, or (at
17;;; your option) any later version.
18;;;
19;;; GNU Guix is distributed in the hope that it will be useful, but
20;;; WITHOUT ANY WARRANTY; without even the implied warranty of
21;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22;;; GNU General Public License for more details.
23;;;
24;;; You should have received a copy of the GNU General Public License
25;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
26
27(define-module (gnu packages gnunet)
266b39fc 28 #:use-module (gnu packages)
2fd22ec5 29 #:use-module (gnu packages file)
3ccdd430 30 #:use-module (gnu packages aidc)
eb4b2ab6
AE
31 #:use-module (gnu packages autotools)
32 #:use-module (gnu packages compression)
88065ec2 33 #:use-module (gnu packages curl)
1dba6407 34 #:use-module (gnu packages gettext)
eb4b2ab6 35 #:use-module (gnu packages glib)
3ccdd430 36 #:use-module (gnu packages gnome)
88065ec2 37 #:use-module (gnu packages gnupg)
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)
aff0cce9 50 #:use-module (gnu packages nss)
b0a2addd 51 #:use-module (gnu packages package-management)
eb4b2ab6 52 #:use-module (gnu packages pkg-config)
a85cb486 53 #:use-module (gnu packages perl)
266b39fc 54 #:use-module (gnu packages pulseaudio)
a85cb486 55 #:use-module (gnu packages python)
cd0322a3 56 #:use-module (gnu packages sqlite)
a7fd7b68 57 #:use-module (gnu packages tls)
edce1993 58 #:use-module (gnu packages upnp)
248c0645 59 #:use-module (gnu packages video)
edce1993 60 #:use-module (gnu packages vim)
6adda006 61 #:use-module (gnu packages web)
54ff0b7d 62 #:use-module (gnu packages xiph)
cd372ca3 63 #:use-module (gnu packages backup)
b5b73a82 64 #:use-module ((guix licenses) #:prefix license:)
eb4b2ab6
AE
65 #:use-module (guix packages)
66 #:use-module (guix download)
59698c2c 67 #:use-module (guix git-download)
eb4b2ab6
AE
68 #:use-module (guix build-system gnu))
69
70(define-public libextractor
71 (package
72 (name "libextractor")
a3f2c295 73 (version "1.9")
eb4b2ab6
AE
74 (source (origin
75 (method url-fetch)
76 (uri (string-append "mirror://gnu/libextractor/libextractor-"
77 version ".tar.gz"))
78 (sha256
79 (base32
2cb81e1e
LC
80 "1zz2zvikvfibxnk1va3kgzs7djsmiqy7bmk8y01vbsf54ryjb3zh"))
81 (patches (search-patches "libextractor-exiv2.patch"))))
eb4b2ab6
AE
82 (build-system gnu-build-system)
83 ;; WARNING: Checks require /dev/shm to be in the build chroot, especially
84 ;; not to be a symbolic link to /run/shm.
85 ;; FIXME:
86 ;; The following dependencies are all optional, but should be
87 ;; available for maximum coverage:
eb4b2ab6 88 ;; * libmagic (file)
b0a2addd 89 ;; * librpm (rpm) ; investigate failure
cd372ca3 90 ;; * libgif (giflib) ; investigate failure
eb4b2ab6 91 (inputs
2e838890 92 `(("exiv2" ,exiv2)
b0a2addd 93 ("bzip2" ,bzip2)
eb4b2ab6 94 ("flac" ,flac)
06079c19 95 ("ffmpeg" ,ffmpeg-3.4)
2fd22ec5 96 ("file" ,file) ;libmagic, for the MIME plug-in
eb4b2ab6 97 ("glib" ,glib)
248c0645
AE
98 ("gstreamer" ,gstreamer)
99 ("gst-plugins-base" ,gst-plugins-base)
cd372ca3 100 ("gtk+" ,gtk+)
101 ("libarchive" ,libarchive)
102 ("libgsf" ,libgsf)
eb4b2ab6 103 ("libjpeg" ,libjpeg)
cd372ca3 104 ("libltdl" ,libltdl)
105 ("libmpeg2" ,libmpeg2)
b0a2addd 106 ("libmp4v2" ,libmp4v2)
107 ("libsmf" ,libsmf)
108 ("tidy-html" ,tidy-html)
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)))
ff711960 115 (outputs '("out"
116 "static")) ; 396 KiB .a files
cd372ca3 117 (arguments
118 `(#:configure-flags
119 (list (string-append "--with-ltdl="
b0a2addd 120 (assoc-ref %build-inputs "libltdl"))
121 (string-append "--with-tidy="
122 (assoc-ref %build-inputs "tidy-html")))
ff711960 123 #:parallel-tests? #f
124 #:phases
125 (modify-phases %standard-phases
126 (add-after 'install 'move-static-libraries
127 (lambda* (#:key outputs #:allow-other-keys)
128 ;; Move static libraries to the "static" output.
129 (let* ((out (assoc-ref outputs "out"))
130 (lib (string-append out "/lib"))
131 (static (assoc-ref outputs "static"))
132 (slib (string-append static "/lib")))
133 (mkdir-p slib)
134 (for-each (lambda (file)
135 (install-file file slib)
136 (delete-file file))
137 (find-files lib "\\.a$"))
138 #t))))))
eb4b2ab6
AE
139 (synopsis "Library to extract meta-data from media files")
140 (description
79c311b8 141 "GNU libextractor is a library for extracting metadata from files. It
a22dc0c4
LC
142supports a very large number of file formats, including audio files, document
143files, and archive files. Each file format is implemented as a plugin, so
79c311b8 144new formats can be added easily. The package also contains a command-line
a22dc0c4 145tool to extract metadata from a file and print the results.")
eb4b2ab6 146 (license license:gpl3+)
6fd52309 147 (home-page "https://www.gnu.org/software/libextractor/")))
88065ec2
AE
148
149(define-public libmicrohttpd
150 (package
151 (name "libmicrohttpd")
8f803775 152 (version "0.9.68")
88065ec2
AE
153 (source (origin
154 (method url-fetch)
155 (uri (string-append "mirror://gnu/libmicrohttpd/libmicrohttpd-"
156 version ".tar.gz"))
157 (sha256
158 (base32
8f803775 159 "0q8bc4hrxn6llml7w2vam6n833x8injs39wgdkhwkawr50m6wwf5"))))
88065ec2
AE
160 (build-system gnu-build-system)
161 (inputs
162 `(("curl" ,curl)
1472f630 163 ("gnutls" ,gnutls/dane)
88065ec2
AE
164 ("libgcrypt" ,libgcrypt)
165 ("openssl" ,openssl)
166 ("zlib" ,zlib)))
167 (synopsis "C library implementing an HTTP 1.1 server")
168 (description
dce17227
AE
169 "GNU libmicrohttpd is a small, embeddable HTTP server implemented as a
170C library. It makes it easy to run an HTTP server as part of another
a22dc0c4 171application. The library is fully HTTP 1.1 compliant. It can listen on
dce17227 172multiple ports, supports four different threading models, and supports
ff6dcc1a
EF
173IPv6. It also features security features such as basic and digest
174authentication and support for SSL3 and TLS.")
88065ec2 175 (license license:lgpl2.1+)
b02b9a52 176 (home-page "https://www.gnu.org/software/libmicrohttpd/")))
a85cb486
SHT
177
178(define-public gnurl
179 (package
180 (name "gnurl")
c5c42f0a 181 (version "7.63.0")
a85cb486
SHT
182 (source (origin
183 (method url-fetch)
c10679f5 184 (uri (string-append "mirror://gnu/gnunet/" name "-" version ".tar.Z"))
a85cb486 185 (sha256
7012e2c7 186 (base32
c5c42f0a 187 "021b3pdfnqywk5q07y48kxyz7g4jjg35dk3cv0ps0x50qjr4ix33"))))
a85cb486 188 (build-system gnu-build-system)
50e9f81a 189 (outputs '("out"
c5c42f0a 190 "doc")) ; 1.7 MiB of man3 pages
fd67e3a2 191 (inputs `(("gnutls" ,gnutls/dane)
a85cb486
SHT
192 ("libidn" ,libidn)
193 ("zlib" ,zlib)))
194 (native-inputs
a35e0033 195 `(("libtool" ,libtool)
a0e43c9f 196 ("groff" ,groff)
7af52bd5
SHT
197 ("perl" ,perl)
198 ("pkg-config" ,pkg-config)
a85cb486
SHT
199 ("python" ,python-2)))
200 (arguments
bb85ce73 201 `(#:configure-flags (list "--disable-ntlm-wb")
c543b4e1 202 #:test-target "test"
203 #:parallel-tests? #f
204 #:phases
205 ;; We have to patch runtests.pl in tests/ directory
b9fe72bf 206 (modify-phases %standard-phases
50e9f81a 207 (add-after 'install 'move-man3-pages
208 (lambda* (#:key outputs #:allow-other-keys)
209 ;; Move section 3 man pages to "doc".
210 (let ((out (assoc-ref outputs "out"))
211 (doc (assoc-ref outputs "doc")))
212 (mkdir-p (string-append doc "/share/man"))
213 (rename-file (string-append out "/share/man/man3")
214 (string-append doc "/share/man/man3"))
215 #t)))
4ec08b63 216 (replace 'check
a0e43c9f 217 (lambda _
b9fe72bf
EF
218 (substitute* "tests/runtests.pl"
219 (("/bin/sh") (which "sh")))
4ec08b63 220
221 ;; Make test output more verbose.
0741c3a4 222 (invoke "make" "-C" "tests" "test"))))))
a85cb486
SHT
223 (synopsis "Microfork of cURL with support for the HTTP/HTTPS/GnuTLS subset of cURL")
224 (description
225 "Gnurl is a microfork of cURL, a command line tool for transferring data
35b9e423 226with URL syntax. While cURL supports many crypto backends, libgnurl only
5f9d5905 227supports HTTP, HTTPS and GnuTLS.")
166191b3
LC
228 (license (license:non-copyleft "file://COPYING"
229 "See COPYING in the distribution."))
5f2122fb
EF
230 (properties '((ftp-server . "ftp.gnu.org")
231 (ftp-directory . "/gnunet")))
a85cb486 232 (home-page "https://gnunet.org/gnurl")))
266b39fc
SHT
233
234(define-public gnunet
235 (package
236 (name "gnunet")
edce1993 237 (version "0.11.8")
266b39fc
SHT
238 (source
239 (origin
240 (method url-fetch)
241 (uri (string-append "mirror://gnu/gnunet/gnunet-" version
242 ".tar.gz"))
6adda006 243 (sha256
244 (base32
edce1993 245 "1zkmcq75sfr3iyg8rgxp9dbl7fwsvc1a71rc0vgisghcbrx1n7yj"))))
266b39fc
SHT
246 (build-system gnu-build-system)
247 (inputs
edce1993
EF
248 `(("bluez" ,bluez)
249 ("glpk" ,glpk)
05e8a0b0 250 ("gnurl" ,gnurl)
6a5f7af6 251 ("gnutls" ,gnutls/dane)
edce1993
EF
252 ("gstreamer" ,gstreamer)
253 ("jansson" ,jansson)
266b39fc 254 ("libextractor" ,libextractor)
edce1993 255 ("libidn" ,libidn2)
266b39fc 256 ("libgcrypt" ,libgcrypt)
3246cc91 257 ("libltdl" ,libltdl)
edce1993
EF
258 ("libmicrohttpd" ,libmicrohttpd)
259 ("libogg" ,libogg)
260 ("libunistring" ,libunistring)
261 ("miniupnpc" ,miniupnpc)
262 ("opus" ,opus)
263 ("pulseaudio" ,pulseaudio)
264 ("sqlite" ,sqlite)
265 ("zbar" ,zbar)
266 ("zlib" ,zlib)))
266b39fc 267 (native-inputs
edce1993
EF
268 `(("pkg-config" ,pkg-config)
269 ("python" ,python)
270 ("xxd" ,xxd)
271 ("which" ,(@ (gnu packages base) which))))
266b39fc 272 (arguments
edce1993 273 '(#:parallel-tests? #f ; Parallel tests aren't supported.
f944fbf1 274 #:phases
90d8ef6b 275 (modify-phases %standard-phases
edce1993
EF
276 (add-after 'configure 'remove-failing-tests
277 ;; These tests fail in Guix's building envrionment.
278 (lambda _
279 (substitute* "src/transport/Makefile"
280 (("test_transport_api_udp_nat\\$\\(EXEEXT\\) \\\\\n") "")
281 (("test_transport_api_manipulation_cfg\\$\\(EXEEXT\\) \\\\\n") ""))
282 (substitute* "src/topology/Makefile"
283 (("^check_PROGRAMS.*") "\n")
284 (("test_gnunet_daemon_topology\\$\\(EXEEXT\\)\n") ""))
285 (substitute* "src/namestore/Makefile"
286 (("\\$\\(am__append_2\\)") ""))
287 (substitute* "src/gns/Makefile"
288 (("\\$\\(am__append_4\\)") ""))
289 (substitute* "contrib/Makefile"
290 (("^check_PROGRAMS.*") "\n"))
291 ;; 'test' from coreutils doesn't behave as the test expects.
292 (substitute* '("src/gns/gnunet-gns-proxy-setup-ca.in"
293 "src/transport/gnunet-transport-certificate-creation.in")
294 (("gnutls-certtool") "certtool"))
295 #t))
296 ;; Swap 'check and 'install phases and add installed binaries to $PATH.
90d8ef6b
EF
297 (add-before 'check 'set-path-for-check
298 (lambda* (#:key outputs #:allow-other-keys)
299 (let ((out (assoc-ref outputs "out")))
300 (setenv "GNUNET_PREFIX" (string-append out "/lib"))
301 (setenv "PATH" (string-append (getenv "PATH") ":" out "/bin")))
302 #t))
edce1993 303 (delete 'check)
90d8ef6b 304 (add-after 'install 'check
edce1993 305 (assoc-ref %standard-phases 'check)))))
574e86f9 306 (synopsis "Secure, decentralized, peer-to-peer networking framework")
266b39fc 307 (description
a3947cb1
LC
308 "GNUnet is a framework for secure peer-to-peer networking. The
309high-level goal is to provide a strong foundation of free software for a
310global, distributed network that provides security and privacy. GNUnet in
311that sense aims to replace the current internet protocol stack. Along with
312an application for secure publication of files, it has grown to include all
313kinds of basic applications for the foundation of a GNU internet.")
266b39fc
SHT
314 (license license:gpl3+)
315 (home-page "https://gnunet.org/")))
59698c2c
LC
316
317(define-public guile-gnunet ;GSoC 2015!
5651e74c
AV
318 (let ((commit "d12167ab3c8d7d6caffd9c606e389ef043760602")
319 (revision "1"))
59698c2c
LC
320 (package
321 (name "guile-gnunet")
5651e74c 322 (version (git-version "0.0" revision commit))
59698c2c
LC
323 (source (origin
324 (method git-fetch)
325 (uri (git-reference
5f13bf09 326 (url "https://git.savannah.gnu.org/git/guix/gnunet.git/")
59698c2c 327 (commit commit)))
5651e74c 328 (file-name (git-file-name name version))
59698c2c
LC
329 (sha256
330 (base32
5651e74c 331 "0nqc18jh9j30y4l6yh6j35byfg6qalq7yr3frv9rk10qa041c2sv"))))
59698c2c 332 (build-system gnu-build-system)
59698c2c 333 (native-inputs `(("pkg-config" ,pkg-config)
464f5447 334 ("autoconf" ,autoconf-wrapper)
59698c2c
LC
335 ("automake" ,automake)))
336 (inputs `(("guile" ,guile-2.0)
337 ("gnunet" ,gnunet)))
338 (synopsis "Guile bindings for GNUnet services")
339 (description
340 "This package provides Guile bindings to the client libraries of various
341GNUnet services, including the @dfn{identity} and @dfn{file sharing}
342services.")
cc04b099 343 (home-page "https://gnu.org/software/guix")
59698c2c 344 (license license:gpl3+))))
3ccdd430 345
346;; FIXME: "gnunet-setup" segfaults under certain conditions and "gnunet-gtk"
347;; does not seem to be fully functional. This has been reported upstream:
348;; http://lists.gnu.org/archive/html/gnunet-developers/2016-02/msg00004.html
349(define-public gnunet-gtk
350 (package (inherit gnunet)
351 (name "gnunet-gtk")
dbdd7707 352 (version "0.11.7")
3ccdd430 353 (source (origin
354 (method url-fetch)
355 (uri (string-append "mirror://gnu/gnunet/gnunet-gtk-"
356 version ".tar.gz"))
357 (sha256
358 (base32
dbdd7707 359 "061ifhqk6q9kx71z5404fm4d60yj2dihlwwmdqmhkn5nn4bvcwb5"))))
3ccdd430 360 (arguments
361 `(#:configure-flags
d8bc4729 362 (list "--with-libunique"
9b12bc70 363 "--with-qrencode"
364 (string-append "--with-gnunet="
365 (assoc-ref %build-inputs "gnunet")))))
3ccdd430 366 (inputs
2f6500fa
EF
367 `(("glade3" ,glade3)
368 ("gnunet" ,gnunet)
dbdd7707 369 ("gnutls" ,gnutls/dane)
3ccdd430 370 ("gtk+" ,gtk+)
371 ("libextractor" ,libextractor)
2f6500fa
EF
372 ("libgcrypt" ,libgcrypt)
373 ("libunique" ,libunique)
374 ("qrencode" ,qrencode)))
3ccdd430 375 (native-inputs
376 `(("pkg-config" ,pkg-config)
377 ("libglade" ,libglade)))
baac9ff9
EF
378 (synopsis "Graphical front-end tools for GNUnet")
379 (properties '((ftp-server . "ftp.gnu.org")
380 (ftp-directory . "/gnunet")))))