me
/
guix
Archived
1
0
Fork 0

gnu: jami: Update to 20211223.2.37be4c3.

* gnu/packages/patches/pjproject-correct-the-cflags-field.patch: Delete file.
* gnu/packages/patches/pjproject-fix-pkg-config-ldflags.patch: Likewise.
* gnu/local.mk (dist_patch_DATA): De-register them.
* gnu/packages/jami.scm (%jami-version): Update version string.
(%jami-sources): Adjust snippet.
(jami-apply-custom-patches): Use G-Exp.
(pjproject-jami): Use Savoir-faire Linux's fork and update to 2.11-0.e1f389d.
[phases]: Adjust and update accordingly.
(%ffmpeg-default-configure-flags): Capitalize and reword comments.
(ffmpeg-jami)[native-inputs]: Delete field.
[tests?]: Add comment and move into the SUBSTITUTE-KEYWORD-ARGUMENTS use.
[phases]: Use G-Exp and update the list of patches.
(libring): Deprecate and rename to...
(libjami): ... this.  Move the arguments field before the inputs.
[tests?]: Add explanatory comment.
[configure-flags]: Add '--disable-agent', with explanatory comment.
[phases]{change-directory}: Rename to...
{change-directory/maybe}: ... this, to attempt but not enforce a directory
change so as to also support using a Git checkout as source.
{add-lib-dir}: Remove phase.
[inputs]: Use new style.
[native-inputs]: Add cppunit.
(libringclient): Deprecate and rename to...
{jami-libclient}: ... this.
[configure-flags]: Enable LIBWRAP.
[phases]{change-directory/maybe}: Renamed from change-directory, for reasons
described above.
[inputs]: Adjust accordingly.
(jami-gnome): Move the input fields below the arguments field.
[phases]{change-directory/maybe}: Renamed from change-directory, for reasons
described above.
[inputs]: Rename libringclient to jami-libclient and use new style.
[native-inputs]: Use new style.
[propagated-inputs]: Delete field.
(jami-qt): Deprecate and rename to...
(jami): ... this.
[phases]{change-directory/maybe}: Renamed from change-directory, for reasons
described above.
[native-inputs]: Add python.
[inputs]: Adjust accordingly.
[propagated-inputs]: Delete field.
Maxim Cournoyer 2022-01-12 21:52:07 -05:00
parent f4920f62bd
commit 1ed66d1461
No known key found for this signature in database
GPG Key ID: 1260E46482E63562
4 changed files with 197 additions and 406 deletions

View File

@ -1628,8 +1628,6 @@ dist_patch_DATA = \
%D%/packages/patches/pingus-sdl-libs-config.patch \ %D%/packages/patches/pingus-sdl-libs-config.patch \
%D%/packages/patches/pipewire-0.2.7-fno-common.patch \ %D%/packages/patches/pipewire-0.2.7-fno-common.patch \
%D%/packages/patches/pixman-CVE-2016-5296.patch \ %D%/packages/patches/pixman-CVE-2016-5296.patch \
%D%/packages/patches/pjproject-correct-the-cflags-field.patch \
%D%/packages/patches/pjproject-fix-pkg-config-ldflags.patch \
%D%/packages/patches/plink-1.07-unclobber-i.patch \ %D%/packages/patches/plink-1.07-unclobber-i.patch \
%D%/packages/patches/plink-endian-detection.patch \ %D%/packages/patches/plink-endian-detection.patch \
%D%/packages/patches/plib-CVE-2011-4620.patch \ %D%/packages/patches/plib-CVE-2011-4620.patch \

View File

