Subject: Re: bug#40408: emacs-telega: VoIP doesn't work

From: Brett Gilio <[email-masked]>
Date: Fri, 07 Aug 2020 21:09:54 -0500

Diego Nicola Barbato <[email-masked]> writes:

> Hi,
>
> Leo Famulari <[email-masked]> writes:
>
>> On Fri, Apr 03, 2020 at 06:12:16PM +0200, Diego Nicola Barbato wrote:
>>> The following error messages in .telega/telega-voip.log seem relevant:
>>> 
>>> --8<---------------cut here---------------start------------->8---
>>> 04-01 20:04:04 E: Error loading libpulse: (null)
>>> 04-01 20:04:04 E: Error loading libasound: (null)
>>> 04-01 20:04:04 E: Error loading libasound: (null)
>>> 04-01 20:04:04 E: Error initializing audio playback
>>> --8<---------------cut here---------------end--------------->8---
>>
>> I'd guess those libraries should be dependencies of this package. I
>> would move it to the telephony module as well.
>
> Turns out the libraries are dependencies of libtgvoip.  It tries to
> dlopen them, but doesn't find them.  I've attached a patch to fix that.
> Unfortunately VoIP still doesn't work in Telega (it still fails in the
> same way as before, except that there are no more error messages in
> .telega/telega-voip.log).  It looks like that's a separate, unrelated
> issue.
>
> Regards,
>
> Diego
>
>>>From f63cf832869bee91f3f6e87c076bd1e39d32c285 Mon Sep 17 00:00:00 2001
> From: Diego Nicola Barbato <[email-masked]>
> Date: Sat, 4 Apr 2020 19:36:31 +0200
> Subject: [PATCH] gnu: libtgvoip: Fix loading of shared libraries.
>
> Fixes <https://debbugs.gnu.org/40408>.
>
> * gnu/packages/telephony.scm (libtgvoip)[arguments]<#:phases>[patch-dlopen]:
>   New phase.
> ---
>  gnu/packages/telephony.scm | 17 +++++++++++++++++
>  1 file changed, 17 insertions(+)
>
> diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
> index f64cdd3fb2..f73efb0deb 100644
> --- a/gnu/packages/telephony.scm
> +++ b/gnu/packages/telephony.scm
> @@ -1046,6 +1046,23 @@ This package provides the Jami client for the GNOME desktop.")
>         ("libopusenc" ,libopusenc)
>         ("openssl" ,openssl)
>         ("pulseaudio" ,pulseaudio)))
> +    (arguments
> +     `(#:phases
> +       (modify-phases %standard-phases
> +         ;; libtgvoip wants to dlopen libpulse and libasound, so tell it where
> +         ;; they are.
> +         (add-after 'unpack 'patch-dlopen
> +           (lambda* (#:key inputs #:allow-other-keys)
> +             (substitute* "os/linux/AudioPulse.cpp"
> +               (("libpulse\\.so")
> +                (string-append (assoc-ref inputs "pulseaudio")
> +                              "/lib/libpulse.so")))
> +             (substitute* '("os/linux/AudioInputALSA.cpp"
> +                            "os/linux/AudioOutputALSA.cpp")
> +               (("libasound\\.so")
> +                (string-append (assoc-ref inputs "alsa-lib")
> +                               "/lib/libasound.so")))
> +             #t)))))
>      (synopsis "VoIP library for Telegram clients")
>      (description "A collection of libraries and header files for implementing
>  telephony functionality into custom Telegram clients.")

Hi all,

I apologize for the late response to this message. When it was sent I
was on haitus.

I am a co-maintainer for emacs-telega upstream along with Evgeny
Zajcev. Currently the functionality for VoIP is broken, and has been
disabled in the emacs-telega package for the time being. However, I
believe you have patched a bug with the libtgvoip package that caused
erroneous linkage to the system libraries on foreign distributions
causing a runtime issue with the telega server. So, I will investigate
your patch, and apply it so that when the time comes and VoIP
functionality is re-enabled we can prevent this issue!

Thank you,

I will forward this along to Evgeny as well.

Brett Gilio