summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
Diffstat (limited to 'gnu')
-rw-r--r--gnu/packages/gnunet.scm69
-rw-r--r--gnu/packages/patches/gnunet-fix-scheduler.patch13
-rw-r--r--gnu/packages/patches/gnunet-fix-tests.patch46
3 files changed, 128 insertions, 0 deletions
diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm
index 6af9063f19..2bbe72ffe1 100644
--- a/gnu/packages/gnunet.scm
+++ b/gnu/packages/gnunet.scm
@@ -17,6 +17,7 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages gnunet)
+  #:use-module (gnu packages)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages curl)
@@ -30,10 +31,14 @@
   #:use-module (gnu packages libidn)
   #:use-module (gnu packages libjpeg)
   #:use-module (gnu packages libtiff)
+  #:use-module (gnu packages libunistring)
+  #:use-module (gnu packages maths)
   #:use-module (gnu packages openssl)
   #: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 sqlite)
   #:use-module (gnu packages video)
   #:use-module (gnu packages xiph)
   #:use-module ((guix licenses)
@@ -184,3 +189,67 @@ supports HTTPS, HTTPS and GnuTLS.")
    (license (license:bsd-style "file://COPYING"
                        "See COPYING in the distribution."))
    (home-page "https://gnunet.org/gnurl")))
+
+(define-public gnunet
+  (package
+   (name "gnunet")
+   (version "0.10.0")
+   (source
+    (origin
+      (method url-fetch)
+      (uri (string-append "mirror://gnu/gnunet/gnunet-" version
+                          ".tar.gz"))
+      (sha256 (base32
+               "0zqpc47kywhjrpphl0palz849khv00ra2gjrfkysp6p0gfsbvd0i"))
+      (patches
+       (list
+        ;; Patch to fix serious bug in scheduler; upstream commit: #31747
+        (search-patch "gnunet-fix-scheduler.patch")
+        ;; Patch to fix bugs in testcases:
+        ;; * Disable peerinfo-tool tests as they depend on reverse DNS lookups
+        ;; * Allow revocation testcase to run on loopback; upstream: #32130
+        ;; * Skip GNS testcases requiring DNS lookups; upstream: #32118
+        (search-patch "gnunet-fix-tests.patch")))
+      (patch-flags '("-p0"))))
+   (build-system gnu-build-system)
+   (inputs
+    `(("gnutls" ,gnutls)
+      ("glpk" ,glpk)
+      ("libextractor" ,libextractor)
+      ("libgcrypt" ,libgcrypt)
+      ("gnurl" ,gnurl)
+      ("libidn" ,libidn)
+      ("openssl" ,openssl)
+      ("opus" ,opus)
+      ("libtool" ,libtool)
+      ("libunistring" ,libunistring)
+      ("pulseaudio", pulseaudio)
+      ("sqlite" ,sqlite)
+      ("zlib" ,zlib)))
+   (native-inputs
+    `(("pkg-config" ,pkg-config)
+      ("python" ,python-2)))
+   (arguments
+    '(#: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" out)
+          (setenv "PATH" (string-append (getenv "PATH") ":" out "/bin"))))
+       (alist-cons-after
+        'install 'check
+        (assoc-ref %standard-phases 'check)
+       (alist-delete
+        'check
+       %standard-phases)))))
+   (synopsis "Anonymous peer-to-peer file-sharing framework")
+   (description
+    "GNUnet is a framework for secure, peer-to-peer networking.  It works in a
+decentralized manner and does not rely on any notion of trusted services.  One
+service implemented on it is censorship-resistant file-sharing.  Communication
+is encrypted and anonymity is provided by making messages originating from a
+peer indistinguishable from those that the peer is routing.")
+   (license license:gpl3+)
+   (home-page "https://gnunet.org/")))
diff --git a/gnu/packages/patches/gnunet-fix-scheduler.patch b/gnu/packages/patches/gnunet-fix-scheduler.patch
new file mode 100644
index 0000000000..1e0aef2a1a
--- /dev/null
+++ b/gnu/packages/patches/gnunet-fix-scheduler.patch
@@ -0,0 +1,13 @@
+Index: src/util/scheduler.c
+===================================================================
+--- src/util/scheduler.c	(revision 31745)
++++ src/util/scheduler.c	(working copy)
+@@ -1599,7 +1599,7 @@
+   int real_fd;
+ 
+   GNUNET_DISK_internal_file_handle_ (fd, &real_fd, sizeof (int));
+-  GNUNET_assert (real_fd > 0);
++  GNUNET_assert (real_fd >= 0);
+   return add_without_sets (
+       delay, priority,
+       on_read  ? real_fd : -1,
diff --git a/gnu/packages/patches/gnunet-fix-tests.patch b/gnu/packages/patches/gnunet-fix-tests.patch
new file mode 100644
index 0000000000..1957b17119
--- /dev/null
+++ b/gnu/packages/patches/gnunet-fix-tests.patch
@@ -0,0 +1,46 @@
+diff -ru a/src/peerinfo-tool/Makefile.in b/src/peerinfo-tool/Makefile.in
+--- src/peerinfo-tool/Makefile.in	2013-12-24 13:55:04.000000000 +0100
++++ src/peerinfo-tool/Makefile.in	2014-01-30 13:07:52.275965484 +0100
+@@ -335,9 +335,6 @@
+   $(top_builddir)/src/statistics/libgnunetstatistics.la \
+   $(top_builddir)/src/util/libgnunetutil.la 
+ 
+-@HAVE_PYTHON_TRUE@check_SCRIPTS = \
+-@HAVE_PYTHON_TRUE@ test_gnunet_peerinfo.py 
+-
+ @ENABLE_TEST_RUN_TRUE@TESTS = $(check_SCRIPTS)
+ do_subst = $(SED) -e 's,[@]PYTHON[@],$(PYTHON),g'
+ EXTRA_DIST = \
+diff -ru a/src/revocation/test_revocation.conf b/src/revocation/test_revocation.conf
+--- src/revocation/test_revocation.conf	2013-12-21 18:57:06.000000000 +0100
++++ src/revocation/test_revocation.conf	2014-01-30 15:00:02.841340556 +0100
+@@ -20,6 +20,9 @@
+ [transport-udp]
+ BROADCAST = NO
+ 
++[nat]
++RETURN_LOCAL_ADDRESSES = YES
++
+ [peerinfo]
+ USE_INCLUDED_HELLOS = NO
+ 
+Index: src/gns/test_gns_cname_lookup.sh
+===================================================================
+--- src/gns/test_gns_cname_lookup.sh	(revision 32117)
++++ src/gns/test_gns_cname_lookup.sh	(revision 32118)
+@@ -13,6 +13,15 @@
+ 	exit 77
+ fi
+ 
++# permissive DNS resolver we will use for the test
++DNS_RESOLVER="8.8.8.8"
++if ! nslookup gnunet.org $DNS_RESOLVER &> /dev/null
++then
++  echo "Cannot reach DNS, skipping test"
++  exit 77
++fi
++
++
+ rm -rf /tmp/test-gnunet-gns-peer-1/
+ 
+ TEST_DOMAIN_PLUS="www.gnu"