Subject: Re: [bug#40264] Linphone: 11-add-mediastreamer-v2

From: [email-masked]
Date: Sun, 05 Apr 2020 00:16:29 -0400

Hi Raghav!

"Raghav Gururajan" <[email-masked]> writes:

> From 3cf73361203f7833c61a24f69b9ab4bb4da358ce Mon Sep 17 00:00:00 2001
> From: Raghav Gururajan <[email-masked]>
> Date: Wed, 1 Apr 2020 20:18:20 -0400
> Subject: [PATCH 9/9] gnu: Add mediastreamer
>
> * gnu/packages/linphone.scm (mediastreamer): New variable.
> ---
>  gnu/packages/linphone.scm | 83 +++++++++++++++++++++++++++++++++++++++
>  1 file changed, 83 insertions(+)
>
> diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
> index 3be35bdb74..ce3ffa763b 100644
> --- a/gnu/packages/linphone.scm
> +++ b/gnu/packages/linphone.scm
> @@ -19,12 +19,24 @@
>  
>  (define-module (gnu packages linphone)
>    #:use-module (gnu packages)
> +  #:use-module (gnu packages admin)
> +  #:use-module (gnu packages audio)
>    #:use-module (gnu packages base)
>    #:use-module (gnu packages documentation)
> +  #:use-module (gnu packages gl)
> +  #:use-module (gnu packages gnome)
>    #:use-module (gnu packages graphviz)
> +  #:use-module (gnu packages image)
> +  #:use-module (gnu packages linux)
> +  #:use-module (gnu packages pulseaudio)
> +  #:use-module (gnu packages python)
>    #:use-module (gnu packages sqlite)
> +  #:use-module (gnu packages telephony)
>    #:use-module (gnu packages tls)
> +  #:use-module (gnu packages video)
> +  #:use-module (gnu packages xiph)
>    #:use-module (gnu packages xml)
> +  #:use-module (gnu packages xorg)
>    #:use-module ((guix licenses) #:prefix license:)
>    #:use-module (guix packages)
>    #:use-module (guix download)
> @@ -252,3 +264,74 @@ protocol, written in C.  It is fully portable and can be executed on many
>  platforms including both ARM and x86.")
>      (home-page "https://gitlab.linphone.org/BC/public/bzrtp")
>      (license license:gpl2+)))
> +
> +(define-public mediastreamer
> +  (package
> +    (name "mediastreamer")

The variable name and package name should be "mediastreamer2", as per
upstream.

> +    (version "2.16.1")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri
> +        (string-append "https://www.linphone.org/releases/sources/" name
> +                       "/" name "-" version ".tar.gz"))
> +       (sha256
> +        (base32 "0whpqr69wz0pnzvragkpfblxhd0rds8k06c3mw5a0ag216a1yd9k"))
> +       (patches
> +        (list
> +         ;; For fixing definitions.
> +         (origin
> +           (method url-fetch)
> +           (uri
> +            (string-append "https://gitlab.linphone.org/BC/public/mediastreamer2/commit/"
> +                           "de3a24b795d7a78e78eab6b974e7ec5abf2259ac.diff"))
> +           (file-name "mediastreamer-msfactory.patch")
> +           (sha256
> +            (base32 "18lsn9fc9di8bzr12ck3h9k9h8xvvhjzgkimbj9p4vmxxwhjaxn2")))))))

You can just use the "ENABLE_STRICT=NO", which will disable -Werror and
make the package more resilient in the face of future compiler upgrades
in Guix.  No more need for that patch :-).

> +    (build-system cmake-build-system)
> +    (arguments
> +     `(#:tests? #f                      ; No test target
> +       #:configure-flags
> +       (list
> +        "-DENABLE_SRTP=NO"             ; Using ZRTP instead

Usually we try to offer the most features possible.  I don't see why we
shouldn't add SRTP support since we should already have the required
dependencies.

Also, I see there's a ENABLE_UNIT_TESTS=YES option for unit tests, which
we should enable and try to run.

> +        "-DENABLE_STATIC=NO"           ; Not required
> +        "-DENABLE_GSM=NO"              ; Need recompilation with -fPIC

Not a merge breaker, but it'd make sense to have GSM for telephony
focused software :-).

> +        "-DENABLE_BV16=NO")))          ; Not available
> +    (native-inputs
> +     `(("dot" ,graphviz)
> +       ("doxygen" ,doxygen)
> +       ("python" ,python)))
> +    (inputs
> +     `(("alsa" ,alsa-lib)
> +       ("bcg729" ,bcg729)
> +       ("bcmatroska2" ,bcmatroska2)
> +       ("bctoolbox" ,bctoolbox)
> +       ("ffmpeg" ,ffmpeg)
> +       ("glew" ,glew)
> +       ("glu" ,glu)
> +       ("glx" ,mesa-utils)
> +       ("gsm" ,gsm)
> +       ("opengl" ,mesa)
> +       ("opus" ,opus)
> +       ("ortp" ,ortp)
> +       ("pcap" ,libpcap)
> +       ("portaudio" ,portaudio)
> +       ("pulseaudio" ,pulseaudio)
> +       ("spandsp" ,spandsp)
> +       ("speex" ,speex)
> +       ("speexdsp" ,speexdsp)
> +       ("srtp" ,libsrtp)
> +       ("theora" ,libtheora)
> +       ("turbojpeg" ,libjpeg-turbo)
> +       ("v4l" ,v4l-utils)
> +       ("vpx" ,libvpx)
> +       ("x11" ,libx11)
> +       ("xv" ,libxv)
> +       ("zrtp", bzrtp)))
> +    (synopsis "Belledonne Communications Streaming Engine")
> +    (description "Mediastreamer is a powerful and
> lightweight streaming

There are some strange characters in there (around 'powerful').  Please
edit them out.

Maxim