@ -2,7 +2,7 @@
;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz> ;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
;;; Copyright © 2019, 2020 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl> ;;; Copyright © 2019, 2020 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -26,6 +26,7 @@
#:use-module (gnu packages autotools) #:use-module (gnu packages autotools)
#:use-module (gnu packages backup) #:use-module (gnu packages backup)
#:use-module (gnu packages base) #:use-module (gnu packages base)
#:use-module (gnu packages check)
#:use-module (gnu packages crypto) #:use-module (gnu packages crypto)
#:use-module (gnu packages documentation) #:use-module (gnu packages documentation)
#:use-module (gnu packages freedesktop) #:use-module (gnu packages freedesktop)
@ -34,6 +35,7 @@
#:use-module (gnu packages gnome) #:use-module (gnu packages gnome)
#:use-module (gnu packages graphviz) #:use-module (gnu packages graphviz)
#:use-module (gnu packages gtk) #:use-module (gnu packages gtk)
#:use-module (gnu packages guile)
#:use-module (gnu packages libcanberra) #:use-module (gnu packages libcanberra)
#:use-module (gnu packages linux) #:use-module (gnu packages linux)
#:use-module (gnu packages networking) #:use-module (gnu packages networking)
@ -57,11 +59,12 @@
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (guix build-system qt) #:use-module (guix build-system qt)
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix gexp)
#:use-module (guix git-download) #:use-module (guix git-download)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix utils)) #:use-module (guix utils))
(define %jami-version "20210606.1.e2f9490") (define %jami-version "20211223.2.37be4c3")
(define %jami-sources (define %jami-sources
;; Return an origin object of the tarball release sources archive of the ;; Return an origin object of the tarball release sources archive of the
@ -80,94 +83,73 @@
(delete-file-recursively "daemon/contrib/tarballs") (delete-file-recursively "daemon/contrib/tarballs")
;; Remove the git submodule directories of unused Jami clients. ;; Remove the git submodule directories of unused Jami clients.
(for-each delete-file-recursively '("client-android" (for-each delete-file-recursively '("client-android"
"client-electron"
"client-ios" "client-ios"
"client-macosx" "client-macosx"
"client-uwp")))) "client-uwp"))))
(sha256 (sha256
(base32 (base32
"1vpxv2dk3l9cahv6mxd2754pxs9mzrid5bgwvl6k1byzpq8y4smr")))) "12h4a0nj3gh05w64gkywrrb64agrhn6y3q4b9cqnhvr1vdkzlj0h"))))
;; Jami maintains a set of patches for some key dependencies (currently ;; Jami maintains a set of patches for some key dependencies (currently
;; pjproject and ffmpeg) of Jami that haven't yet been integrated upstream. ;; pjproject and ffmpeg) of Jami that haven't yet been integrated upstream.
;; This procedure simplifies the process of applying them. ;; This procedure simplifies the process of applying them.
(define jami-apply-custom-patches (define jami-apply-custom-patches
'(lambda* (#:key inputs dep-name patches) #~(lambda* (#:key dep-name patches)
(let ((patches-directory "patches")) (let ((patches-directory "patches"))
(mkdir-p patches-directory) (mkdir-p patches-directory)
(invoke "tar" "-xvf" (assoc-ref inputs "jami-sources") (invoke "tar" "-xvf" #$%jami-sources
"-C" patches-directory "-C" patches-directory
"--strip-components=5" "--strip-components=5"
(string-append "ring-project/daemon/contrib/src/" (string-append "ring-project/daemon/contrib/src/"
dep-name)) dep-name))
(for-each (for-each
(lambda (file) (lambda (file)
(invoke "patch" "--force" "--ignore-whitespace" "-p1" "-i" (invoke "patch" "--force" "--ignore-whitespace" "-p1" "-i"
(string-append patches-directory "/" (string-append patches-directory "/"
file ".patch"))) file ".patch")))
patches)))) patches))))
;;; Jami maintains pjproject patches that add the ability to do ICE over TCP,
;;; among other things. The patches are currently based on pjproject 2.10.
(define-public pjproject-jami (define-public pjproject-jami
(package (let ((commit "e1f389d0b905011e0cb62cbdf7a8b37fc1bcde1a")
(inherit pjproject) (revision "0"))
(name "pjproject-jami") (package
(version "2.10") (inherit pjproject)
(source (origin (name "pjproject-jami")
(method git-fetch) (version (git-version "2.11" revision commit))
(uri (git-reference (source (origin
(url "https://github.com/pjsip/pjproject") (inherit (package-source pjproject))
(commit version))) ;; The Jami development team regularly issues patches to
(file-name (git-file-name name version)) ;; pjproject to extend the its functionality and fix bugs;
(sha256 ;; they are submitted for inclusion upstream but larger
(base32 ;; patches take time to be reviewed and merged, hence this
"1aklicpgwc88578k03i5d5cm5h8mfm7hmx8vfprchbmaa2p8f4z0")) ;; forked repository.
(patches (search-patches (method git-fetch)
"pjproject-correct-the-cflags-field.patch" (uri (git-reference
"pjproject-fix-pkg-config-ldflags.patch")))) (url "https://github.com/savoirfairelinux/pjproject")
(native-inputs (commit commit)))
`(("jami-sources" ,%jami-sources) (file-name (git-file-name name version))
,@(package-native-inputs pjproject))) (sha256
(arguments (base32
(substitute-keyword-arguments (package-arguments pjproject) "0inpmyb6mhrzr0g309d6clkc99lddqdvyf9xajz0igvgp9pvgpza"))))
((#:phases phases '%standard-phases) (arguments
`(modify-phases ,phases (substitute-keyword-arguments (package-arguments pjproject)
(add-after 'make-source-files-writable 'apply-patches ((#:phases phases '%standard-phases)
(lambda* (#:key inputs #:allow-other-keys) #~(modify-phases #$phases
(,jami-apply-custom-patches (add-after 'unpack 'apply-patches
#:inputs inputs (lambda _
#:dep-name "pjproject" (#$jami-apply-custom-patches
#:patches #:dep-name "pjproject"
'("0001-rfc6544" #:patches
"0002-rfc2466" ;; This adds a config_site.h configuration file that sets
"0003-add-tcp-keep-alive" ;; constants such as PJ_ICE_MAX_CAND that cannot be
"0004-multiple_listeners" ;; configured at build time.
"0005-fix_ebusy_turn" '("0009-add-config-site")))))))))))
"0006-ignore_ipv6_on_transport_check"
"0007-upnp-srflx-nat-assisted-cand"
"0008-fix_ioqueue_ipv6_sendto"
"0009-add-config-site"
;; Already taken care of via the origin patches.
;;"0010-fix-pkgconfig"
"0011-fix-tcp-death-detection"
"0012-fix-turn-shutdown-crash"
"0013-Assign-unique-local-preferences-for-candidates-with-"
"0014-Add-new-compile-time-setting-PJ_ICE_ST_USE_TURN_PERM"
"0015-update-local-preference-for-peer-reflexive-candidate"
"0016-use-addrinfo-instead-CFHOST"
"0017-CVE-2020-15260"
"0018-CVE-2021-21375"
"0019-ignore-down-interfaces"))))))))))
;; The following variables are configure flags used by ffmpeg-jami. They're ;; The following variables are configure flags used by ffmpeg-jami. They're
;; from the ring-project/daemon/contrib/src/ffmpeg/rules.mak file. We try to ;; from the jami-project/daemon/contrib/src/ffmpeg/rules.mak file. We try to
;; keep it as close to the official Jami package as possible, to provide all ;; keep it as close to the official Jami package as possible, to provide all
;; the codecs and extra features that are expected. ;; 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)
;; See:
;; https://review.jami.net/plugins/gitiles/ring-daemon/+/refs/heads/master/contrib/src/ffmpeg/rules.mak
(define %ffmpeg-default-configure-flags (define %ffmpeg-default-configure-flags
'("--disable-everything" '("--disable-everything"
"--enable-zlib" "--enable-zlib"
@ -187,7 +169,7 @@
"--enable-protocol=unix" "--enable-protocol=unix"
"--enable-protocol=pipe" "--enable-protocol=pipe"
;; enable muxers/demuxers ;; Enable muxers/demuxers.
"--disable-demuxers" "--disable-demuxers"
"--disable-muxers" "--disable-muxers"
"--enable-muxer=rtp" "--enable-muxer=rtp"
@ -195,6 +177,7 @@
"--enable-muxer=h263" "--enable-muxer=h263"
"--enable-muxer=h264" "--enable-muxer=h264"
"--enable-muxer=hevc" "--enable-muxer=hevc"
; "--enable-muxer=matroska"
"--enable-muxer=webm" "--enable-muxer=webm"
"--enable-muxer=ogg" "--enable-muxer=ogg"
"--enable-muxer=pcm_s16be" "--enable-muxer=pcm_s16be"
@ -223,7 +206,7 @@
"--enable-demuxer=h264" "--enable-demuxer=h264"
"--enable-demuxer=hevc" "--enable-demuxer=hevc"
;; enable parsers ;; Enable parsers.
"--enable-parser=h263" "--enable-parser=h263"
"--enable-parser=h264" "--enable-parser=h264"
"--enable-parser=hevc" "--enable-parser=hevc"
@ -232,7 +215,7 @@
"--enable-parser=vp9" "--enable-parser=vp9"
"--enable-parser=opus" "--enable-parser=opus"
;; encoders/decoders ;; Encoders/decoders.
"--enable-encoder=adpcm_g722" "--enable-encoder=adpcm_g722"
"--enable-decoder=adpcm_g722" "--enable-decoder=adpcm_g722"
"--enable-encoder=rawvideo" "--enable-encoder=rawvideo"
@ -263,7 +246,7 @@
"--enable-encoder=libopus" "--enable-encoder=libopus"
"--enable-decoder=libopus" "--enable-decoder=libopus"
;; decoders for ringtones and audio streaming ;; Decoders for ringtones and audio streaming.
"--enable-decoder=flac" "--enable-decoder=flac"
"--enable-decoder=vorbis" "--enable-decoder=vorbis"
"--enable-decoder=aac" "--enable-decoder=aac"
@ -298,7 +281,7 @@
"--enable-decoder=pcm_u16be" "--enable-decoder=pcm_u16be"
"--enable-decoder=pcm_u16le" "--enable-decoder=pcm_u16le"
;; encoders/decoders for images ;; Encoders/decoders for images.
"--enable-encoder=gif" "--enable-encoder=gif"
"--enable-decoder=gif" "--enable-decoder=gif"
"--enable-encoder=jpegls" "--enable-encoder=jpegls"
@ -312,7 +295,7 @@
"--enable-encoder=tiff" "--enable-encoder=tiff"
"--enable-decoder=tiff" "--enable-decoder=tiff"
;; filters ;; Filters.
"--enable-filter=scale" "--enable-filter=scale"
"--enable-filter=overlay" "--enable-filter=overlay"
"--enable-filter=amix" "--enable-filter=amix"
@ -346,8 +329,8 @@
"--enable-encoder=mjpeg_vaapi" "--enable-encoder=mjpeg_vaapi"
"--enable-encoder=hevc_vaapi")) "--enable-encoder=hevc_vaapi"))
;; ffnvcodec is not supported on ARM then we enable it here for i386 and ;; ffnvcodec is not supported on ARM; enable it only for the i386 and x86_64
;; x86_64 architectures. ;; architectures.
(define %ffmpeg-linux-x86-configure-flags (define %ffmpeg-linux-x86-configure-flags
'("--arch=x86" '("--arch=x86"
"--enable-cuvid" "--enable-cuvid"
@ -378,81 +361,89 @@
(define-public ffmpeg-jami (define-public ffmpeg-jami
(package/inherit ffmpeg (package/inherit ffmpeg
(name "ffmpeg-jami") (name "ffmpeg-jami")
(native-inputs
`(("jami-sources" ,%jami-sources)
("libiconv" ,libiconv)
,@(package-native-inputs ffmpeg)))
(supported-systems '("x86_64-linux" "i686-linux"
"aarch64-linux" "armhf-linux"))
(arguments (arguments
(append (substitute-keyword-arguments (package-arguments ffmpeg)
'(#:tests? #f) ((#:tests? _ #f)
(substitute-keyword-arguments (package-arguments ffmpeg) ;; The "rtp_ext_abs_send_time" patch causes the 'lavf-mov_rtphint'
((#:configure-flags '()) ;; test to fail (see:
(ffmpeg-compose-configure-flags)) ;; https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/685).
((#:phases phases) ;; TODO: Try to disable just this test.
`(modify-phases ,phases #f)
(add-after 'unpack 'make-git-checkout-writable ((#:configure-flags '())
(lambda _ (ffmpeg-compose-configure-flags))
(for-each make-file-writable (find-files ".")))) ((#:phases phases)
#~(modify-phases #$phases
(add-after 'unpack 'apply-patches (add-after 'unpack 'apply-patches
(lambda* (#:key inputs #:allow-other-keys) (lambda _
;; These patches come from: ;; These patches come from:
;; "ring-project/daemon/contrib/src/ffmpeg/rules.mak". ;; "jami-project/daemon/contrib/src/ffmpeg/rules.mak".
(,jami-apply-custom-patches (#$jami-apply-custom-patches
#:inputs inputs #:dep-name "ffmpeg" #:dep-name "ffmpeg"
#:patches '("remove-mjpeg-log" #:patches '("remove-mjpeg-log"
"change-RTCP-ratio" "change-RTCP-ratio"
"rtp_ext_abs_send_time" "rtp_ext_abs_send_time"
"libopusdec-enable-FEC" "libopusdec-enable-FEC"
"libopusenc-enable-FEC"))))))))))) "libopusenc-enable-FEC"
"screen-sharing-x11-fix"))))))))))
(define-public libring (define-public libjami
(package (package
(name "libring") (name "libjami")
(version %jami-version) (version %jami-version)
(source %jami-sources) (source %jami-sources)
(build-system gnu-build-system)
(outputs '("out" "debug")) (outputs '("out" "debug"))
(build-system gnu-build-system)
(arguments
(list
;; The test suite fails to link when building libjami as a shared library:
;; "testAccount_factory.cpp:(.text+0xc52): undefined reference to
;; `jami::AccountFactory::AccountFactory()'.
#: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
;; user scripts too, until more generalized Scheme bindings are made
;; (see: test/agent/README.md).
;; FIXME: Fails to link when building libjami as a shared library:
;; bindings.cpp:(.text+0x24): undefined reference to `jami::Logger::log
;; [...].
#:configure-flags #~(list "--disable-agent")
#: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")))))))
(inputs (inputs
`(("alsa-lib" ,alsa-lib) (list alsa-lib
("asio" ,asio) asio
("dbus-c++" ,dbus-c++) dbus-c++
("eudev" ,eudev) eudev
("ffmpeg" ,ffmpeg-jami) ffmpeg-jami
("jack" ,jack-1) guile-3.0
("jsoncpp" ,jsoncpp) jack-1
("libarchive" ,libarchive) jsoncpp
("libgit2" ,libgit2) libarchive
("libnatpmp" ,libnatpmp) libgit2
("libsecp256k1" ,libsecp256k1) libnatpmp
("libupnp" ,libupnp) libsecp256k1
("opendht" ,opendht) libupnp
("openssl" ,openssl) opendht
("pjproject" ,pjproject-jami) openssl
("pulseaudio" ,pulseaudio) pjproject-jami
("speex" ,speex) pulseaudio
("speexdsp" ,speexdsp) speex
("webrtc-audio-processing" ,webrtc-audio-processing) speexdsp
("yaml-cpp" ,yaml-cpp))) webrtc-audio-processing
yaml-cpp))
(native-inputs (native-inputs
(list autoconf (list autoconf
automake automake
cppunit
libtool libtool
perl ;to generate manpages with pod2man perl ;to generate manpages with pod2man
pkg-config pkg-config
which)) which))
(arguments
`(#:tests? #f ; The tests fail to compile due to missing headers.
#:make-flags '("V=1") ;build verbosely
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'change-directory
(lambda _
(chdir "daemon")))
(add-before 'build 'add-lib-dir
(lambda _
(mkdir-p "src/lib"))))))
(synopsis "Jami core library and daemon") (synopsis "Jami core library and daemon")
(description "This package provides a library and daemon implementing the (description "This package provides a library and daemon implementing the
Jami core functionality. Jami is a secure and distributed voice, video and Jami core functionality. Jami is a secure and distributed voice, video and
@ -462,39 +453,42 @@ protocols, as well as decentralized calling using P2P-DHT.")
(home-page "https://jami.net/") (home-page "https://jami.net/")
(license license:gpl3+))) (license license:gpl3+)))
(define-public libringclient ;;; Remove when 2023 comes.
(define-public libring
(deprecated-package "libring" libjami))
;;; Note: this package will eventually be absorbed into jami itself (the Qt
;;; client).
(define-public jami-libclient
(package (package
(name "libringclient") (name "jami-libclient")
(version %jami-version) (version %jami-version)
(source %jami-sources) (source %jami-sources)
(build-system cmake-build-system) (build-system cmake-build-system)
(outputs '("out" "debug")) (outputs '("out" "debug"))
(inputs
(list libring network-manager))
(propagated-inputs
(list qtbase-5)) ; Qt is included in several installed headers.
(arguments (arguments
`(#:tests? #f ; There is no testsuite. (list
#:configure-flags #:tests? #f ;no test suite
(let ((libring (assoc-ref %build-inputs "libring"))) #:configure-flags
(list (string-append "-DRING_XML_INTERFACES_DIR=" #~(list (string-append "-DRING_XML_INTERFACES_DIR="
libring "/share/dbus-1/interfaces") #$(this-package-input "libjami")
(string-append "-DRING_BUILD_DIR=" libring "/include") "/share/dbus-1/interfaces")
;; Use LIBWRAP, which removes the requirement on DBus. Qt (string-append "-DRING_BUILD_DIR="
;; links with the dbus library in Guix, which expects to find #$(this-package-input "libjami")
;; its configuration under /etc rather than /usr/share/dbus-1, "/include")
;; which is perhaps the reason the auto-launching of dring ;; Call to the libraries directly instead of going through DBus
;; doesn't work on foreign distributions. ;; to avoid issues (see: https://issues.guix.gnu.org/48538).
"-DENABLE_LIBWRAP=true")
;; FIXME: Disabled for now, as it causes a segfault when #:phases
;; attempting video calls (see: #~(modify-phases %standard-phases
;; https://git.jami.net/savoirfairelinux/ring-lrc/-/issues/466). (add-after 'unpack 'change-directory/maybe
"-DENABLE_LIBWRAP=false")) (lambda _
#:phases ;; Allow building from the tarball or a git checkout.
(modify-phases %standard-phases (false-if-exception (chdir "lrc")))))))
(add-after 'unpack 'change-directory (inputs
(lambda _ (list libjami network-manager))
(chdir "lrc")))))) (propagated-inputs
(list qtbase-5)) ;Qt is included in several installed headers
(synopsis "Jami client library") (synopsis "Jami client library")
(description "This package provides a library common to all Jami clients. (description "This package provides a library common to all Jami clients.
Jami is a secure and distributed voice, video and chat communication platform Jami is a secure and distributed voice, video and chat communication platform
@ -504,33 +498,17 @@ decentralized calling using P2P-DHT.")
(home-page "https://jami.net") (home-page "https://jami.net")
(license license:gpl3+))) (license license:gpl3+)))
;;; Remove when 2023 comes.
(define-public libringclient
(deprecated-package "libringclient" jami-libclient))
(define-public jami-gnome (define-public jami-gnome
(package (package
(name "jami-gnome") (name "jami-gnome")
(version %jami-version) (version %jami-version)
(source %jami-sources) (source %jami-sources)
(build-system cmake-build-system)
(outputs '("out" "debug")) (outputs '("out" "debug"))
(inputs (build-system cmake-build-system)
(list clutter
clutter-gtk
gtk+
libcanberra
libappindicator
libnotify
libringclient
network-manager
qrencode
sqlite
webkitgtk))
(native-inputs
`(("pkg-config" ,pkg-config)
("gettext" ,gettext-minimal)
("glib:bin" ,glib "bin"))) ;for glib-compile-resources
(propagated-inputs
(list libring ; Contains 'dring', the daemon, which is
; automatically started by DBus.
adwaita-icon-theme))
(arguments (arguments
`(#:tests? #f ;no test suite `(#:tests? #f ;no test suite
#:imported-modules (,@%cmake-build-system-modules #:imported-modules (,@%cmake-build-system-modules
@ -540,10 +518,11 @@ decentralized calling using P2P-DHT.")
(guix build utils)) (guix build utils))
#:phases #:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(add-after 'unpack 'change-directory (add-after 'unpack 'change-directory/maybe
(lambda _ (lambda _
(chdir "client-gnome"))) ;; Allow building from the tarball or a git checkout.
(add-after 'change-directory 'fix-webkit-detection (false-if-exception (chdir "client-gnome"))))
(add-after 'change-directory/maybe 'fix-webkit-detection
(lambda _ (lambda _
(substitute* "CMakeLists.txt" (substitute* "CMakeLists.txt"
(("WEBKIT webkit2gtk-4.0") (("WEBKIT webkit2gtk-4.0")
@ -552,6 +531,22 @@ decentralized calling using P2P-DHT.")
(assoc-ref gtk:%standard-phases 'glib-or-gtk-compile-schemas)) (assoc-ref gtk:%standard-phases 'glib-or-gtk-compile-schemas))
(add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap (add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap
(assoc-ref gtk:%standard-phases 'glib-or-gtk-wrap))))) (assoc-ref gtk:%standard-phases 'glib-or-gtk-wrap)))))
(inputs
(list clutter
clutter-gtk
gtk+
jami-libclient
libcanberra
libappindicator
libnotify
network-manager
qrencode
sqlite
webkitgtk))
(native-inputs
(list pkg-config
gettext-minimal
`(,glib "bin"))) ;for glib-compile-resources
(synopsis "Jami client for GNOME") (synopsis "Jami client for GNOME")
(description "This package provides a Jami client for the GNOME desktop. (description "This package provides a Jami client for the GNOME desktop.
Jami is a secure and distributed voice, video and chat communication platform Jami is a secure and distributed voice, video and chat communication platform
@ -561,14 +556,9 @@ decentralized calling using P2P-DHT.")
(home-page "https://jami.net") (home-page "https://jami.net")
(license license:gpl3+))) (license license:gpl3+)))
;;; Keep this until the Qt client matures enough to become the
;;; main 'jami' client.
(define-public jami (define-public jami
(deprecated-package "jami" jami-gnome))
(define-public jami-qt
(package (package
(name "jami-qt") ;to be renamed 'jami' at some point (name "jami")
(version %jami-version) (version %jami-version)
(source %jami-sources) (source %jami-sources)
(build-system qt-build-system) (build-system qt-build-system)
@ -577,14 +567,15 @@ decentralized calling using P2P-DHT.")
`(#:tests? #f ;no test suite `(#:tests? #f ;no test suite
#:phases #:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(add-after 'unpack 'change-directory (add-after 'unpack 'change-directory/maybe
(lambda _ (lambda _
(chdir "client-qt")))))) ;; Allow building from the tarball or a git checkout.
(false-if-exception (chdir "client-qt")))))))
(native-inputs (native-inputs
(list pkg-config qttools doxygen graphviz)) (list pkg-config python qttools doxygen graphviz))
(inputs (inputs
(list libnotify (list jami-libclient
libringclient libnotify
network-manager network-manager
qrencode qrencode
qtsvg qtsvg
@ -595,8 +586,6 @@ decentralized calling using P2P-DHT.")
qtgraphicaleffects qtgraphicaleffects
qtquickcontrols qtquickcontrols
qtquickcontrols2)) qtquickcontrols2))
(propagated-inputs
(list libring)) ;for dring
(home-page "https://jami.net") (home-page "https://jami.net")
(synopsis "Qt Jami client") (synopsis "Qt Jami client")
(description "This package provides the Jami Qt client. Jami is a secure (description "This package provides the Jami Qt client. Jami is a secure
@ -605,3 +594,7 @@ 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 It supports the SIP and IAX protocols, as well as decentralized calling using
P2P-DHT.") P2P-DHT.")
(license license:gpl3+))) (license license:gpl3+)))
;;; Remove when 2023 comes.
(define-public jami-qt
(deprecated-package "jami-qt" jami))

View File

@ -1,121 +0,0 @@
From 44f8f6c1c71bec6bf00269b075a2dc801ae6fd45 Mon Sep 17 00:00:00 2001
From: Vladimir Stoiakin <VStoiakin@lavabit.com>
Date: Thu, 23 Apr 2020 14:06:40 +0300
Subject: [PATCH 1/2] libpjproject.pc: correct the field 'cflags'
---
Makefile | 6 ++----
aconfigure | 4 ++++
aconfigure.ac | 3 +++
build.mak.in | 7 +++----
libpjproject.pc.in | 4 ++--
5 files changed, 14 insertions(+), 10 deletions(-)
diff --git a/Makefile b/Makefile
index ffaf638dd..3fd5cab40 100644
--- a/Makefile
+++ b/Makefile
@@ -132,10 +132,8 @@ install:
sed -e "s!@INCLUDEDIR@!$(includedir)!" | \
sed -e "s!@LIBDIR@!$(libdir)!" | \
sed -e "s/@PJ_VERSION@/$(PJ_VERSION)/" | \
- sed -e "s!@PJ_LDLIBS@!!" | \
- sed -e "s!@PJ_LDXXLIBS@!$(PJ_LDXXLIBS)!" | \
- sed -e "s!@PJ_INSTALL_CFLAGS@!!" | \
- sed -e "s!@PJ_INSTALL_CXXFLAGS@!$(PJ_INSTALL_CXXFLAGS)!" > $(DESTDIR)/$(libdir)/pkgconfig/libpjproject.pc
+ sed -e "s!@PJ_INSTALL_LDFLAGS@!$(PJ_INSTALL_LDFLAGS)!" | \
+ sed -e "s!@PJ_INSTALL_CFLAGS@!$(PJ_INSTALL_CFLAGS)!" > $(DESTDIR)/$(libdir)/pkgconfig/libpjproject.pc
uninstall:
$(RM) $(DESTDIR)$(libdir)/pkgconfig/libpjproject.pc
diff --git a/aconfigure b/aconfigure
index 2abbcf533..1ab932bda 100755
--- a/aconfigure
+++ b/aconfigure
@@ -706,6 +706,7 @@ GREP
CPP
ac_cross_compile
ac_shlib_suffix
+ac_cflags
ac_build_mak_vars
ac_pjdir
CC_CFLAGS
@@ -3952,6 +3953,7 @@ if test "$CC_CFLAGS" = ""; then CC_CFLAGS="-Wall"; fi
+
case $host in
*mingw* | *cygw* | *win32* | *w32* )
if pwd -W 2&> /dev/null; then
@@ -5138,8 +5140,10 @@ $as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
if test "x$ac_cv_c_bigendian" = "xyes"; then
CFLAGS="$CFLAGS -DPJ_IS_BIG_ENDIAN=1 -DPJ_IS_LITTLE_ENDIAN=0"
+ ac_cflags="$ac_cflags -DPJ_IS_BIG_ENDIAN=1 -DPJ_IS_LITTLE_ENDIAN=0"
else
CFLAGS="$CFLAGS -DPJ_IS_BIG_ENDIAN=0 -DPJ_IS_LITTLE_ENDIAN=1"
+ ac_cflags="$ac_cflags -DPJ_IS_BIG_ENDIAN=0 -DPJ_IS_LITTLE_ENDIAN=1"
fi
diff --git a/aconfigure.ac b/aconfigure.ac
index 83d3559ed..b1d493c08 100644
--- a/aconfigure.ac
+++ b/aconfigure.ac
@@ -71,6 +71,7 @@ AC_SUBST(CC_CFLAGS)
AC_SUBST(ac_pjdir)
AC_SUBST(ac_build_mak_vars)
+AC_SUBST(ac_cflags)
case $host in
*mingw* | *cygw* | *win32* | *w32* )
@@ -144,8 +145,10 @@ AC_C_BIGENDIAN
if test "x$ac_cv_c_bigendian" = "xyes"; then
CFLAGS="$CFLAGS -DPJ_IS_BIG_ENDIAN=1 -DPJ_IS_LITTLE_ENDIAN=0"
+ ac_cflags="$ac_cflags -DPJ_IS_BIG_ENDIAN=1 -DPJ_IS_LITTLE_ENDIAN=0"
else
CFLAGS="$CFLAGS -DPJ_IS_BIG_ENDIAN=0 -DPJ_IS_LITTLE_ENDIAN=1"
+ ac_cflags="$ac_cflags -DPJ_IS_BIG_ENDIAN=0 -DPJ_IS_LITTLE_ENDIAN=1"
fi
dnl
diff --git a/build.mak.in b/build.mak.in
index abc0c4fa0..a9078bb25 100644
--- a/build.mak.in
+++ b/build.mak.in
@@ -299,7 +299,7 @@ export APP_LDXXLIBS := $(PJSUA2_LIB_LDLIB) \
-lstdc++ \
$(APP_LDLIBS)
-# Here are the variabels to use if application is using the library
+# Here are the variables to use if application is using the library
# from within the source distribution
export PJ_CC := $(APP_CC)
export PJ_CXX := $(APP_CXX)
@@ -317,6 +317,5 @@ export PJ_LIBXX_FILES := $(APP_LIBXX_FILES)
export PJ_INSTALL_DIR := @prefix@
export PJ_INSTALL_INC_DIR := @includedir@
export PJ_INSTALL_LIB_DIR := @libdir@
-export PJ_INSTALL_CFLAGS := -I$(PJ_INSTALL_INC_DIR) -DPJ_AUTOCONF=1 @CFLAGS@
-export PJ_INSTALL_CXXFLAGS := @CXXFLAGS@ $(PJ_INSTALL_CFLAGS)
-export PJ_INSTALL_LDFLAGS := -L$(PJ_INSTALL_LIB_DIR) $(APP_LDLIBS)
+export PJ_INSTALL_CFLAGS := -I$(PJ_INSTALL_INC_DIR) -DPJ_AUTOCONF=1 @ac_cflags@
+export PJ_INSTALL_LDFLAGS := -L$(PJ_INSTALL_LIB_DIR) $(APP_LDXXLIBS)
diff --git a/libpjproject.pc.in b/libpjproject.pc.in
index fa8d39114..30ea05c07 100644
--- a/libpjproject.pc.in
+++ b/libpjproject.pc.in
@@ -9,5 +9,5 @@ Name: libpjproject
Description: Multimedia communication library
URL: http://www.pjsip.org
Version: @PJ_VERSION@
-Libs: -L${libdir} @PJ_LDXXLIBS@
-Cflags: -I${includedir} @PJ_INSTALL_CXXFLAGS@
+Libs: @PJ_INSTALL_LDFLAGS@
+Cflags: @PJ_INSTALL_CFLAGS@
--
2.27.0

View File

@ -1,79 +0,0 @@
From 9bcba7fb28055550961b134e517b695a8cd05b2a Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Date: Mon, 3 Aug 2020 17:43:19 -0400
Subject: [PATCH] libpjproject.pc: Move external libraries to Libs.private.
This is done so users of a shared pjproject library do not get link
directives (provided via pkg-config file of pjproject) to link against
pjproject's own library dependencies.
Static linking with pjproject is preserved by moving the external
libraries link directives to the Libs.private field, which is
specifically intended for this purpose, via for example:
$ pkg-config --static --libs libpjproject
* build.mak.in (PJ_INSTALL_LDFLAGS_PRIVATE): New variable.
(PJ_INSTALL_LDFLAGS): Filter out PJ_INSTALL_LDFLAGS_PRIVATE entries.
* libpjproject.pc.in (Libs.private): New field.
* Makefile: Substitute PJ_INSTALL_LDFLAGS_PRIVATE as the value for the
Libs.private field.
---
Makefile | 5 +++--
build.mak.in | 3 ++-
libpjproject.pc.in | 1 +
3 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/Makefile b/Makefile
index 3fd5cab40..d67badfa4 100644
--- a/Makefile
+++ b/Makefile
@@ -54,14 +54,14 @@ doc:
exit 1; \
fi; \
done
-
+
LIBS = pjlib/lib/libpj-$(TARGET_NAME).a \
pjlib-util/lib/libpjlib-util-$(TARGET_NAME).a \
pjnath/lib/libpjnath-$(TARGET_NAME).a \
pjmedia/lib/libpjmedia-$(TARGET_NAME).a \
pjmedia/lib/libpjmedia-audiodev-$(TARGET_NAME).a \
pjmedia/lib/libpjmedia-codec-$(TARGET_NAME).a \
- pjsip/lib/libpjsip-$(TARGET_NAME).a \
+ pjsip/lib/libpjsip-$(TARGET_NAME).a \
pjsip/lib/libpjsip-ua-$(TARGET_NAME).a \
pjsip/lib/libpjsip-simple-$(TARGET_NAME).a \
pjsip/lib/libpjsua-$(TARGET_NAME).a
@@ -133,6 +133,7 @@ install:
sed -e "s!@LIBDIR@!$(libdir)!" | \
sed -e "s/@PJ_VERSION@/$(PJ_VERSION)/" | \
sed -e "s!@PJ_INSTALL_LDFLAGS@!$(PJ_INSTALL_LDFLAGS)!" | \
+ sed -e "s!@PJ_INSTALL_LDFLAGS_PRIVATE@!$(PJ_INSTALL_LDFLAGS_PRIVATE)!" | \
sed -e "s!@PJ_INSTALL_CFLAGS@!$(PJ_INSTALL_CFLAGS)!" > $(DESTDIR)/$(libdir)/pkgconfig/libpjproject.pc
uninstall:
diff --git a/build.mak.in b/build.mak.in
index a9078bb25..1a18a8513 100644
--- a/build.mak.in
+++ b/build.mak.in
@@ -318,4 +318,5 @@ export PJ_INSTALL_DIR := @prefix@
export PJ_INSTALL_INC_DIR := @includedir@
export PJ_INSTALL_LIB_DIR := @libdir@
export PJ_INSTALL_CFLAGS := -I$(PJ_INSTALL_INC_DIR) -DPJ_AUTOCONF=1 @ac_cflags@
-export PJ_INSTALL_LDFLAGS := -L$(PJ_INSTALL_LIB_DIR) $(APP_LDXXLIBS)
+export PJ_INSTALL_LDFLAGS_PRIVATE := $(APP_THIRD_PARTY_LIBS) $(APP_THIRD_PARTY_EXT) @LIBS@
+export PJ_INSTALL_LDFLAGS := -L$(PJ_INSTALL_LIB_DIR) $(filter-out $(PJ_INSTALL_LDFLAGS_PRIVATE),$(APP_LDXXLIBS))
diff --git a/libpjproject.pc.in b/libpjproject.pc.in
index 30ea05c07..4372d5016 100644
--- a/libpjproject.pc.in
+++ b/libpjproject.pc.in
@@ -10,4 +10,5 @@ Description: Multimedia communication library
URL: http://www.pjsip.org
Version: @PJ_VERSION@
Libs: @PJ_INSTALL_LDFLAGS@
+Libs.private: @PJ_INSTALL_LDFLAGS_PRIVATE@
Cflags: @PJ_INSTALL_CFLAGS@
--
2.27.0