Hi Andre,

I've taken your suggestions.
Here is the updated patch.
Thanks

From a7c754da51888f23755ba46904191bf16523fc17 Mon Sep 17 00:00:00 2001
From: fanquake <fanquake@gmail.com>
Date: Thu, 24 Aug 2023 09:47:33 +0100
Subject: [PATCH] gnu: tor: Update to 0.4.8.5.

* gnu/packages/tor.scm (tor): Update to 0.4.8.5.
* gnu/packages/tor.scm (tor)[arguments]<#:configure-flags>:
Add "--enable-gpl".
* gnu/packages/patches/tor-remove-defensive-assert.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/tor.scm (tor)[source]: Add patch to remove defensive
  assert.
---
 gnu/local.mk                                  |  1 +
 .../patches/tor-remove-defensive-assert.patch | 28 +++++++++++++++++++
 gnu/packages/tor.scm                          |  8 ++++--
 3 files changed, 34 insertions(+), 3 deletions(-)
 create mode 100644 gnu/packages/patches/tor-remove-defensive-assert.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 9b493df8d5..6a4f9dabb2 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2012,6 +2012,7 @@ dist_patch_DATA = \
   %D%/packages/patches/tofi-32bit-compat.patch \
   %D%/packages/patches/tootle-glib-object-naming.patch \
   %D%/packages/patches/tootle-reason-phrase.patch \
+  %D%/packages/patches/tor-remove-defensive-assert.patch   \
   %D%/packages/patches/transcode-ffmpeg.patch \
   %D%/packages/patches/transfig-gcc10-fno-common.patch \
   %D%/packages/patches/trytond-add-egg-modules-to-path.patch \
diff --git a/gnu/packages/patches/tor-remove-defensive-assert.patch b/gnu/packages/patches/tor-remove-defensive-assert.patch
new file mode 100644
index 0000000000..7207ec867a
--- /dev/null
+++ b/gnu/packages/patches/tor-remove-defensive-assert.patch
@@ -0,0 +1,28 @@
+This patch removes a call to `tor_assert_nonfatal_unreached()` in
+`relay_key_is_unavailable_()` that is only called when Tor is compiled
+without relay support.
+
+Unfortunately, the non-fatal assertion causes a BUG log
+message to appear for clients when they start up without relay support
+for each CPU worker we spawn. This makes it spotting issues during
+bootstrap harder particularly for our iOS developers.
+
+Since the call sites to `get_master_identity_key()` handles `NULL`
+values already, we do not think this will be an issue later on.
+
+Reported by Benjamin Erhart (@tla) from Guardian Project.
+
+Fixes tpo/core/tor#40848.
+
+diff --git a/src/feature/relay/routerkeys.h b/src/feature/relay/routerkeys.h
+index 7b6d80773c..b97615a9c9 100644
+--- a/src/feature/relay/routerkeys.h
++++ b/src/feature/relay/routerkeys.h
+@@ -53,7 +53,6 @@ void routerkeys_free_all(void);
+ static inline void *
+ relay_key_is_unavailable_(void)
+ {
+-  tor_assert_nonfatal_unreached();
+   return NULL;
+ }
+ #define relay_key_is_unavailable(type) \
diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm
index 7fec88656f..44e62b63cc 100644
--- a/gnu/packages/tor.scm
+++ b/gnu/packages/tor.scm
@@ -63,18 +63,20 @@ (define-module (gnu packages tor)
 (define-public tor
   (package
     (name "tor")
-    (version "0.4.7.14")
+    (version "0.4.8.5")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://dist.torproject.org/tor-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "1y2xwrji1rvk6h0k15705yra5s74h72h2g84x02zr0338vv6gb55"))))
+               "06g1awb4piqvgxa97pyswxgjzkpj8rx3iy2jbiaygvi99b8wymv9"))
+             (patches (search-patches "tor-remove-defensive-assert.patch"))))
     (build-system gnu-build-system)
     (arguments
      (list #:configure-flags
-           #~(list "--enable-lzma"
+           #~(list "--enable-gpl"
+                   "--enable-lzma"
                    "--enable-zstd")
            #:phases
            #~(modify-phases %standard-phases
--
2.42.0

On Thu, 31 Aug 2023 at 03:10, André Batista <nandre@riseup.net> wrote:
Hi Michael!

The Tor Project has released v0.4.8.5, so I guess we can skip
v0.4.8.4. Would you care to send a new version of your patch?

Also, Tor v0.4.8.x has introduced a new PoW feature which is useful
for Onion Service operators and users during those all too common
DDoS attempts on the network. However, the feature is disabled by
default because the code was GPL'd. So, in order to enable it for
Guix users - whom I think won't have an issue with GPL code ;) -, you
need to change the current package definition configure flags and add
"--enable-gpl", otherwise we will be missing on this.

Moreover, I'm running the tor-client package and have hit on core/tor
issue #40848[1], since upgrading to v0.4.8.5. Apparently it's a
pretty harmless bug assertion which Alexander Færøy solved [2] by
just removing the bug assertion. Nonetheless, I think it's best if we
also include that patch on Guix, otherwise there may be future
repeated questions from guix users once they start seeing it show up
on system logs.

WDYT?

Cheers!

1 - https://gitlab.torproject.org/tpo/core/tor/-/issues/40848
2 - https://gitlab.torproject.org/tpo/core/tor/-/merge_requests/752