Subject: [bug#40556] [PATCH] gnu: dovecot: Add libunwind input.

From: Pierre Langlois <[email-masked]>
Date: Sat, 11 Apr 2020 18:53:29 +0200

Tobias Geerinckx-Rice writes:

> Pierre,
>
> Pierre Langlois 写道：
>> I wonder what's wrong with backtrace_symbols() in guix, I'm not sure
>> how
>> to investigate that. For now though, what do you think of using
>> libunwind?
>
> OK, but it should only be included on platforms that require it:

Oh sure thing!

>
>  ;; Untested…
>  (inputs
>   `(…
>     ,@(match (%current-system)
>         ((or "aarch64-linux" "armhf-linux" …)
>          `(("libunwind" ,libunwind)))
>         (_ `()))
>     …))
>
> Could you test that?

OK, the following patch works for me (tested building for armhf and
aarch64 on a rockpro64). I've also added a "FIXME" comment to mention
the issue so we can remove/keep it when we have a good understanding of
what's going on.

>From ea4c7a2dec7c81951cf0d27cbb669ef39b07de95 Mon Sep 17 00:00:00 2001
From: Pierre Langlois <[email-masked]>
Date: Sat, 11 Apr 2020 16:34:01 +0100
Subject: [PATCH] gnu: dovecot: Add libunwind input for arm.

* gnu/packages/mail.scm (dovecot)[inputs]: Add libunwind if the system is
either aarch64-linux or armhf-linux.
---
 gnu/packages/mail.scm | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index a6ed776db1..91577f72b1 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -24,7 +24,7 @@
 ;;; Copyright © 2017 Kyle Meyer <[email-masked]>
 ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <[email-masked]>
 ;;; Copyright © 2017, 2018 Rene Saavedra <[email-masked]>
-;;; Copyright © 2018, 2019 Pierre Langlois <[email-masked]>
+;;; Copyright © 2018, 2019, 2020 Pierre Langlois <[email-masked]>
 ;;; Copyright © 2018 Alex Vong <[email-masked]>
 ;;; Copyright © 2018 Gábor Boskovits <[email-masked]>
 ;;; Copyright © 2018, 2019, 2020 Ricardo Wurmus <[email-masked]>
@@ -89,6 +89,7 @@
   #:use-module (gnu packages libevent)
   #:use-module (gnu packages libidn)
   #:use-module (gnu packages libunistring)
+  #:use-module (gnu packages libunwind)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages lsof)
   #:use-module (gnu packages lua)
@@ -1435,6 +1436,12 @@ facilities for checking incoming mail.")
     (inputs
      `(("bzip2" ,bzip2)
        ("libsodium" ,libsodium)         ; extra password algorithms
+       ;; FIXME: The 'test-backtrace' tests fail on arm when using glibc's
+       ;; backtrace_symbol() function so fallback to using libunwind.
+       ,@(match (or (%current-target-system) (%current-system))
+           ((or "aarch64-linux" "armhf-linux")
+            `(("libunwind" ,libunwind)))
+           (_ '()))
        ("linux-pam" ,linux-pam)
        ("lz4" ,lz4)
        ("openssl" ,openssl)
-- 
2.26.0

Thanks,
Pierre