~ruther/guix-local

266b39fc26fff62e63c63f7f6bc8c92dfbc3f91a — Sree Harsha Totakura 12 years ago 93bfe3e
gnu: Add GNUnet.

* gnunet/packages/gnunet.scm (gnunet): New variable.
* gnu/package/patches/gnunet-fix-scheduler.patch: New file.
* gnu/package/patches/gnunet-fix-tests.patch: New file.
* gnu-system.am (dist_patch_DATA): Add the above two patch files.

Co-authored-by: Andreas Enge <andreas@enge.fr>
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
M gnu-system.am => gnu-system.am +2 -0
@@ 259,6 259,8 @@ dist_patch_DATA =						\
  gnu/packages/patches/glibc-bootstrap-system.patch		\
  gnu/packages/patches/glibc-ldd-x86_64.patch			\
  gnu/packages/patches/glibc-make-4.0.patch			\
  gnu/packages/patches/gnunet-fix-scheduler.patch		\
  gnu/packages/patches/gnunet-fix-tests.patch    		\
  gnu/packages/patches/gobject-introspection-cc.patch		\
  gnu/packages/patches/grub-gets-undeclared.patch		\
  gnu/packages/patches/gstreamer-0.10-bison3.patch		\

M gnu/packages/gnunet.scm => gnu/packages/gnunet.scm +69 -0
@@ 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/")))

A gnu/packages/patches/gnunet-fix-scheduler.patch => gnu/packages/patches/gnunet-fix-scheduler.patch +13 -0
@@ 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,

A gnu/packages/patches/gnunet-fix-tests.patch => gnu/packages/patches/gnunet-fix-tests.patch +46 -0
@@ 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"