Subject: Re: [bug#45875] [PATCH] Update gnunet to version 0.14.0

From: Maxime Devos <[email-masked]>
Date: Sun, 31 Jan 2021 18:11:59 +0100

An updated and much simpler patch is attached,
which adds the missing test_proxy.sh.  However,
it is currently failing (something about CONVERSATION,
IDENTITY and type errors?).  I haven't investigated
closely yet, as I'm currently focusing on other things,
so I'm posting the (failing) patch and build log.

From b4555addd58c9c2d0026a55313791761dc920976 Mon Sep 17 00:00:00 2001
From: Maxime Devos <[email-masked]>
Date: Sun, 31 Jan 2021 10:44:43 +0100
Subject: [PATCH] index on master: 085708344c services: shepherd: allow custom
 'shepherd' package

---
 gnu/packages/gnunet.scm                       | 11 ++--
 .../patches/gnunet-add-test-proxy.patch       | 66 +++++++++++++++++++
 2 files changed, 73 insertions(+), 4 deletions(-)
 create mode 100644 gnu/packages/patches/gnunet-add-test-proxy.patch

diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm
index 80e4aba29b..35c8fc67af 100644
--- a/gnu/packages/gnunet.scm
+++ b/gnu/packages/gnunet.scm
@@ -11,6 +11,7 @@
 ;;; Copyright © 2019 Brett Gilio <[email-masked]>
 ;;; Copyright © 2020 Tanguy Le Carrour <[email-masked]>
 ;;; Copyright © 2020 Michael Rohleder <[email-masked]>
+;;; Copyright © 2021 Maxime Devos <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -256,15 +257,17 @@ supports HTTP, HTTPS and GnuTLS.")
 (define-public gnunet
   (package
    (name "gnunet")
-   (version "0.13.1")
+   (version "0.14.0")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "mirror://gnu/gnunet/gnunet-" version
                           ".tar.gz"))
+      (patches
+       (search-patches "gnunet-add-test-proxy.patch"))
       (sha256
        (base32
-        "15jnca5zxng7r6m3qzq9lr73xxq0v6mvcp0lny3zrlkz5s2nmmq3"))))
+        "1as5mxg94vby10wxgxbsr8cxzh35lyinlp1cr8sx7l9fscxn1vys"))))
    (build-system gnu-build-system)
    (inputs
     `(("bluez" ,bluez)
@@ -386,14 +389,14 @@ services.")
 (define-public gnunet-gtk
   (package (inherit gnunet)
     (name "gnunet-gtk")
-    (version "0.13.1")
+    (version "0.14.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/gnunet/gnunet-gtk-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1zdzgq16h77w6ybwg3lqjsjr965np6iqvncqvkbj07glqd4wss0j"))))
+                "18rc7mb45y17d5nrlpf2p4ixp7ir67gcgjf4hlj4r95ic5zi54wa"))))
     (arguments
      `(#:configure-flags
        (list "--with-libunique"
diff --git a/gnu/packages/patches/gnunet-add-test-proxy.patch b/gnu/packages/patches/gnunet-add-test-proxy.patch
new file mode 100644
index 0000000000..9d15875ec2
--- /dev/null
+++ b/gnu/packages/patches/gnunet-add-test-proxy.patch
@@ -0,0 +1,66 @@
+This file was missing from the 0.14.0 tarball.
+
+Upstream bug URL:
+https://bugs.gnunet.org/view.php?id=6690
+
+diff --git a/src/gns/test_proxy.sh b/src/gns/test_proxy.sh
+new file mode 100755
+index 000000000..7c17cd4c5
+--- /dev/null
++++ b/src/gns/test_proxy.sh
+@@ -0,0 +1,55 @@
++#!/bin/bash
++# This file is in the public domain.
++TEST_DOMAIN="www.test"
++
++# Delete old files before starting test
++rm -rf /tmp/gnunet/test-gnunet-gns-testing/
++gnunet-arm -s -c test_gns_proxy.conf
++gnunet-gns-proxy-setup-ca -c test_gns_proxy.conf
++
++openssl genrsa -des3 -passout pass:xxxx -out server.pass.key 2048
++openssl rsa -passin pass:xxxx -in server.pass.key -out local.key
++rm server.pass.key
++openssl req -new -key local.key -out server.csr \
++  -subj "/C=DE/O=GNUnet/OU=GNS/CN=test.local"
++openssl x509 -req -days 1 -in server.csr -signkey local.key -out local.crt
++openssl x509 -in local.crt -out local.der -outform DER
++HEXCERT=`xxd -p local.der | tr -d '\n'`
++#echo "This is the certificate the server does not use: $HEXCERT"
++OLDBOXVALUE="6 8443 52 3 0 0 $HEXCERT"
++
++
++openssl req -new -key local.key -out server.csr \
++  -subj "/C=DE/O=GNUnet/OU=GNS/CN=test.local"
++openssl x509 -req -days 1 -in server.csr -signkey local.key -out local.crt
++openssl x509 -in local.crt -out local.der -outform DER
++HEXCERT=`xxd -p local.der | tr -d '\n'`
++#echo "This is the certificate the server does use: $HEXCERT"
++BOXVALUE="6 8443 52 3 0 0 $HEXCERT"
++
++cat local.crt > /tmp/server_cacert.pem
++cat local.key >> /tmp/server_cacert.pem
++
++gnunet-identity -C test -c test_gns_proxy.conf
++gnunet-namestore -p -z test -a -n www -t A -V 127.0.0.1 -e never -c test_gns_proxy.conf
++gnunet-namestore -p -z test -a -n www -t LEHO -V "test.local" -e never -c test_gns_proxy.conf
++gnunet-namestore -p -z test -a -n www -t BOX -V "$OLDBOXVALUE" -e never -c test_gns_proxy.conf
++gnunet-namestore -p -z test -a -n www -t BOX -V "$BOXVALUE" -e never -c test_gns_proxy.conf
++
++gnunet-arm -i gns-proxy -c test_gns_proxy.conf
++
++#gnurl --socks5-hostname 127.0.0.1:7777 https://www.test -v --cacert /tmp/proxy_cacert.pem
++./test_gns_proxy -A /tmp/proxy_cacert.pem -S /tmp/server_cacert.pem -p 8443 -c test_gns_proxy.conf
++
++RES=$?
++
++rm /tmp/proxy_cacert.pem
++rm /tmp/server_cacert.pem
++
++gnunet-arm -e test_gns_proxy.conf
++
++if test $RES != 0
++then
++  echo "Failed"
++  exit 1
++fi
-- 
2.30.0