Merge branch 'master' into core-updates
[jackhill/guix/guix.git] / gnu / packages / gnunet.scm
index 0b42c0b..44d6129 100644 (file)
@@ -5,7 +5,7 @@
 ;;; 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>
+;;; Copyright © 2016, 2017 ng0 <ng0@no-reply.pragmatique.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
   #: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 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 multiprecision)
+  #:use-module (gnu packages music)
+  #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages package-management)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pulseaudio)
@@ -49,7 +54,9 @@
   #: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)
    ;; 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
+   ;; * librpm (rpm)    ; investigate failure
+   ;; * libgif (giflib) ; investigate failure
    (inputs
     `(("exiv2" ,exiv2)
+      ("bzip2" ,bzip2)
       ("flac" ,flac)
       ("ffmpeg" ,ffmpeg)
       ("file" ,file)                           ;libmagic, for the MIME plug-in
       ("glib" ,glib)
       ("gstreamer" ,gstreamer)
       ("gst-plugins-base" ,gst-plugins-base)
+      ("gtk+" ,gtk+)
+      ("libarchive" ,libarchive)
+      ("libgsf" ,libgsf)
       ("libjpeg" ,libjpeg)
+      ("libltdl" ,libltdl)
+      ("libmpeg2" ,libmpeg2)
+      ("libmp4v2" ,libmp4v2)
+      ("libsmf" ,libsmf)
+      ("tidy-html" ,tidy-html)
       ("libogg" ,libogg)
       ("libtiff" ,libtiff)
-      ("libltdl" ,libltdl)
       ("libvorbis" ,libvorbis)
       ("zlib" ,zlib)))
    (native-inputs
-      `(("pkg-config" ,pkg-config)))
+    `(("pkg-config" ,pkg-config)))
+   (outputs '("out"
+              "static")) ; 396 KiB .a files
+   (arguments
+    `(#:configure-flags
+      (list (string-append "--with-ltdl="
+                           (assoc-ref %build-inputs "libltdl"))
+            (string-append "--with-tidy="
+                           (assoc-ref %build-inputs "tidy-html")))
+      #:parallel-tests? #f
+      #:phases
+      (modify-phases %standard-phases
+        (add-after 'install 'move-static-libraries
+          (lambda* (#:key outputs #:allow-other-keys)
+            ;; Move static libraries to the "static" output.
+            (let* ((out    (assoc-ref outputs "out"))
+                   (lib    (string-append out "/lib"))
+                   (static (assoc-ref outputs "static"))
+                   (slib   (string-append static "/lib")))
+              (mkdir-p slib)
+              (for-each (lambda (file)
+                          (install-file file slib)
+                          (delete-file file))
+                        (find-files lib "\\.a$"))
+              #t))))))
    (synopsis "Library to extract meta-data from media files")
    (description
     "GNU libextractor is a library for extracting metadata from files.  It
@@ -116,19 +147,19 @@ files, and archive files.  Each file format is implemented as a plugin, so
 new formats can be added easily.  The package also contains a command-line
 tool to extract metadata from a file and print the results.")
    (license license:gpl3+)
-   (home-page "http://www.gnu.org/software/libextractor/")))
+   (home-page "https://www.gnu.org/software/libextractor/")))
 
 (define-public libmicrohttpd
   (package
    (name "libmicrohttpd")
-   (version "0.9.50")
+   (version "0.9.52")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/libmicrohttpd/libmicrohttpd-"
                                 version ".tar.gz"))
             (sha256
              (base32
-              "1mzbqr6sqisppz88mh73bbh5sw57g8l87qvhcjdx5pmbd183idni"))))
+              "1smgxw6jv81yybg86bzr4c2sn7a31apf8q4zz0kpch9xfrp7yyal"))))
    (build-system gnu-build-system)
    (inputs
     `(("curl" ,curl)
@@ -148,27 +179,30 @@ IPv6.  It
 also features security features such as basic and digest authentication
 and support for SSL3 and TLS.")
    (license license:lgpl2.1+)
-   (home-page "http://www.gnu.org/software/libmicrohttpd/")))
+   (home-page "https://www.gnu.org/software/libmicrohttpd/")))
 
 (define-public gnurl
   (package
    (name "gnurl")
-   (version "7.50.1")
+   (version "7.54.0")
    (source (origin
             (method url-fetch)
-            (uri (let ((version-with-underscores
-                        (string-join (string-split version #\.) "_")))
-                   (string-append "https://gnunet.org/sites/default/files/"
-                                  name "-" version-with-underscores ".tar.bz2")))
+            (uri (string-append "https://gnunet.org/sites/default/files/"
+                                name "-" version ".tar.bz2"))
             (sha256
              (base32
-              "0irb8df3lqd9w1pb627q260hn448vbkh0sn4l6p6jh0q8lqscv84"))))
+              "1ww346cdsxln6iq158a4wm38bmicg5wspd2c83gnqf1glx22hza0"))))
    (build-system gnu-build-system)
+   (outputs '("out"
+              "doc"))                             ; 1.5 MiB of man3 pages
    (inputs `(("gnutls" ,gnutls)
              ("libidn" ,libidn)
              ("zlib" ,zlib)))
    (native-inputs
-    `(("groff" ,groff)
+    `(("autoconf" ,autoconf)
+      ("automake" ,automake)
+      ("libtool" ,libtool)
+      ("groff" ,groff)
       ("perl" ,perl)
       ("pkg-config" ,pkg-config)
       ("python" ,python-2)))
