2020-05-01 21:14:36 -04:00
|
|
|
|
;;; GNU Guix --- Functional package management for GNU
|
|
|
|
|
;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
|
|
|
|
|
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
|
|
|
|
|
;;; Copyright © 2019, 2020 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
|
2022-01-12 21:52:07 -05:00
|
|
|
|
;;; Copyright © 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
2020-05-01 21:14:36 -04:00
|
|
|
|
;;;
|
|
|
|
|
;;; This file is part of GNU Guix.
|
|
|
|
|
;;;
|
|
|
|
|
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
|
|
|
|
;;; under the terms of the GNU General Public License as published by
|
|
|
|
|
;;; the Free Software Foundation; either version 3 of the License, or (at
|
|
|
|
|
;;; your option) any later version.
|
|
|
|
|
;;;
|
|
|
|
|
;;; GNU Guix is distributed in the hope that it will be useful, but
|
|
|
|
|
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
|
;;; GNU General Public License for more details.
|
|
|
|
|
;;;
|
|
|
|
|
;;; You should have received a copy of the GNU General Public License
|
|
|
|
|
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
|
|
(define-module (gnu packages jami)
|
|
|
|
|
#:use-module ((guix licenses) #:prefix license:)
|
|
|
|
|
#:use-module (gnu packages aidc)
|
|
|
|
|
#:use-module (gnu packages audio)
|
|
|
|
|
#:use-module (gnu packages autotools)
|
2020-07-12 12:00:48 -04:00
|
|
|
|
#:use-module (gnu packages backup)
|
2020-05-01 21:14:36 -04:00
|
|
|
|
#:use-module (gnu packages base)
|
2022-01-12 21:52:07 -05:00
|
|
|
|
#:use-module (gnu packages check)
|
2020-05-01 21:14:36 -04:00
|
|
|
|
#:use-module (gnu packages crypto)
|
|
|
|
|
#:use-module (gnu packages documentation)
|
2021-03-30 22:45:34 -04:00
|
|
|
|
#:use-module (gnu packages freedesktop)
|
2020-05-01 21:14:36 -04:00
|
|
|
|
#:use-module (gnu packages gettext)
|
|
|
|
|
#:use-module (gnu packages glib)
|
|
|
|
|
#:use-module (gnu packages gnome)
|
2021-03-31 01:13:57 -04:00
|
|
|
|
#:use-module (gnu packages graphviz)
|
2020-05-01 21:14:36 -04:00
|
|
|
|
#:use-module (gnu packages gtk)
|
2022-01-12 21:52:07 -05:00
|
|
|
|
#:use-module (gnu packages guile)
|
2020-05-01 21:14:36 -04:00
|
|
|
|
#:use-module (gnu packages libcanberra)
|
|
|
|
|
#:use-module (gnu packages linux)
|
|
|
|
|
#:use-module (gnu packages networking)
|
|
|
|
|
#:use-module (gnu packages perl)
|
|
|
|
|
#:use-module (gnu packages pkg-config)
|
|
|
|
|
#:use-module (gnu packages pulseaudio)
|
|
|
|
|
#:use-module (gnu packages python)
|
|
|
|
|
#:use-module (gnu packages qt)
|
|
|
|
|
#:use-module (gnu packages serialization)
|
|
|
|
|
#:use-module (gnu packages sqlite)
|
|
|
|
|
#:use-module (gnu packages telephony)
|
|
|
|
|
#:use-module (gnu packages tls)
|
|
|
|
|
#:use-module (gnu packages upnp)
|
gnu: libring: Update to 20210326.1.cfba013.
* gnu/packages/jami.scm (libring): Update to 20210326.1.cfba013. Remove
trailing #t.
[inputs]: Remove boost, flac, gmp, gsm, libogg, libva, opus, pcre,
libsamplerate, libsndfile, libvorbis, libx264, libvdpau, zlib, python,
python-wrapper, restinio, and libx11. Add libgit2 and webrtc-audio-processing.
[native-inputs]: Remove cppunit. Add gcc-8.
[make-flags]: Add the V=1 flag.
[synopsis]: More explicitly describe what this component is.
[description]: Describe the specifics before the generalities.
2021-03-30 17:02:30 -04:00
|
|
|
|
#:use-module (gnu packages version-control)
|
2020-05-01 21:14:36 -04:00
|
|
|
|
#:use-module (gnu packages video)
|
2022-07-19 12:20:21 -04:00
|
|
|
|
#:use-module (gnu packages vulkan)
|
2020-05-01 21:14:36 -04:00
|
|
|
|
#:use-module (gnu packages webkit)
|
2022-07-19 12:20:21 -04:00
|
|
|
|
#:use-module (gnu packages xdisorg)
|
2020-05-01 21:14:36 -04:00
|
|
|
|
#:use-module (gnu packages xiph)
|
|
|
|
|
#:use-module (gnu packages xorg)
|
|
|
|
|
#:use-module (gnu packages)
|
|
|
|
|
#:use-module (guix build-system cmake)
|
|
|
|
|
#:use-module (guix build-system gnu)
|
2021-03-31 01:13:57 -04:00
|
|
|
|
#:use-module (guix build-system qt)
|
2020-05-01 21:14:36 -04:00
|
|
|
|
#:use-module (guix download)
|
2022-01-12 21:52:07 -05:00
|
|
|
|
#:use-module (guix gexp)
|
2020-05-01 21:14:36 -04:00
|
|
|
|
#:use-module (guix git-download)
|
|
|
|
|
#:use-module (guix packages)
|
gnu: libring: Update to 20210326.1.cfba013.
* gnu/packages/jami.scm (libring): Update to 20210326.1.cfba013. Remove
trailing #t.
[inputs]: Remove boost, flac, gmp, gsm, libogg, libva, opus, pcre,
libsamplerate, libsndfile, libvorbis, libx264, libvdpau, zlib, python,
python-wrapper, restinio, and libx11. Add libgit2 and webrtc-audio-processing.
[native-inputs]: Remove cppunit. Add gcc-8.
[make-flags]: Add the V=1 flag.
[synopsis]: More explicitly describe what this component is.
[description]: Describe the specifics before the generalities.
2021-03-30 17:02:30 -04:00
|
|
|
|
#:use-module (guix utils))
|
2020-05-01 21:14:36 -04:00
|
|
|
|
|
2022-09-17 23:28:45 -04:00
|
|
|
|
(define %jami-version "20220825.0828.c10f01f")
|
2020-05-01 21:14:36 -04:00
|
|
|
|
|
2021-06-07 16:36:27 -04:00
|
|
|
|
(define %jami-sources
|
|
|
|
|
;; Return an origin object of the tarball release sources archive of the
|
|
|
|
|
;; Jami project.
|
2020-05-01 21:14:36 -04:00
|
|
|
|
(origin
|
|
|
|
|
(method url-fetch)
|
2020-05-01 21:14:37 -04:00
|
|
|
|
(uri (string-append "https://dl.jami.net/release/tarballs/jami_"
|
2020-05-01 21:14:36 -04:00
|
|
|
|
%jami-version
|
|
|
|
|
".tar.gz"))
|
|
|
|
|
(modules '((guix build utils)))
|
|
|
|
|
(snippet
|
2020-08-05 23:23:22 -04:00
|
|
|
|
`(begin
|
2020-08-01 15:05:09 -04:00
|
|
|
|
;; Delete multiple MiBs of bundled tarballs. The contrib directory
|
2020-08-05 23:23:22 -04:00
|
|
|
|
;; contains the custom patches for pjproject and other libraries used
|
2021-06-07 16:36:27 -04:00
|
|
|
|
;; by Jami.
|
|
|
|
|
(delete-file-recursively "daemon/contrib/tarballs")
|
|
|
|
|
;; Remove the git submodule directories of unused Jami clients.
|
2020-08-05 23:23:22 -04:00
|
|
|
|
(for-each delete-file-recursively '("client-android"
|
2020-08-01 15:05:09 -04:00
|
|
|
|
"client-ios"
|
2020-08-05 23:23:22 -04:00
|
|
|
|
"client-macosx"
|
2022-07-19 12:20:21 -04:00
|
|
|
|
"plugins"))))
|
2020-05-01 21:14:36 -04:00
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2022-09-17 23:28:45 -04:00
|
|
|
|
"1iv06jb66g206qxm75v7rc3mqvrml1028avflsj11chj8jh63j14"))
|
|
|
|
|
(patches (search-patches "jami-fix-crash-on-block-contact.patch"))))
|
2020-05-01 21:14:36 -04:00
|
|
|
|
|
2021-06-07 16:36:27 -04:00
|
|
|
|
;; Jami maintains a set of patches for some key dependencies (currently
|
|
|
|
|
;; pjproject and ffmpeg) of Jami that haven't yet been integrated upstream.
|
|
|
|
|
;; This procedure simplifies the process of applying them.
|
|
|
|
|
(define jami-apply-custom-patches
|
2022-01-12 21:52:07 -05:00
|
|
|
|
#~(lambda* (#:key dep-name patches)
|
|
|
|
|
(let ((patches-directory "patches"))
|
|
|
|
|
(mkdir-p patches-directory)
|
|
|
|
|
(invoke "tar" "-xvf" #$%jami-sources
|
|
|
|
|
"-C" patches-directory
|
|
|
|
|
"--strip-components=5"
|
2022-07-19 12:20:21 -04:00
|
|
|
|
(string-append "jami-project/daemon/contrib/src/"
|
2022-01-12 21:52:07 -05:00
|
|
|
|
dep-name))
|
|
|
|
|
(for-each
|
|
|
|
|
(lambda (file)
|
|
|
|
|
(invoke "patch" "--force" "--ignore-whitespace" "-p1" "-i"
|
|
|
|
|
(string-append patches-directory "/"
|
|
|
|
|
file ".patch")))
|
|
|
|
|
patches))))
|
2020-05-01 21:14:38 -04:00
|
|
|
|
|
2020-05-01 21:14:36 -04:00
|
|
|
|
(define-public pjproject-jami
|
2022-09-17 23:30:06 -04:00
|
|
|
|
(let ((commit "5e478bbf8692f43059de9c6ad654b377359baaa0")
|
2022-01-12 21:52:07 -05:00
|
|
|
|
(revision "0"))
|
|
|
|
|
(package
|
|
|
|
|
(inherit pjproject)
|
|
|
|
|
(name "pjproject-jami")
|
2022-09-17 23:30:06 -04:00
|
|
|
|
(version (git-version "2.12" revision commit))
|
2022-01-12 21:52:07 -05:00
|
|
|
|
(source (origin
|
|
|
|
|
(inherit (package-source pjproject))
|
|
|
|
|
;; The Jami development team regularly issues patches to
|
|
|
|
|
;; pjproject to extend the its functionality and fix bugs;
|
|
|
|
|
;; they are submitted for inclusion upstream but larger
|
|
|
|
|
;; patches take time to be reviewed and merged, hence this
|
|
|
|
|
;; forked repository.
|
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference
|
|
|
|
|
(url "https://github.com/savoirfairelinux/pjproject")
|
|
|
|
|
(commit commit)))
|
|
|
|
|
(file-name (git-file-name name version))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2022-09-17 23:30:06 -04:00
|
|
|
|
"0n9hyqr57hhbmq35iqq5ihavj22gxzsspv0f8i6ajxwd4029nmcl"))))
|
2022-01-12 21:52:07 -05:00
|
|
|
|
(arguments
|
|
|
|
|
(substitute-keyword-arguments (package-arguments pjproject)
|
|
|
|
|
((#:phases phases '%standard-phases)
|
|
|
|
|
#~(modify-phases #$phases
|
|
|
|
|
(add-after 'unpack 'apply-patches
|
|
|
|
|
(lambda _
|
|
|
|
|
(#$jami-apply-custom-patches
|
|
|
|
|
#:dep-name "pjproject"
|
|
|
|
|
#:patches
|
|
|
|
|
;; This adds a config_site.h configuration file that sets
|
|
|
|
|
;; constants such as PJ_ICE_MAX_CAND that cannot be
|
|
|
|
|
;; configured at build time.
|
|
|
|
|
'("0009-add-config-site")))))))))))
|
2020-05-01 21:14:36 -04:00
|
|
|
|
|
2020-05-14 20:47:05 -04:00
|
|
|
|
;; The following variables are configure flags used by ffmpeg-jami. They're
|
2022-01-12 21:52:07 -05:00
|
|
|
|
;; from the jami-project/daemon/contrib/src/ffmpeg/rules.mak file. We try to
|
2020-05-14 20:47:05 -04:00
|
|
|
|
;; keep it as close to the official Jami package as possible, to provide all
|
2022-01-12 21:52:07 -05:00
|
|
|
|
;; the codecs and extra features that are expected (see:
|
|
|
|
|
;; https://review.jami.net/plugins/gitiles/ring-daemon/+/refs/heads/master/contrib/src/ffmpeg/rules.mak)
|
2020-05-14 20:47:05 -04:00
|
|
|
|
(define %ffmpeg-default-configure-flags
|
|
|
|
|
'("--disable-everything"
|
|
|
|
|
"--enable-zlib"
|
|
|
|
|
"--enable-gpl"
|
|
|
|
|
"--enable-swscale"
|
|
|
|
|
"--enable-bsfs"
|
|
|
|
|
"--disable-filters"
|
|
|
|
|
"--disable-programs"
|
|
|
|
|
"--disable-postproc"
|
|
|
|
|
"--disable-protocols"
|
|
|
|
|
"--enable-protocol=crypto"
|
|
|
|
|
"--enable-protocol=file"
|
|
|
|
|
"--enable-protocol=rtp"
|
|
|
|
|
"--enable-protocol=srtp"
|
|
|
|
|
"--enable-protocol=tcp"
|
|
|
|
|
"--enable-protocol=udp"
|
|
|
|
|
"--enable-protocol=unix"
|
|
|
|
|
"--enable-protocol=pipe"
|
|
|
|
|
|
2022-01-12 21:52:07 -05:00
|
|
|
|
;; Enable muxers/demuxers.
|
2020-05-14 20:47:05 -04:00
|
|
|
|
"--disable-demuxers"
|
|
|
|
|
"--disable-muxers"
|
|
|
|
|
"--enable-muxer=rtp"
|
|
|
|
|
"--enable-muxer=g722"
|
2022-07-19 12:20:21 -04:00
|
|
|
|
"--enable-muxer=g726"
|
|
|
|
|
"--enable-muxer=g726le"
|
2020-05-14 20:47:05 -04:00
|
|
|
|
"--enable-muxer=h263"
|
|
|
|
|
"--enable-muxer=h264"
|
|
|
|
|
"--enable-muxer=hevc"
|
2022-07-19 15:30:00 -04:00
|
|
|
|
"--enable-muxer=matroska"
|
2020-05-14 20:47:05 -04:00
|
|
|
|
"--enable-muxer=webm"
|
|
|
|
|
"--enable-muxer=ogg"
|
|
|
|
|
"--enable-muxer=pcm_s16be"
|
|
|
|
|
"--enable-muxer=pcm_s16le"
|
|
|
|
|
"--enable-demuxer=rtp"
|
|
|
|
|
"--enable-demuxer=mjpeg"
|
|
|
|
|
"--enable-demuxer=mjpeg_2000"
|
|
|
|
|
"--enable-demuxer=mpegvideo"
|
|
|
|
|
"--enable-demuxer=gif"
|
|
|
|
|
"--enable-demuxer=image_jpeg_pipe"
|
|
|
|
|
"--enable-demuxer=image_png_pipe"
|
|
|
|
|
"--enable-demuxer=image_webp_pipe"
|
|
|
|
|
"--enable-demuxer=matroska"
|
|
|
|
|
"--enable-demuxer=m4v"
|
|
|
|
|
"--enable-demuxer=mp3"
|
|
|
|
|
"--enable-demuxer=ogg"
|
|
|
|
|
"--enable-demuxer=flac"
|
|
|
|
|
"--enable-demuxer=wav"
|
|
|
|
|
"--enable-demuxer=ac3"
|
|
|
|
|
"--enable-demuxer=g722"
|
2022-07-19 12:20:21 -04:00
|
|
|
|
"--enable-demuxer=g723_1"
|
|
|
|
|
"--enable-demuxer=g726"
|
|
|
|
|
"--enable-demuxer=g726le"
|
2020-05-14 20:47:05 -04:00
|
|
|
|
"--enable-demuxer=pcm_mulaw"
|
|
|
|
|
"--enable-demuxer=pcm_alaw"
|
|
|
|
|
"--enable-demuxer=pcm_s16be"
|
|
|
|
|
"--enable-demuxer=pcm_s16le"
|
|
|
|
|
"--enable-demuxer=h263"
|
|
|
|
|
"--enable-demuxer=h264"
|
|
|
|
|
"--enable-demuxer=hevc"
|
|
|
|
|
|
2022-01-12 21:52:07 -05:00
|
|
|
|
;; Enable parsers.
|
2020-05-14 20:47:05 -04:00
|
|
|
|
"--enable-parser=h263"
|
|
|
|
|
"--enable-parser=h264"
|
|
|
|
|
"--enable-parser=hevc"
|
|
|
|
|
"--enable-parser=mpeg4video"
|
|
|
|
|
"--enable-parser=vp8"
|
|
|
|
|
"--enable-parser=vp9"
|
|
|
|
|
"--enable-parser=opus"
|
|
|
|
|
|
2022-01-12 21:52:07 -05:00
|
|
|
|
;; Encoders/decoders.
|
2020-05-14 20:47:05 -04:00
|
|
|
|
"--enable-encoder=adpcm_g722"
|
|
|
|
|
"--enable-decoder=adpcm_g722"
|
2022-07-19 12:20:21 -04:00
|
|
|
|
"--enable-encoder=adpcm_g726"
|
|
|
|
|
"--enable-decoder=adpcm_g726"
|
|
|
|
|
"--enable-encoder=adpcm_g726le"
|
|
|
|
|
"--enable-decoder=adpcm_g726le"
|
|
|
|
|
"--enable-decoder=g729"
|
|
|
|
|
"--enable-encoder=g723_1"
|
|
|
|
|
"--enable-decoder=g723_1"
|
2020-05-14 20:47:05 -04:00
|
|
|
|
"--enable-encoder=rawvideo"
|
|
|
|
|
"--enable-decoder=rawvideo"
|
|
|
|
|
"--enable-encoder=libx264"
|
|
|
|
|
"--enable-decoder=h264"
|
|
|
|
|
"--enable-encoder=pcm_alaw"
|
|
|
|
|
"--enable-decoder=pcm_alaw"
|
|
|
|
|
"--enable-encoder=pcm_mulaw"
|
|
|
|
|
"--enable-decoder=pcm_mulaw"
|
|
|
|
|
"--enable-encoder=mpeg4"
|
|
|
|
|
"--enable-decoder=mpeg4"
|
|
|
|
|
"--enable-encoder=libvpx_vp8"
|
|
|
|
|
"--enable-decoder=vp8"
|
|
|
|
|
"--enable-decoder=vp9"
|
|
|
|
|
"--enable-encoder=h263"
|
|
|
|
|
"--enable-encoder=h263p"
|
|
|
|
|
"--enable-decoder=h263"
|
|
|
|
|
"--enable-encoder=mjpeg"
|
|
|
|
|
"--enable-decoder=mjpeg"
|
|
|
|
|
"--enable-decoder=mjpegb"
|
|
|
|
|
"--enable-libspeex"
|
|
|
|
|
"--enable-libopus"
|
|
|
|
|
"--enable-libvpx"
|
|
|
|
|
"--enable-libx264"
|
|
|
|
|
"--enable-encoder=libspeex"
|
|
|
|
|
"--enable-decoder=libspeex"
|
|
|
|
|
"--enable-encoder=libopus"
|
|
|
|
|
"--enable-decoder=libopus"
|
|
|
|
|
|
2022-01-12 21:52:07 -05:00
|
|
|
|
;; Decoders for ringtones and audio streaming.
|
2020-05-14 20:47:05 -04:00
|
|
|
|
"--enable-decoder=flac"
|
|
|
|
|
"--enable-decoder=vorbis"
|
|
|
|
|
"--enable-decoder=aac"
|
|
|
|
|
"--enable-decoder=ac3"
|
|
|
|
|
"--enable-decoder=eac3"
|
|
|
|
|
"--enable-decoder=mp3"
|
|
|
|
|
"--enable-decoder=pcm_u24be"
|
|
|
|
|
"--enable-decoder=pcm_u24le"
|
|
|
|
|
"--enable-decoder=pcm_u32be"
|
|
|
|
|
"--enable-decoder=pcm_u32le"
|
|
|
|
|
"--enable-decoder=pcm_u8"
|
|
|
|
|
"--enable-decoder=pcm_f16le"
|
|
|
|
|
"--enable-decoder=pcm_f24le"
|
|
|
|
|
"--enable-decoder=pcm_f32be"
|
|
|
|
|
"--enable-decoder=pcm_f32le"
|
|
|
|
|
"--enable-decoder=pcm_f64be"
|
|
|
|
|
"--enable-decoder=pcm_f64le"
|
|
|
|
|
"--enable-decoder=pcm_s16be"
|
|
|
|
|
"--enable-decoder=pcm_s16be_planar"
|
|
|
|
|
"--enable-decoder=pcm_s16le"
|
|
|
|
|
"--enable-decoder=pcm_s16le_planar"
|
|
|
|
|
"--enable-decoder=pcm_s24be"
|
|
|
|
|
"--enable-decoder=pcm_s24le"
|
|
|
|
|
"--enable-decoder=pcm_s24le_planar"
|
|
|
|
|
"--enable-decoder=pcm_s32be"
|
|
|
|
|
"--enable-decoder=pcm_s32le"
|
|
|
|
|
"--enable-decoder=pcm_s32le_planar"
|
|
|
|
|
"--enable-decoder=pcm_s64be"
|
|
|
|
|
"--enable-decoder=pcm_s64le"
|
|
|
|
|
"--enable-decoder=pcm_s8"
|
|
|
|
|
"--enable-decoder=pcm_s8_planar"
|
|
|
|
|
"--enable-decoder=pcm_u16be"
|
|
|
|
|
"--enable-decoder=pcm_u16le"
|
|
|
|
|
|
2022-01-12 21:52:07 -05:00
|
|
|
|
;; Encoders/decoders for images.
|
2020-05-14 20:47:05 -04:00
|
|
|
|
"--enable-encoder=gif"
|
|
|
|
|
"--enable-decoder=gif"
|
|
|
|
|
"--enable-encoder=jpegls"
|
|
|
|
|
"--enable-decoder=jpegls"
|
|
|
|
|
"--enable-encoder=ljpeg"
|
|
|
|
|
"--enable-decoder=jpeg2000"
|
|
|
|
|
"--enable-encoder=png"
|
|
|
|
|
"--enable-decoder=png"
|
|
|
|
|
"--enable-encoder=bmp"
|
|
|
|
|
"--enable-decoder=bmp"
|
|
|
|
|
"--enable-encoder=tiff"
|
|
|
|
|
"--enable-decoder=tiff"
|
|
|
|
|
|
2022-01-12 21:52:07 -05:00
|
|
|
|
;; Filters.
|
2020-05-14 20:47:05 -04:00
|
|
|
|
"--enable-filter=scale"
|
|
|
|
|
"--enable-filter=overlay"
|
|
|
|
|
"--enable-filter=amix"
|
|
|
|
|
"--enable-filter=amerge"
|
|
|
|
|
"--enable-filter=aresample"
|
|
|
|
|
"--enable-filter=format"
|
|
|
|
|
"--enable-filter=aformat"
|
|
|
|
|
"--enable-filter=fps"
|
|
|
|
|
"--enable-filter=transpose"
|
|
|
|
|
"--enable-filter=pad"))
|
|
|
|
|
|
|
|
|
|
(define %ffmpeg-linux-configure-flags
|
|
|
|
|
'("--enable-pic"
|
|
|
|
|
"--extra-cxxflags=-fPIC"
|
|
|
|
|
"--extra-cflags=-fPIC"
|
|
|
|
|
"--target-os=linux"
|
|
|
|
|
"--enable-indev=v4l2"
|
|
|
|
|
"--enable-indev=xcbgrab"
|
|
|
|
|
"--enable-vdpau"
|
|
|
|
|
"--enable-hwaccel=h264_vdpau"
|
|
|
|
|
"--enable-hwaccel=mpeg4_vdpau"
|
|
|
|
|
"--enable-vaapi"
|
|
|
|
|
"--enable-hwaccel=h264_vaapi"
|
|
|
|
|
"--enable-hwaccel=mpeg4_vaapi"
|
|
|
|
|
"--enable-hwaccel=h263_vaapi"
|
|
|
|
|
"--enable-hwaccel=vp8_vaapi"
|
|
|
|
|
"--enable-hwaccel=mjpeg_vaapi"
|
|
|
|
|
"--enable-hwaccel=hevc_vaapi"
|
|
|
|
|
"--enable-encoder=h264_vaapi"
|
|
|
|
|
"--enable-encoder=vp8_vaapi"
|
|
|
|
|
"--enable-encoder=mjpeg_vaapi"
|
|
|
|
|
"--enable-encoder=hevc_vaapi"))
|
|
|
|
|
|
2022-01-12 21:52:07 -05:00
|
|
|
|
;; ffnvcodec is not supported on ARM; enable it only for the i386 and x86_64
|
|
|
|
|
;; architectures.
|
2020-05-14 20:47:05 -04:00
|
|
|
|
(define %ffmpeg-linux-x86-configure-flags
|
|
|
|
|
'("--arch=x86"
|
|
|
|
|
"--enable-cuvid"
|
|
|
|
|
"--enable-ffnvcodec"
|
|
|
|
|
"--enable-nvdec"
|
|
|
|
|
"--enable-nvenc"
|
|
|
|
|
"--enable-hwaccel=h264_nvdec"
|
|
|
|
|
"--enable-hwaccel=hevc_nvdec"
|
|
|
|
|
"--enable-hwaccel=vp8_nvdec"
|
|
|
|
|
"--enable-hwaccel=mjpeg_nvdec"
|
|
|
|
|
"--enable-encoder=h264_nvenc"
|
|
|
|
|
"--enable-encoder=hevc_nvenc"))
|
|
|
|
|
|
|
|
|
|
;; This procedure composes the configure flags list for ffmpeg-jami.
|
|
|
|
|
(define (ffmpeg-compose-configure-flags)
|
|
|
|
|
(define (system=? s)
|
|
|
|
|
(string-prefix? s (%current-system)))
|
|
|
|
|
|
|
|
|
|
`(,@%ffmpeg-default-configure-flags
|
|
|
|
|
,@(if (string-contains (%current-system) "linux")
|
|
|
|
|
(if (or (system=? "i686")
|
|
|
|
|
(system=? "x86_64"))
|
|
|
|
|
(append %ffmpeg-linux-configure-flags
|
|
|
|
|
%ffmpeg-linux-x86-configure-flags)
|
|
|
|
|
%ffmpeg-linux-configure-flags)
|
|
|
|
|
'())))
|
|
|
|
|
|
|
|
|
|
(define-public ffmpeg-jami
|
2022-09-17 23:31:34 -04:00
|
|
|
|
(package
|
|
|
|
|
(inherit ffmpeg-5)
|
2020-05-14 20:47:05 -04:00
|
|
|
|
(name "ffmpeg-jami")
|
2022-09-17 23:31:34 -04:00
|
|
|
|
;; XXX: Use a slightly older version, otherwise the
|
|
|
|
|
;; 'libopusdec-enable-FEC' patch doesn't apply.
|
|
|
|
|
(version "5.0.1")
|
|
|
|
|
(source (origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
|
|
|
|
|
version ".tar.xz"))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
|
|
|
|
"0yq0jcdc4qm5znrzylj3dsicrkk2n3n8bv28vr0a506fb7iglbpg"))))
|
2020-05-14 20:47:05 -04:00
|
|
|
|
(arguments
|
2022-09-17 23:31:34 -04:00
|
|
|
|
(substitute-keyword-arguments (package-arguments ffmpeg-5)
|
2022-01-12 21:52:07 -05:00
|
|
|
|
((#:configure-flags '())
|
|
|
|
|
(ffmpeg-compose-configure-flags))
|
|
|
|
|
((#:phases phases)
|
|
|
|
|
#~(modify-phases #$phases
|
2020-05-14 20:47:05 -04:00
|
|
|
|
(add-after 'unpack 'apply-patches
|
2022-01-12 21:52:07 -05:00
|
|
|
|
(lambda _
|
2021-06-07 16:36:27 -04:00
|
|
|
|
;; These patches come from:
|
2022-01-12 21:52:07 -05:00
|
|
|
|
;; "jami-project/daemon/contrib/src/ffmpeg/rules.mak".
|
|
|
|
|
(#$jami-apply-custom-patches
|
|
|
|
|
#:dep-name "ffmpeg"
|
2021-06-07 16:36:27 -04:00
|
|
|
|
#:patches '("remove-mjpeg-log"
|
|
|
|
|
"change-RTCP-ratio"
|
|
|
|
|
"rtp_ext_abs_send_time"
|
|
|
|
|
"libopusdec-enable-FEC"
|
2022-07-19 12:20:21 -04:00
|
|
|
|
"libopusenc-reload-packet-loss-at-encode"
|
2022-09-17 23:31:34 -04:00
|
|
|
|
"screen-sharing-x11-fix"))))
|
|
|
|
|
(add-after 'apply-patches 'disable-problematic-tests
|
|
|
|
|
(lambda _
|
|
|
|
|
;; The "rtp_ext_abs_send_time" patch causes the 'lavf-mov_rtphint'
|
|
|
|
|
;; test to fail (see:
|
|
|
|
|
;; https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/685).
|
|
|
|
|
(substitute* "tests/fate/lavf-container.mak"
|
|
|
|
|
(("mov mov_rtphint ismv")
|
|
|
|
|
"mov ismv")
|
|
|
|
|
(("fate-lavf-mov_rtphint:.*") ""))))))))))
|
2020-05-14 20:47:05 -04:00
|
|
|
|
|
2022-01-12 21:52:07 -05:00
|
|
|
|
(define-public libjami
|
2020-05-01 21:14:36 -04:00
|
|
|
|
(package
|
2022-01-12 21:52:07 -05:00
|
|
|
|
(name "libjami")
|
2020-05-01 21:14:36 -04:00
|
|
|
|
(version %jami-version)
|
2020-08-05 23:23:22 -04:00
|
|
|
|
(source %jami-sources)
|
2021-04-02 12:38:29 -04:00
|
|
|
|
(outputs '("out" "debug"))
|
2022-01-12 21:52:07 -05:00
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
|
(arguments
|
|
|
|
|
(list
|
2022-07-19 15:49:35 -04:00
|
|
|
|
;; The test suite fails to link when building libjami as a shared
|
|
|
|
|
;; library: "sip_account/sip_empty_offer.cpp:228:1: error: no
|
|
|
|
|
;; declaration matches ‘void
|
|
|
|
|
;; jami::test::SipEmptyOfferTest::onCallStateChange(const string&, const
|
|
|
|
|
;; string&, jami::test::CallData&)’".
|
2022-01-12 21:52:07 -05:00
|
|
|
|
#:tests? #f
|
|
|
|
|
;; The agent links the daemon binary with libguile, which enables the
|
|
|
|
|
;; execution of test plans described in Scheme. It may be useful in
|
2022-07-19 12:20:21 -04:00
|
|
|
|
;; user scripts too, until more general purpose Scheme bindings are made
|
|
|
|
|
;; available (see: test/agent/README.md).
|
2022-07-19 15:49:35 -04:00
|
|
|
|
#:configure-flags #~(list "--enable-agent"
|
2022-07-19 12:20:21 -04:00
|
|
|
|
"--enable-debug"
|
|
|
|
|
;; Disable static libraries to avoid
|
|
|
|
|
;; installing a 98 MiB archive.
|
|
|
|
|
"--disable-static")
|
2022-01-12 21:52:07 -05:00
|
|
|
|
#:make-flags #~(list "V=1") ;build verbosely
|
|
|
|
|
#:phases
|
|
|
|
|
#~(modify-phases %standard-phases
|
|
|
|
|
(add-after 'unpack 'change-directory/maybe
|
|
|
|
|
(lambda _
|
|
|
|
|
;; Allow building from the tarball or a git checkout.
|
|
|
|
|
(false-if-exception (chdir "daemon")))))))
|
2020-05-01 21:14:36 -04:00
|
|
|
|
(inputs
|
2022-01-12 21:52:07 -05:00
|
|
|
|
(list alsa-lib
|
|
|
|
|
asio
|
|
|
|
|
dbus-c++
|
|
|
|
|
eudev
|
|
|
|
|
ffmpeg-jami
|
|
|
|
|
guile-3.0
|
|
|
|
|
jack-1
|
|
|
|
|
jsoncpp
|
|
|
|
|
libarchive
|
|
|
|
|
libgit2
|
|
|
|
|
libnatpmp
|
|
|
|
|
libsecp256k1
|
|
|
|
|
libupnp
|
|
|
|
|
opendht
|
|
|
|
|
openssl
|
|
|
|
|
pjproject-jami
|
|
|
|
|
pulseaudio
|
|
|
|
|
speex
|
|
|
|
|
speexdsp
|
|
|
|
|
webrtc-audio-processing
|
|
|
|
|
yaml-cpp))
|
2020-05-01 21:14:36 -04:00
|
|
|
|
(native-inputs
|
2021-12-13 11:18:24 -05:00
|
|
|
|
(list autoconf
|
|
|
|
|
automake
|
2022-01-12 21:52:07 -05:00
|
|
|
|
cppunit
|
2021-12-13 11:18:24 -05:00
|
|
|
|
libtool
|
2022-01-12 21:52:07 -05:00
|
|
|
|
perl ;to generate manpages with pod2man
|
2021-12-13 11:18:24 -05:00
|
|
|
|
pkg-config
|
|
|
|
|
which))
|
gnu: libring: Update to 20210326.1.cfba013.
* gnu/packages/jami.scm (libring): Update to 20210326.1.cfba013. Remove
trailing #t.
[inputs]: Remove boost, flac, gmp, gsm, libogg, libva, opus, pcre,
libsamplerate, libsndfile, libvorbis, libx264, libvdpau, zlib, python,
python-wrapper, restinio, and libx11. Add libgit2 and webrtc-audio-processing.
[native-inputs]: Remove cppunit. Add gcc-8.
[make-flags]: Add the V=1 flag.
[synopsis]: More explicitly describe what this component is.
[description]: Describe the specifics before the generalities.
2021-03-30 17:02:30 -04:00
|
|
|
|
(synopsis "Jami core library and daemon")
|
|
|
|
|
(description "This package provides a library and daemon implementing the
|
|
|
|
|
Jami core functionality. Jami is a secure and distributed voice, video and
|
|
|
|
|
chat communication platform that requires no centralized server and leaves the
|
|
|
|
|
power of privacy in the hands of the user. It supports the SIP and IAX
|
|
|
|
|
protocols, as well as decentralized calling using P2P-DHT.")
|
2020-05-01 21:14:36 -04:00
|
|
|
|
(home-page "https://jami.net/")
|
|
|
|
|
(license license:gpl3+)))
|
|
|
|
|
|
2022-01-12 21:52:07 -05:00
|
|
|
|
;;; Remove when 2023 comes.
|
|
|
|
|
(define-public libring
|
|
|
|
|
(deprecated-package "libring" libjami))
|
|
|
|
|
|
2021-03-30 22:45:34 -04:00
|
|
|
|
(define-public jami
|
2021-03-31 01:13:57 -04:00
|
|
|
|
(package
|
2022-01-12 21:52:07 -05:00
|
|
|
|
(name "jami")
|
2021-03-31 01:13:57 -04:00
|
|
|
|
(version %jami-version)
|
2022-01-27 13:57:54 -05:00
|
|
|
|
(source %jami-sources)
|
2021-03-31 01:13:57 -04:00
|
|
|
|
(build-system qt-build-system)
|
2021-04-02 12:38:29 -04:00
|
|
|
|
(outputs '("out" "debug"))
|
2021-03-31 01:13:57 -04:00
|
|
|
|
(arguments
|
2022-07-25 16:46:42 -04:00
|
|
|
|
(list
|
|
|
|
|
#:qtbase qtbase
|
|
|
|
|
#:tests? #f ;see comment below
|
|
|
|
|
#:configure-flags
|
|
|
|
|
;; The test suite fails to build with:
|
|
|
|
|
;; "../../../client-qt/src/app/utils.h:29:10: fatal error: QLabel: No
|
|
|
|
|
;; such file or directory".
|
|
|
|
|
#~(list "-DENABLE_TESTS=OFF"
|
|
|
|
|
"-DWITH_WEBENGINE=OFF" ;reduce transitive closure size by 450 MiB
|
|
|
|
|
;; Use libwrap to link directly to libjami instead of
|
|
|
|
|
;; communicating via D-Bus to jamid, the Jami daemon.
|
|
|
|
|
"-DENABLE_LIBWRAP=ON"
|
|
|
|
|
(string-append "-DLIBJAMI_XML_INTERFACES_DIR="
|
|
|
|
|
#$(this-package-input "libjami")
|
|
|
|
|
"/share/dbus-1/interfaces")
|
|
|
|
|
(string-append "-DLIBJAMI_INCLUDE_DIR="
|
|
|
|
|
#$(this-package-input "libjami") "/include/jami"))
|
|
|
|
|
#:phases
|
|
|
|
|
#~(modify-phases %standard-phases
|
|
|
|
|
(add-after 'unpack 'change-directory/maybe
|
|
|
|
|
(lambda _
|
|
|
|
|
;; Allow building from the tarball or a git checkout.
|
|
|
|
|
(false-if-exception (chdir "client-qt"))))
|
|
|
|
|
(add-after 'change-directory/maybe 'fix-version-string
|
|
|
|
|
(lambda _
|
|
|
|
|
(substitute* "src/app/version.h"
|
|
|
|
|
(("VERSION_STRING")
|
|
|
|
|
"BUILD_DATE") ;to avoid a redefinition error
|
|
|
|
|
(("// clang-format on.*" anchor)
|
|
|
|
|
(string-append "const char VERSION_STRING[] = \""
|
|
|
|
|
#$version "\";\n"
|
|
|
|
|
anchor)))))
|
|
|
|
|
(add-after 'change-directory/maybe 'patch-source
|
|
|
|
|
(lambda _
|
|
|
|
|
(substitute* "src/libclient/CMakeLists.txt"
|
|
|
|
|
;; Fix submitted upstream (see:
|
|
|
|
|
;; https://review.jami.net/c/jami-client-qt/+/21830).
|
|
|
|
|
(("target_link_libraries\\(\\$\\{LIBCLIENT_NAME} qtwrapper.*" all)
|
|
|
|
|
(string-append
|
|
|
|
|
all " target_link_libraries(${LIBCLIENT_NAME} avutil)\n"))))))))
|
2021-03-31 01:13:57 -04:00
|
|
|
|
(native-inputs
|
2022-07-25 16:46:42 -04:00
|
|
|
|
(list googletest
|
|
|
|
|
pkg-config
|
|
|
|
|
python
|
|
|
|
|
qttools
|
|
|
|
|
doxygen
|
|
|
|
|
graphviz
|
|
|
|
|
vulkan-headers))
|
2021-03-31 01:13:57 -04:00
|
|
|
|
(inputs
|
2022-07-25 16:46:42 -04:00
|
|
|
|
(list ffmpeg-jami
|
|
|
|
|
libjami
|
|
|
|
|
libnotify
|
|
|
|
|
libxkbcommon
|
2021-12-13 11:18:24 -05:00
|
|
|
|
network-manager
|
|
|
|
|
qrencode
|
2022-07-25 16:46:42 -04:00
|
|
|
|
qt5compat
|
|
|
|
|
qtdeclarative
|
|
|
|
|
qtmultimedia
|
|
|
|
|
qtnetworkauth
|
|
|
|
|
qtpositioning
|
|
|
|
|
qtsvg
|
|
|
|
|
vulkan-loader))
|
2021-03-31 01:13:57 -04:00
|
|
|
|
(home-page "https://jami.net")
|
|
|
|
|
(synopsis "Qt Jami client")
|
|
|
|
|
(description "This package provides the Jami Qt client. Jami is a secure
|
|
|
|
|
and distributed voice, video and chat communication platform that requires no
|
|
|
|
|
centralized server and leaves the power of privacy in the hands of the user.
|
|
|
|
|
It supports the SIP and IAX protocols, as well as decentralized calling using
|
|
|
|
|
P2P-DHT.")
|
|
|
|
|
(license license:gpl3+)))
|
2022-01-12 21:52:07 -05:00
|
|
|
|
|
2022-07-25 16:42:49 -04:00
|
|
|
|
;;; Remove when 2023 comes.
|
|
|
|
|
(define-public jami-gnome
|
|
|
|
|
(deprecated-package "jami-gnome" jami))
|
|
|
|
|
|
2022-01-12 21:52:07 -05:00
|
|
|
|
;;; Remove when 2023 comes.
|
|
|
|
|
(define-public jami-qt
|
|
|
|
|
(deprecated-package "jami-qt" jami))
|