gnu: hidapi: Fix 'license'.
[jackhill/guix/guix.git] / gnu / packages / gnunet.scm
index e50de7c..bcefa42 100644 (file)
@@ -1,7 +1,11 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014 Sree Harsha Totakura <sreeharsha@totakura.in>
 ;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
 (define-module (gnu packages gnunet)
   #:use-module (gnu packages)
   #:use-module (gnu packages file)
+  #:use-module (gnu packages aidc)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages geeqie)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnupg)
-  #:use-module (gnu packages gnutls)
+  #:use-module (gnu packages gnuzilla)
   #:use-module (gnu packages groff)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages guile)
   #:use-module (gnu packages gstreamer)
   #:use-module (gnu packages libidn)
+  #:use-module (gnu packages linux)
   #:use-module (gnu packages image)
   #:use-module (gnu packages libunistring)
   #:use-module (gnu packages maths)
-  #:use-module (gnu packages openssl)
+  #:use-module (gnu packages multiprecision)
+  #:use-module (gnu packages ncurses)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
   #:use-module (gnu packages databases)
+  #:use-module (gnu packages tls)
   #:use-module (gnu packages video)
+  #:use-module (gnu packages web)
   #:use-module (gnu packages xiph)
+  #:use-module (gnu packages backup)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix build-system gnu))
 
 (define-public libextractor
@@ -59,6 +73,7 @@
             (sha256
              (base32
               "0zvv7wd011npcx7yphw9bpgivyxz6mlp87a57n96nv85k96dd2l6"))
+            (patches (search-patches "libextractor-ffmpeg-3.patch"))
             (modules '((guix build utils)))
             (snippet
              ;; Nowadays libmagic (from 'file') returns 'audio/ogg' and not
    ;; FIXME:
    ;; The following dependencies are all optional, but should be
    ;; available for maximum coverage:
-   ;; * libarchive
-   ;; * libgif (giflib)
-   ;; * libgtk+ >= 3.0.0 (may probably drop glib then as a propagated input of
-   ;;                     gtk)
-   ;; * libgsf
    ;; * libmagic (file)
-   ;; * libmpeg2
-   ;; * libmp4v2
-   ;; * librpm
-   ;; * libsmf
-   ;; * libtidy
+   ;; * libmp4v2        ; package it
+   ;; * librpm          ; package it
+   ;; * libsmf          ; package it
+   ;; * libtidy         ; package it
+   ;; * libgif (giflib) ; investigate failure
    (inputs
     `(("exiv2" ,exiv2)
       ("flac" ,flac)
       ("glib" ,glib)
       ("gstreamer" ,gstreamer)
       ("gst-plugins-base" ,gst-plugins-base)
+      ("gtk+" ,gtk+)
+      ("libarchive" ,libarchive)
+      ("libgsf" ,libgsf)
       ("libjpeg" ,libjpeg)
+      ("libltdl" ,libltdl)
+      ("libmpeg2" ,libmpeg2)
       ("libogg" ,libogg)
       ("libtiff" ,libtiff)
-      ("libltdl" ,libltdl)
       ("libvorbis" ,libvorbis)
       ("zlib" ,zlib)))
    (native-inputs
-      `(("pkg-config" ,pkg-config)))
+    `(("pkg-config" ,pkg-config)))
+   (arguments
+    `(#:configure-flags
+      (list (string-append "--with-ltdl="
+                           (assoc-ref %build-inputs "libltdl")))
+      #:parallel-tests? #f))
    (synopsis "Library to extract meta-data from media files")
    (description
     "GNU libextractor is a library for extracting metadata from files.  It
@@ -112,14 +131,14 @@ tool to extract metadata from a file and print the results.")
 (define-public libmicrohttpd
   (package
    (name "libmicrohttpd")
-   (version "0.9.39")
+   (version "0.9.51")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/libmicrohttpd/libmicrohttpd-"
                                 version ".tar.gz"))
             (sha256
              (base32
-              "0wz3sw62z3wsqivrssh0xb3yn064ix5x5cc6prvdfrn3cmh7p4sg"))))
+              "1ir3ga328zkyynznnw71dj64wsaz7pmbhl82lqp1y1hrl85vn01h"))))
    (build-system gnu-build-system)
    (inputs
     `(("curl" ,curl)
@@ -144,13 +163,16 @@ and support for SSL3 and TLS.")
 (define-public gnurl
   (package
    (name "gnurl")
-   (version "7.37.0")
+   (version "7.51.0")
    (source (origin
             (method url-fetch)
-            (uri (string-append "https://gnunet.org/sites/default/files/gnurl-"
-                                version ".tar.gz"))
+            (uri (let ((version-with-underscores
+                        (string-join (string-split version #\.) "_")))
+                   (string-append "https://gnunet.org/sites/default/files/"
+                                  name "-" version-with-underscores ".tar.bz2")))
             (sha256
-             (base32 "1l2q9ih63vkm65zn886kmhqsx906pzx3qjvsxymlmf18kiv18pfd"))))
+             (base32
+              "1rgl4agrzghvyfz1afk1p5ryq4b9cz28lavx8ikrav6aiv9h00ig"))))
    (build-system gnu-build-system)
    (inputs `(("gnutls" ,gnutls)
              ("libidn" ,libidn)
@@ -171,22 +193,22 @@ and support for SSL3 and TLS.")
                           "--disable-ldap" "--disable-rtsp" "--disable-dict"
                           "--disable-telnet" "--disable-tftp" "--disable-pop3"
                           "--disable-imap" "--disable-smtp" "--disable-gopher"
-                          "--disable-file" "--disable-ftp")
-     #:test-target "test"
-     #:parallel-tests? #f
-     ;; We have to patch runtests.pl in tests/ directory
-     #:phases
-      (alist-cons-before
-       'check 'patch-runtests
-       (lambda _
-         (substitute* "tests/runtests.pl"
-                      (("/bin/sh") (which "sh"))))
-       %standard-phases)))
+                          "--disable-file" "--disable-ftp" "--disable-smb")
+      #:test-target "test"
+      #:parallel-tests? #f
+      #:phases
+      ;; We have to patch runtests.pl in tests/ directory
+      (modify-phases %standard-phases
+        (add-before 'check 'patch-runtests
+          (lambda _
+            (substitute* "tests/runtests.pl"
+              (("/bin/sh") (which "sh")))
+            #t)))))
    (synopsis "Microfork of cURL with support for the HTTP/HTTPS/GnuTLS subset of cURL")
    (description
     "Gnurl is a microfork of cURL, a command line tool for transferring data
 with URL syntax.  While cURL supports many crypto backends, libgnurl only
-supports HTTPS, HTTPS and GnuTLS.")
+supports HTTP, HTTPS and GnuTLS.")
    (license (license:non-copyleft "file://COPYING"
                                   "See COPYING in the distribution."))
    (home-page "https://gnunet.org/gnurl")))
@@ -200,54 +222,128 @@ supports HTTPS, HTTPS and GnuTLS.")
       (method url-fetch)
       (uri (string-append "mirror://gnu/gnunet/gnunet-" version
                           ".tar.gz"))
-      (sha256 (base32
-               "04wxzm3wkgqbn42b8ksr4cx6m5cckyig5cls1adh0nwdczwvnp7n"))))
+      (sha256
+       (base32
+        "04wxzm3wkgqbn42b8ksr4cx6m5cckyig5cls1adh0nwdczwvnp7n"))))
    (build-system gnu-build-system)
    (inputs
     `(("glpk" ,glpk)
       ("gnurl" ,gnurl)
+      ("gstreamer" ,gstreamer)
+      ("gst-plugins-base" ,gst-plugins-base)
       ("gnutls" ,gnutls)
       ("libextractor" ,libextractor)
       ("libgcrypt" ,libgcrypt)
       ("libidn" ,libidn)
-      ("libmicrohttpd" ,libmicrohttpd)
+      ("libmicrohttpd" ,libmicrohttpd) ; hostlist, pt, contrib, and more
       ("libltdl" ,libltdl)
-      ("libunistring" ,libunistring)
-      ("openssl" ,openssl)
-      ("opus" ,opus)
-      ("pulseaudio", pulseaudio)
-      ("sqlite" ,sqlite)
-      ("zlib" ,zlib)))
+      ("libunistring" ,libunistring) ; fs and more
+      ("openssl" ,openssl) ; transport, certificate creation, contribs
+      ("opus" ,opus) ; gnunet-conversation
+      ("pulseaudio" ,pulseaudio) ; conversation
+      ("sqlite" ,sqlite) ; sqlite bindings, *store
+      ("zlib" ,zlib)
+      ("perl" ,perl) ; doxygen and more
+      ("jansson" ,jansson) ; identity, taler (external), gnunet-json, gns
+      ("nss" ,nss) ; gns
+      ("gmp" ,gmp) ; util
+      ("bluez" ,bluez) ; gnunet-transport
+      ("glib" ,glib)
+      ("libogg" ,libogg) ; gnunet-conversation
+      ("python-2" ,python-2))) ; tests, gnunet-qr
    (native-inputs
-    `(("pkg-config" ,pkg-config)
-      ("python" ,python-2)))
+    `(("pkg-config" ,pkg-config)))
    (arguments
-    '(#:parallel-tests? #f
+    '(#:configure-flags
+      (list (string-append "--with-nssdir=" %output "/lib"))
+      #:parallel-tests? #f
       ;; test_gnunet_service_arm fails; reported upstream
       #:tests? #f
       #:phases
+      (modify-phases %standard-phases
         ;; swap check and install phases and set paths to installed binaries
-        (alist-cons-before
-         'check 'set-path-for-check
-         (lambda* (#:key outputs #:allow-other-keys)
-          (let ((out (assoc-ref outputs "out")))
-           (setenv "GNUNET_PREFIX" (string-append out "/lib"))
-           (setenv "PATH" (string-append (getenv "PATH") ":" out "/bin"))))
-         (alist-cons-after
-          'install 'check
-          (assoc-ref %standard-phases 'check)
-          (alist-delete
-           'check
-           %standard-phases)))))
+        (add-before 'check 'set-path-for-check
+          (lambda* (#:key outputs #:allow-other-keys)
+           (let ((out (assoc-ref outputs "out")))
+             (setenv "GNUNET_PREFIX" (string-append out "/lib"))
+             (setenv "PATH" (string-append (getenv "PATH") ":" out "/bin")))
+           #t))
+        (add-after 'install 'check
+          (assoc-ref %standard-phases 'check))
+        (delete 'check))))
    (synopsis "Secure, decentralized, peer-to-peer networking framework")
    (description
-    "GNUnet is a framework for secure peer-to-peer networking that does not
-use any centralized or otherwise trusted services.  Our high-level goal is to
-provide a strong free software foundation for a global network that provides
-security and privacy.  GNUnet started with an idea for anonymous
-censorship-resistant file-sharing, but has grown to incorporate other
-applications as well as many generic building blocks for secure networking
-applications.  In particular, GNUnet now includes the GNU Name System, a
-privacy-preserving, decentralized public key infrastructure.")
+     "GNUnet is a framework for secure peer-to-peer networking.  The
+high-level goal is to provide a strong foundation of free software for a
+global, distributed network that provides security and privacy.  GNUnet in
+that sense aims to replace the current internet protocol stack.  Along with
+an application for secure publication of files, it has grown to include all
+kinds of basic applications for the foundation of a GNU internet.")
    (license license:gpl3+)
    (home-page "https://gnunet.org/")))
+
+(define-public guile-gnunet                       ;GSoC 2015!
+  (let ((commit "383eac2aab175d8d9ea5315c2f1c8a5055c76a52"))
+    (package
+      (name "guile-gnunet")
+      (version (string-append "0.0." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "git://git.sv.gnu.org/guix/gnunet.git")
+                      (commit commit)))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32
+                  "0k6mn28isjlxrnvbnblab3nh2xqx1b7san8k98kc35ap9lq0iz8w"))))
+      (build-system gnu-build-system)
+      (arguments
+       '(#:phases (modify-phases %standard-phases
+                    (add-before 'configure 'bootstrap
+                      (lambda _
+                        (zero? (system* "autoreconf" "-vfi")))))))
+      (native-inputs `(("pkg-config" ,pkg-config)
+                       ("autoconf" ,(autoconf-wrapper))
+                       ("automake" ,automake)))
+      (inputs `(("guile" ,guile-2.0)
+                ("gnunet" ,gnunet)))
+      (synopsis "Guile bindings for GNUnet services")
+      (description
+       "This package provides Guile bindings to the client libraries of various
+GNUnet services, including the @dfn{identity} and @dfn{file sharing}
+services.")
+      (home-page "https://gnu.org/software/guix")
+      (license license:gpl3+))))
+
+;; FIXME: "gnunet-setup" segfaults under certain conditions and "gnunet-gtk"
+;; does not seem to be fully functional.  This has been reported upstream:
+;; http://lists.gnu.org/archive/html/gnunet-developers/2016-02/msg00004.html
+(define-public gnunet-gtk
+  (package (inherit gnunet)
+    (name "gnunet-gtk")
+    (version (package-version gnunet))
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/gnunet/gnunet-gtk-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1p38k1s6a2fmcfc9a7cf1zrdycm9h06kqdyand4s3k500nj6mb4g"))))
+    (arguments
+     `(#:configure-flags
+       (list "--with-libunique"
+             "--with-qrencode"
+             (string-append "--with-gnunet="
+                            (assoc-ref %build-inputs "gnunet")))))
+    (inputs
+     `(("gnunet" ,gnunet)
+       ("libgcrypt" ,libgcrypt)
+       ("gtk+" ,gtk+)
+       ("libextractor" ,libextractor)
+       ("glade3" ,glade3)
+       ("qrencode" ,qrencode)
+       ("libunique" ,libunique)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("libglade" ,libglade)))
+    (synopsis "Graphical front-end tools for GNUnet")))