@@ -184,21 +218,36 @@ and support for SSL3 and TLS.")
                           "--disable-telnet" "--disable-tftp" "--disable-pop3"
                           "--disable-imap" "--disable-smtp" "--disable-gopher"
                           "--disable-file" "--disable-ftp" "--disable-smb")
-     #:test-target "test"
-     #:parallel-tests? #f
-     #:phases
-     ;; We have to patch runtests.pl in tests/ directory
-      (alist-cons-before
-       'check 'patch-runtests
-       (lambda _
-         (substitute* "tests/runtests.pl"
-           (("/bin/sh") (which "sh"))))
-       ;; To be discussed with upstream.
-       (alist-cons-before
-        'check 'delete-failing-test1139
-        (lambda _
-          (delete-file "tests/data/test1139"))
-       %standard-phases))))
+      #:test-target "test"
+      #:parallel-tests? #f
+      #:phases
+      ;; We have to patch runtests.pl in tests/ directory
+      (modify-phases %standard-phases
+        (add-after 'install 'move-man3-pages
+          (lambda* (#:key outputs #:allow-other-keys)
+            ;; Move section 3 man pages to "doc".
+            (let ((out (assoc-ref outputs "out"))
+                  (doc (assoc-ref outputs "doc")))
+              (mkdir-p (string-append doc "/share/man"))
+              (rename-file (string-append out "/share/man/man3")
+                           (string-append doc "/share/man/man3"))
+              #t)))
+        (add-before 'configure 'autoconf
+          ;; Clear artifacts left (shebangs) from release preparation.
+          (lambda _
+            (zero? (system* "./buildconf"))))
+        (replace 'check
+          (lambda _
+            ;; It is unclear why test1026 fails, however the content of it
+            ;; suggests that it is not vital for gnurl.
+            (delete-file "tests/data/test1026")
+
+            (substitute* "tests/runtests.pl"
+              (("/bin/sh") (which "sh")))
+
+            ;; Make test output more verbose.
+            (zero? (system* "make" "-C" "tests" "test"))
+            #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
@@ -217,8 +266,9 @@ supports HTTP, 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)
@@ -229,17 +279,24 @@ supports HTTP, HTTPS and 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
     '(#:configure-flags
       (list (string-append "--with-nssdir=" %output "/lib"))
@@ -247,19 +304,17 @@ supports HTTP, HTTPS and GnuTLS.")
       ;; 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.  The
@@ -301,7 +356,7 @@ kinds of basic applications for the foundation of a GNU internet.")
        "This package provides Guile bindings to the client libraries of various
 GNUnet services, including the @dfn{identity} and @dfn{file sharing}
 services.")
-      (home-page "http://gnu.org/software/guix")
+      (home-page "https://gnu.org/software/guix")
       (license license:gpl3+))))
 
 ;; FIXME: "gnunet-setup" segfaults under certain conditions and "gnunet-gtk"
@@ -320,7 +375,7 @@ services.")
                 "1p38k1s6a2fmcfc9a7cf1zrdycm9h06kqdyand4s3k500nj6mb4g"))))
     (arguments
      `(#:configure-flags
-       (list "--without-libunique"
+       (list "--with-libunique"
              "--with-qrencode"
              (string-append "--with-gnunet="
                             (assoc-ref %build-inputs "gnunet")))))
@@ -330,7 +385,8 @@ services.")
        ("gtk+" ,gtk+)
        ("libextractor" ,libextractor)
        ("glade3" ,glade3)
-       ("qrencode" ,qrencode)))
+       ("qrencode" ,qrencode)
+       ("libunique" ,libunique)))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("libglade" ,libglade)))