Jami

  • Done
  • quality assurance status badge
Details
5 participants
  • Mathieu Othacehe
  • Christopher Baines
  • Michael Rohleder
  • Mathieu Othacehe
  • Jan Wielkiewicz
Owner
unassigned
Submitted by
Jan Wielkiewicz
Severity
normal
J
J
Jan Wielkiewicz wrote on 17 Apr 2020 02:00
(address . guix-patches@gnu.org)
20200417015857.0650ff6a@interia.pl
Hello,

these commits are mainly updates, some improvements, I don't remember
it's late here :D


Jan Wielkiewicz
J
J
Jan Wielkiewicz wrote on 17 Apr 2020 02:34
[PATCH 01/30] gnu: jami: Move Jami and its dependencies to jami.scm.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200417003433.5608-1-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/jami.scm | 350 +++++++++++++++++++++++++++++++++++++
gnu/packages/telephony.scm | 291 ------------------------------
2 files changed, 350 insertions(+), 291 deletions(-)
create mode 100644 gnu/packages/jami.scm

Toggle diff (495 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
new file mode 100644
index 0000000000..cca420971c
--- /dev/null
+++ b/gnu/packages/jami.scm
@@ -0,0 +1,350 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
+;;; Copyright © 2019, 2020 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
+;;;
+;;; 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)
+ #:use-module (gnu packages base)
+ #:use-module (gnu packages boost)
+ #:use-module (gnu packages check)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages crypto)
+ #:use-module (gnu packages documentation)
+ #:use-module (gnu packages gettext)
+ #:use-module (gnu packages glib)
+ #:use-module (gnu packages gnome)
+ #:use-module (gnu packages gtk)
+ #:use-module (gnu packages libcanberra)
+ #:use-module (gnu packages linux)
+ #:use-module (gnu packages multiprecision)
+ #:use-module (gnu packages networking)
+ #:use-module (gnu packages pcre)
+ #: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)
+ #:use-module (gnu packages video)
+ #:use-module (gnu packages webkit)
+ #: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)
+ #:use-module (guix download)
+ #:use-module (guix git-download)
+ #:use-module (guix packages))
+
+(define %jami-version "20191101.3.67671e7")
+
+(define* (jami-source #:key without-daemon)
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://dl.jami.net/ring-release/tarballs/ring_"
+ %jami-version
+ ".tar.gz"))
+ (modules '((guix build utils)))
+ (snippet
+ (if without-daemon
+ '(begin
+ (delete-file-recursively "daemon/contrib"))
+ #f))
+ (sha256
+ (base32
+ "0kw172w2ccyz438kf5xqw14nhfm4xk6a2libnzib9j2wvhlpf4q0"))))
+
+(define-public pjproject-jami
+ (package
+ (inherit pjproject)
+ (name "pjproject-jami")
+ (native-inputs
+ `(("savoir-faire-linux-patches" ,(jami-source))
+ ,@(package-native-inputs pjproject)))
+ (arguments
+ `(#:tests? #f
+ ;; See ring-project/daemon/contrib/src/pjproject/rules.mak.
+ #:configure-flags
+ (list "--disable-oss"
+ "--disable-sound"
+ "--disable-video"
+ "--enable-ext-sound"
+ "--disable-speex-aec"
+ "--disable-g711-codec"
+ "--disable-l16-codec"
+ "--disable-gsm-codec"
+ "--disable-g722-codec"
+ "--disable-g7221-codec"
+ "--disable-speex-codec"
+ "--disable-ilbc-codec"
+ "--disable-opencore-amr"
+ "--disable-silk"
+ "--disable-sdl"
+ "--disable-ffmpeg"
+ "--disable-v4l2"
+ "--disable-openh264"
+ "--disable-resample"
+ "--disable-libwebrtc"
+ "--with-gnutls"
+ "--with-external-srtp"
+ ;; We need -fPIC or else we get the following error when linking
+ ;; against pjproject-jami:
+ ;; relocation R_X86_64_32S against `.rodata' can not be used when
+ ;; making a shared object;
+ "CFLAGS=-fPIC"
+ "CXXFLAGS=-fPIC")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'make-git-checkout-writable
+ (lambda _
+ (for-each make-file-writable (find-files "."))
+ #t))
+ (add-after 'unpack 'apply-patches
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((savoir-faire-linux-patches-directory "Savoir-faire Linux patches")
+ ;; Comes from
+ ;; "ring-project/daemon/contrib/src/pjproject/rules.mak".
+ ;; WARNING: These amount for huge changes in pjproject.
+ (savoir-faire-linux-patches
+ '("fix_turn_alloc_failure"
+ "rfc2466"
+ "ipv6"
+ "multiple_listeners"
+ "pj_ice_sess"
+ "fix_turn_fallback"
+ "fix_ioqueue_ipv6_sendto"
+ "add_dtls_transport"
+ "rfc6544"
+ "ice_config"
+ "sip_config"
+ "fix_first_packet_turn_tcp"
+ "fix_ebusy_turn"
+ "ignore_ipv6_on_transport_check"
+ "fix_turn_connection_failure"
+ ;; "uwp_vs" ; for windows
+ "disable_local_resolution")))
+ (mkdir-p savoir-faire-linux-patches-directory)
+ (invoke "tar" "-xvf" (assoc-ref inputs "savoir-faire-linux-patches")
+ "-C" savoir-faire-linux-patches-directory
+ "--strip-components=5"
+ "ring-project/daemon/contrib/src/pjproject")
+ (for-each
+ (lambda (file)
+ (invoke "patch" "--force" "-p1" "-i"
+ (string-append savoir-faire-linux-patches-directory "/"
+ file ".patch")))
+ savoir-faire-linux-patches))
+ #t))
+ ;; TODO: We could use substitute-keyword-arguments instead of
+ ;; repeating the phases from pjproject, but somehow it does
+ ;; not work.
+ (add-before 'build 'build-dep
+ (lambda _ (invoke "make" "dep")))
+ (add-before 'patch-source-shebangs 'autoconf
+ (lambda _
+ (invoke "autoconf" "-v" "-f" "-i" "-o"
+ "aconfigure" "aconfigure.ac")))
+ (add-before 'autoconf 'disable-some-tests
+ ;; Three of the six test programs fail due to missing network
+ ;; access.
+ (lambda _
+ (substitute* "Makefile"
+ (("selftest: pjlib-test pjlib-util-test pjnath-test pjmedia-test pjsip-test pjsua-test")
+ "selftest: pjlib-test pjlib-util-test pjmedia-test"))
+ #t)))))))
+
+(define-public libring
+ (package
+ (name "libring")
+ (version %jami-version)
+ (source (jami-source #:without-daemon #t))
+ (build-system gnu-build-system)
+ (inputs
+ ;; Missing (optional?) dep: libnatpmp.
+ `(("alsa-lib" ,alsa-lib)
+ ("boost" ,boost)
+ ("dbus-c++" ,dbus-c++)
+ ("eudev" ,eudev)
+ ("ffmpeg" ,ffmpeg)
+ ("flac" ,flac)
+ ("gmp" ,gmp)
+ ("gsm" ,gsm)
+ ("jack" ,jack-1)
+ ("jsoncpp" ,jsoncpp)
+ ("libogg" ,libogg)
+ ("libva" ,libva)
+ ("opendht" ,opendht)
+ ("opus" ,opus)
+ ("pcre" ,pcre)
+ ("pulseaudio" ,pulseaudio)
+ ("libsamplerate" ,libsamplerate)
+ ("libsndfile" ,libsndfile)
+ ("speex" ,speex)
+ ("speexdsp" ,speexdsp)
+ ("libupnp" ,libupnp)
+ ("libvorbis" ,libvorbis)
+ ("libx264" ,libx264)
+ ("libvdpau" ,libvdpau)
+ ("yaml-cpp" ,yaml-cpp)
+ ("zlib" ,zlib)
+ ("openssl" ,openssl)
+ ("libsecp256k1" ,libsecp256k1)
+ ("python" ,python)
+ ("python-wrapper" ,python-wrapper)
+ ("restinio" ,restinio)
+ ("libx11" ,libx11)
+ ("asio" ,asio)
+ ;; TODO: Upstream seems to rely on a custom pjproject (a.k.a. pjsip) version.
+ ;; See https://git.jami.net/savoirfairelinux/ring-daemon/issues/24.
+ ("pjproject" ,pjproject-jami)))
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("libtool" ,libtool)
+ ("pkg-config" ,pkg-config)
+ ("which" ,which)
+ ("cppunit" ,cppunit)
+ ("perl" ,perl))) ; Needed for documentation.
+ (arguments
+ `(#:tests? #f ; The tests fail to compile due to missing headers.
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'change-directory
+ (lambda _
+ (chdir "daemon")
+ #t))
+ (add-before 'build 'add-lib-dir
+ (lambda _
+ (mkdir-p "src/lib")
+ #t)))))
+ (synopsis "Distributed multimedia communications platform")
+ (description "Jami (formerly GNU Ring) 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.
+
+This package provides a library and daemon implementing the Jami core
+functionality.")
+ (home-page "https://jami.net/")
+ (license license:gpl3+)))
+
+(define-public libringclient
+ (package
+ (inherit libring)
+ (name "libringclient")
+ (build-system cmake-build-system)
+ (propagated-inputs
+ `(("libring" ,libring) ; For 'dring'.
+ ("qtbase" ,qtbase) ; Qt is included in several installed headers.
+ ("qttools" ,qttools)))
+ (arguments
+ `(#:tests? #f ; There is no testsuite.
+ #:configure-flags
+ (list (string-append "-DRING_BUILD_DIR="
+ (assoc-ref %build-inputs "libring") "/include"))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'change-directory
+ (lambda _
+ (chdir "lrc")
+ #t))
+ (add-before 'configure 'fix-dbus-interfaces-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "CMakeLists.txt"
+ (("\\$\\{CMAKE_INSTALL_PREFIX\\}(/share/dbus-1/interfaces)" _ dbus-interfaces-path-suffix)
+ (string-append (assoc-ref inputs "libring")
+ dbus-interfaces-path-suffix))))))))
+ (synopsis "Distributed multimedia communications platform")
+ (description "Jami (formerly GNU Ring) 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.
+
+This package provides a library common to all Jami clients.")
+ (home-page "https://jami.net")
+ (license license:gpl3+)))
+
+(define-public jami
+ (package
+ (inherit libring)
+ (name "jami")
+ (build-system cmake-build-system)
+ (inputs
+ `(("libringclient" ,libringclient)
+ ("gtk+" ,gtk+)
+ ("qrencode" ,qrencode)
+ ("libnotify" ,libnotify)
+ ("clutter" ,clutter)
+ ("clutter-gtk" ,clutter-gtk)
+ ("gettext" ,gnu-gettext)
+ ("libcanberra" ,libcanberra)
+ ("webkitgtk" ,webkitgtk)
+ ;; TODO: We must wrap ring-client-gnome to force using the
+ ;; `sqlite-with-column-metadata' package instead of `sqlite' or else it
+ ;; fails with:
+ ;;
+ ;; /gnu/store/...-qtbase-5.11.2/lib/qt5/plugins/sqldrivers/libqsqlite.so:
+ ;; undefined symbol: sqlite3_column_table_name16
+ ;;
+ ;; qtbase is built against sqlite-with-column-metadata but somehow
+ ;; jami-client-gnome ends up with both `sqlite' and
+ ;; `sqlite-with-column-metadata' as inputs and it seems that
+ ;; libqsqlite.so gets confused.
+ ("sqlite" ,sqlite-with-column-metadata)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("glib:bin" ,glib "bin")
+ ("doxygen" ,doxygen)))
+ (propagated-inputs
+ `(("libring" ,libring) ; Contains `dring', the daemon, which is automatically by d-bus.
+ ("adwaita-icon-theme" ,adwaita-icon-theme)
+ ("evolution-data-server" ,evolution-data-server)))
+ (arguments
+ `(#:tests? #f ; There is no testsuite.
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'change-directory
+ (lambda _
+ (chdir "client-gnome")
+ #t))
+ (add-after 'install 'wrap
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (path (string-append (assoc-ref inputs "sqlite") "/lib")))
+ (wrap-program (string-append out "/bin/jami-gnome")
+ `("LD_LIBRARY_PATH" ":" prefix (,path))))
+ #t)))))
+ (synopsis "Distributed, privacy-respecting communication program")
+ (description "Jami (formerly GNU Ring) 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.
+
+This package provides the Jami client for the GNOME desktop.")
+ (home-page "https://jami.net")
+ (license license:gpl3+)))
+
+(define-public jami-client-gnome
+ (deprecated-package "jami-client-gnome" jami))
diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index 85c2f2ab5e..62bd8fd548 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -730,297 +730,6 @@ calls and messages")
Initiation Protocol (SIP) and a multimedia framework.")
(license license:gpl2+)))
-(define %jami-version "20191101.3.67671e7")
-
-(define* (jami-source #:key without-daemon)
- (origin
- (method url-fetch)
- (uri (string-append "https://dl.jami.net/ring-release/tarballs/ring_"
- %jami-version
- ".tar.gz"))
- (modules '((guix build utils)))
- (snippet
- (if without-daemon
- '(begin
- (delete-file-recursively "daemon/contrib"))
- #f))
- (sha256
- (base32
- "0kw172w2ccyz438kf5xqw14nhfm4xk6a2libnzib9j2wvhlpf4q0"))))
-
-(define-public pjproject-jami
- (package
- (inherit pjproject)
- (name "pjproject-jami")
- (native-inputs
- `(("savoir-faire-linux-patches" ,(jami-source))
- ,@(package-native-inputs pjproject)))
- (arguments
- `(#:tests? #f
- ;; See ring-project/daemon/contrib/src/pjproject/rules.mak.
- #:configure-flags
- (list "--disable-oss"
- "--disable-sound"
- "--disable-video"
- "--enable-ext-sound"
- "--disable-speex-aec"
- "--disable-g711-codec"
- "--disable-l16-codec"
- "--disable-gsm-codec"
- "--disable-g722-codec"
- "--disable-g7221-codec"
- "--disable-speex-codec"
- "--disable-ilbc-codec"
- "--disable-opencore-amr"
- "--disable-silk"
- "--disable-sdl"
- "--disable-ffmpeg"
- "--disable-v4l2"
- "--disable-openh264"
- "--disable-resample"
- "--disable-libwebrtc"
- "--with-gnutls"
- "--with-external-srtp"
- ;; We need -fPIC or else we get the following error when linking
- ;; against pjproject-jami:
- ;; relocation R_X86_64_32S against `.rodata' can not be used when
- ;; making a shared object;
- "CFLAGS=-fPIC"
- "CXXFLAGS=-fPIC")
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'make-git-checkout-writable
- (lambda _
- (for-each make-file-writable (find-files "."))
- #t))
- (add-after 'unpack 'apply-patches
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((savoir-faire-linux-patches-directory "Savoir-faire Linux patches")
- ;; Comes from
- ;; "ring-project/daemon/contrib/src/pjproject/rules.mak".
- ;; WARNING: These amount for huge changes in pjproject.
- (savoir-faire-linux-patches
- '("fix_turn_alloc_failure"
- "rfc2466"
- "ipv6"
- "multiple_listeners"
- "pj_ice_sess"
- "fix_turn_fallback"
- "fix_ioqueue_ipv6_sendto"
- "add_dtls_transport"
- "rfc6544"
- "ice_config"
- "sip_config"
- "fix_first_packet_turn_tcp"
- "fix_ebusy_turn"
- "ignore_ipv6_on_transport_check"
- "fix_turn_connection_failure"
- ;; "uwp_vs" ; for windows
- "disable_local_resolution")))
- (mkdir-p savoir-faire-linux-patches-directory)
- (invoke "tar" "-xvf" (assoc-ref inputs "savoir-faire-linux-patches")
- "-C" savoir-faire-linux-patches-directory
- "--strip-components=5"
- "ring-project/daemon/contrib/src/pjproject")
- (for-each
- (lambda (file)
- (invoke "patch" "--force" "-p1" "-i"
- (string-append savoir-faire-linux-patches-directory "/"
- file ".patch")))
- savoir-faire-linux-patches))
- #t))
- ;; TODO: We could use substitute-keyword-arguments instead of
- ;; repeating the phases from pjproject, but somehow it does
- ;; not work.
- (add-before 'build 'build-dep
- (lambda _ (invoke "make" "dep")))
- (add-before 'patch-source-shebangs 'autoconf
- (lambda _
- (invoke "autoconf" "-v" "-f" "-i" "-o"
- "aconfigure" "aconfigure.ac")))
- (add-before 'autoconf 'disable-some-tests
- ;; Three of the six test programs fail due to missing network
- ;; access.
- (lambda _
- (substitute* "Makefile"
- (("selftest: pjlib-test pjlib-util-test pjnath-test pjmedia-test pjsip-test pjsua-test")
- "selftest: pjlib-test pjlib-util-test pjmedia-test"))
- #t)))))))
-
-(define-public libring
- (package
- (name "libring")
- (version %jami-version)
- (source (jami-source #:without-daemon #t))
- (build-system gnu-build-system)
- (inputs
- ;; Missing (optional?) dep: libnatpmp.
- `(("alsa-lib" ,alsa-lib)
- ("boost" ,boost)
- ("dbus-c++" ,dbus-c++)
- ("eudev" ,eudev)
- ("ffmpeg" ,ffmpeg)
- ("f
This message was truncated. Download the full message here.
J
J
Jan Wielkiewicz wrote on 17 Apr 2020 02:34
[PATCH 02/30] gnu: jami: Bump to 20200203.1.5ee7e10.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200417003433.5608-2-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/jami.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Toggle diff (24 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index cca420971c..0e6218c4a0 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -58,7 +58,7 @@
#:use-module (guix git-download)
#:use-module (guix packages))
-(define %jami-version "20191101.3.67671e7")
+(define %jami-version "20200203.1.5ee7e10")
(define* (jami-source #:key without-daemon)
(origin
@@ -74,7 +74,7 @@
#f))
(sha256
(base32
- "0kw172w2ccyz438kf5xqw14nhfm4xk6a2libnzib9j2wvhlpf4q0"))))
+ "0kx0y9jxyhgj6id6n3xxpm54i6b8dqyx9vxwkx505jvhlbxd2x7x"))))
(define-public pjproject-jami
(package
--
2.26.1
J
J
Jan Wielkiewicz wrote on 17 Apr 2020 02:34
[PATCH 03/30] gnu: jami: Fix downloading by changing the prefix to "jami_"; Use the "release" dir instead of the deprecated "ring-release".
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200417003433.5608-3-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/jami.scm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Toggle diff (15 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 0e6218c4a0..8601ad718d 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -63,7 +63,7 @@
(define* (jami-source #:key without-daemon)
(origin
(method url-fetch)
- (uri (string-append "https://dl.jami.net/ring-release/tarballs/ring_"
+ (uri (string-append "https://dl.jami.net/release/tarballs/jami_"
%jami-version
".tar.gz"))
(modules '((guix build utils)))
--
2.26.1
J
J
Jan Wielkiewicz wrote on 17 Apr 2020 02:34
[PATCH 04/30] gnu: jami: Add a generalized procedure for applying patches made by Savoir-faire linux to Jami dependencies.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200417003433.5608-4-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/jami.scm | 16 ++++++++++++++++
1 file changed, 16 insertions(+)

Toggle diff (29 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 8601ad718d..27f6ff26f5 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -76,6 +76,22 @@
(base32
"0kx0y9jxyhgj6id6n3xxpm54i6b8dqyx9vxwkx505jvhlbxd2x7x"))))
+(define-public jami-apply-dependency-patches
+ '(lambda* (#:key inputs dep-name patches)
+ (let ((savoir-faire-linux-patches-directory "Savoir-faire Linux patches"))
+ (mkdir-p savoir-faire-linux-patches-directory)
+ (invoke "tar" "-xvf" (assoc-ref inputs "savoir-faire-linux-patches")
+ "-C" savoir-faire-linux-patches-directory
+ "--strip-components=5"
+ (string-append "ring-project/daemon/contrib/src/"
+ dep-name))
+ (for-each
+ (lambda (file)
+ (invoke "patch" "--force" "-p1" "-i"
+ (string-append savoir-faire-linux-patches-directory "/"
+ file ".patch")))
+ patches))))
+
(define-public pjproject-jami
(package
(inherit pjproject)
--
2.26.1
J
J
Jan Wielkiewicz wrote on 17 Apr 2020 02:34
[PATCH 05/30] gnu: pjproject-jami: Use the jami-apply-dependency-patches procedure.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200417003433.5608-5-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/jami.scm | 60 +++++++++++++++++++------------------------
1 file changed, 26 insertions(+), 34 deletions(-)

Toggle diff (80 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 27f6ff26f5..b165335e26 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -131,6 +131,8 @@
;; making a shared object;
"CFLAGS=-fPIC"
"CXXFLAGS=-fPIC")
+ #:modules ((guix build utils)
+ ,@(@@ (guix build-system gnu) %default-modules))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'make-git-checkout-writable
@@ -139,40 +141,30 @@
#t))
(add-after 'unpack 'apply-patches
(lambda* (#:key inputs #:allow-other-keys)
- (let ((savoir-faire-linux-patches-directory "Savoir-faire Linux patches")
- ;; Comes from
- ;; "ring-project/daemon/contrib/src/pjproject/rules.mak".
- ;; WARNING: These amount for huge changes in pjproject.
- (savoir-faire-linux-patches
- '("fix_turn_alloc_failure"
- "rfc2466"
- "ipv6"
- "multiple_listeners"
- "pj_ice_sess"
- "fix_turn_fallback"
- "fix_ioqueue_ipv6_sendto"
- "add_dtls_transport"
- "rfc6544"
- "ice_config"
- "sip_config"
- "fix_first_packet_turn_tcp"
- "fix_ebusy_turn"
- "ignore_ipv6_on_transport_check"
- "fix_turn_connection_failure"
- ;; "uwp_vs" ; for windows
- "disable_local_resolution")))
- (mkdir-p savoir-faire-linux-patches-directory)
- (invoke "tar" "-xvf" (assoc-ref inputs "savoir-faire-linux-patches")
- "-C" savoir-faire-linux-patches-directory
- "--strip-components=5"
- "ring-project/daemon/contrib/src/pjproject")
- (for-each
- (lambda (file)
- (invoke "patch" "--force" "-p1" "-i"
- (string-append savoir-faire-linux-patches-directory "/"
- file ".patch")))
- savoir-faire-linux-patches))
- #t))
+ (let ((jami-apply-dependency-patches ,jami-apply-dependency-patches))
+ ;; Comes from
+ ;; "ring-project/daemon/contrib/src/pjproject/rules.mak".
+ ;; WARNING: These amount for huge changes in pjproject.
+ (jami-apply-dependency-patches #:inputs inputs
+ #:dep-name "pjproject"
+ #:patches
+ '("fix_turn_alloc_failure"
+ "rfc2466"
+ "ipv6"
+ "multiple_listeners"
+ "pj_ice_sess"
+ "fix_turn_fallback"
+ "fix_ioqueue_ipv6_sendto"
+ "add_dtls_transport"
+ "rfc6544"
+ "ice_config"
+ "sip_config"
+ "fix_first_packet_turn_tcp"
+ "fix_ebusy_turn"
+ "ignore_ipv6_on_transport_check"
+ "fix_turn_connection_failure"
+ "disable_local_resolution"))
+ #t)))
;; TODO: We could use substitute-keyword-arguments instead of
;; repeating the phases from pjproject, but somehow it does
;; not work.
--
2.26.1
J
J
Jan Wielkiewicz wrote on 17 Apr 2020 02:34
[PATCH 06/30] gnu: Add libnatpmp.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200417003433.5608-6-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/networking.scm | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)

Toggle diff (39 lines)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index f754683bb9..adcb341a29 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -374,6 +374,32 @@ between different versions of ØMQ.")
files contain direct mappings of the abstractions provided by the ØMQ C API.")
(license license:expat)))
+(define-public libnatpmp
+ (package
+ (name "libnatpmp")
+ (version "20150609")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://miniupnp.free.fr/files/"
+ name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1c1n8n7mp0amsd6vkz32n8zj3vnsckv308bb7na0dg0r8969rap1"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (delete 'check))
+ #:make-flags
+ (list (string-append "PREFIX=" (assoc-ref %outputs "out")))))
+ (home-page "http://miniupnp.free.fr/libnatpmp.html")
+ (synopsis "C Library implementing NAT-PMP")
+ (description
+ "libnatpmp is a portable and asynchronous implementaiton of the NAT Port Mapping Protocol (NAT-PMP) written in C.")
+ (license license:bsd-3)))
+
(define-public librdkafka
(package
(name "librdkafka")
--
2.26.1
J
J
Jan Wielkiewicz wrote on 17 Apr 2020 02:34
[PATCH 07/30] gnu: libring: Add libnatpmp as an optional dependency; remove unnecessary comment.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200417003433.5608-7-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/jami.scm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Toggle diff (22 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index b165335e26..21872122e1 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -190,7 +190,6 @@
(source (jami-source #:without-daemon #t))
(build-system gnu-build-system)
(inputs
- ;; Missing (optional?) dep: libnatpmp.
`(("alsa-lib" ,alsa-lib)
("boost" ,boost)
("dbus-c++" ,dbus-c++)
@@ -201,6 +200,7 @@
("gsm" ,gsm)
("jack" ,jack-1)
("jsoncpp" ,jsoncpp)
+ ("libnatpmp" ,libnatpmp)
("libogg" ,libogg)
("libva" ,libva)
("opendht" ,opendht)
--
2.26.1
J
J
Jan Wielkiewicz wrote on 17 Apr 2020 02:34
[PATCH 08/30] gnu: libupnp: Bump to 1.8.6; change the download method to git-fetch; add missing dependencies.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200417003433.5608-8-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/upnp.scm | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)

Toggle diff (41 lines)
diff --git a/gnu/packages/upnp.scm b/gnu/packages/upnp.scm
index 8f3c887a68..be75b9068f 100644
--- a/gnu/packages/upnp.scm
+++ b/gnu/packages/upnp.scm
@@ -28,6 +28,7 @@
#:use-module (gnu packages photo)
#:use-module (gnu packages image)
#:use-module (gnu packages mp3)
+ #:use-module (gnu packages pkg-config)
#:use-module (gnu packages xiph)
#:use-module (gnu packages sqlite)
#:use-module (gnu packages python)
@@ -92,15 +93,21 @@ over IRC, instant messaging, network games, and most server software.")
(define-public libupnp
(package
(name "libupnp")
- (version "1.6.25")
+ (version "1.8.6")
(source
(origin
- (method url-fetch)
- (uri (string-append "mirror://sourceforge/pupnp/pupnp/libUPnP%20"
- version "/" name "-" version ".tar.bz2"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/mrjimenez/pupnp.git")
+ (commit (string-append "release-" version))))
(sha256
(base32
- "0hzsd7rvfa87b4hxg9yj4xhdfxx9sp09r9sqdl3mqhvmcyw018y5"))))
+ "1jlb6qh47513h2simy0zxia5q61w1c31mnwmjqpr2nf832lmnpk4"))))
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("libtool" ,libtool)
+ ("pkg-config" ,pkg-config)))
(build-system gnu-build-system)
(arguments
;; The tests require a network device capable of multicasting which is
--
2.26.1
J
J
Jan Wielkiewicz wrote on 17 Apr 2020 02:34
[PATCH 09/30] gnu: opendht: Bump to 2.0.0rc1.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200417003433.5608-9-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/networking.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Toggle diff (24 lines)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index adcb341a29..cc7fc1ea87 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -2648,7 +2648,7 @@ and targeted primarily for asynchronous processing of HTTP-requests.")
(define-public opendht
(package
(name "opendht")
- (version "2.0.0beta2")
+ (version "2.0.0rc1")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -2657,7 +2657,7 @@ and targeted primarily for asynchronous processing of HTTP-requests.")
(file-name (git-file-name name version))
(sha256
(base32
- "02ix0rvvyhq22gd5djcq84qz08ji7ln93faf23b27zjzni2klzv5"))))
+ "1adpdvpc7dwc973803nng3mkqn6x9k93xfsy59f1n5dnv5xmbg9w"))))
;; Since 2.0, the gnu-build-system does not seem to work anymore, upstream bug?
(build-system cmake-build-system)
(inputs
--
2.26.1
J
J
Jan Wielkiewicz wrote on 17 Apr 2020 02:34
[PATCH 11/30] gnu: libring: Use ffmpeg-jami instead of ffmpeg.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200417003433.5608-11-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/jami.scm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Toggle diff (15 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index de60c8bb15..362832f74a 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -432,7 +432,7 @@
("boost" ,boost)
("dbus-c++" ,dbus-c++)
("eudev" ,eudev)
- ("ffmpeg" ,ffmpeg)
+ ("ffmpeg" ,ffmpeg-jami)
("flac" ,flac)
("gmp" ,gmp)
("gsm" ,gsm)
--
2.26.1
J
J
Jan Wielkiewicz wrote on 17 Apr 2020 02:34
[PATCH 10/30] gnu: Add ffmpeg-jami.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200417003433.5608-10-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/jami.scm | 238 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 238 insertions(+)

Toggle diff (251 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 21872122e1..de60c8bb15 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -183,6 +183,244 @@
"selftest: pjlib-test pjlib-util-test pjmedia-test"))
#t)))))))
+(define-public ffmpeg-jami
+ (package
+ (inherit ffmpeg)
+ (name "ffmpeg-jami")
+ (version "4.2.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://git.ffmpeg.org/ffmpeg.git")
+ (commit "59da9dcd7ef6277e4e04998ced71b05a6083c635")))
+ (file-name (git-file-name "ffmpeg" version))
+ (sha256
+ (base32
+ "0cm58kd06lvslc7knnfajv5p63v4cc6502badjcic5m9izd03lz2"))))
+ (native-inputs
+ `(("savoir-faire-linux-patches" ,(jami-source))
+ ("libiconv" ,libiconv)
+ ,@(package-native-inputs ffmpeg)))
+ (arguments
+ (append
+ '(#:tests? #f)
+ (substitute-keyword-arguments (package-arguments ffmpeg)
+ ((#:configure-flags '())
+ (append '("--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"
+ ;; enable muxers/demuxers
+ "--disable-demuxers"
+ "--disable-muxers"
+ "--enable-muxer=rtp"
+ "--enable-muxer=g722"
+ "--enable-muxer=h263"
+ "--enable-muxer=h264"
+ "--enable-muxer=hevc"
+ "--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"
+ "--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"
+ ;; enable parsers
+ "--enable-parser=h263"
+ "--enable-parser=h264"
+ "--enable-parser=mpeg4video"
+ "--enable-parser=vp8"
+ "--enable-parser=vp9"
+ "--enable-parser=opus"
+ ;; encoders/decoders
+ "--enable-encoder=adpcm_g722"
+ "--enable-decoder=adpcm_g722"
+ "--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"
+ ;; decoders for ringtones and audio streaming
+ "--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"
+ ;; encoders/decoders for images
+ "--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"
+ ;; filters
+ "--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")
+ ;; platform specific options
+ (if (string-contains (%current-system) "linux")
+ '("--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-encoder=h264_vaapi"
+ "--enable-encoder=vp8_vaapi"
+ "--enable-encoder=mjpeg_vaapi"
+ ))
+ (cond ((string?= (%current-system) "i386")
+ '("--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"))
+ ((string?= (%current-system) "x86_64")
+ '("--arch=x86_64"
+ "--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"))
+ ((string?= (%current-system) "aarch64-linux") '("--arch=aarch64"))
+ ((string?= (%current-system) "arm64-linux") '("--arch=aarch64"))
+ ((string?= (%current-system) "arm") '("--arch=arm"))
+ (else '()))))
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (add-after 'unpack 'make-git-checkout-writable
+ (lambda _
+ (for-each make-file-writable (find-files "."))
+ #t))
+ (add-after 'unpack 'apply-patches
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((jami-apply-dependency-patches ,jami-apply-dependency-patches))
+ ;; Comes from
+ ;; "ring-project/daemon/contrib/src/pjproject/rules.mak".
+ ;; WARNING: These amount for huge changes in pjproject.
+ (jami-apply-dependency-patches #:inputs inputs
+ #:dep-name "ffmpeg"
+ #:patches
+ '("remove-mjpeg-log"
+ "change-RTCP-ratio"
+ "rtp_ext_abs_send_time"))
+ #t))))))))))
+
(define-public libring
(package
(name "libring")
--
2.26.1
J
J
Jan Wielkiewicz wrote on 17 Apr 2020 02:34
[PATCH 12/30] gnu: restinio: Bump to 0.6.1.1.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200417003433.5608-12-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/networking.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Toggle diff (24 lines)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index cc7fc1ea87..8c3a2137eb 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -2606,7 +2606,7 @@ communication over HTTP.")
(define-public restinio
(package
(name "restinio")
- (version "0.6.0.1")
+ (version "0.6.1.1")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -2615,7 +2615,7 @@ communication over HTTP.")
(file-name (git-file-name name version))
(sha256
(base32
- "1c25kpx652nng8m1sqf5an2c3c4g3k6zj85mkkaxzk88iwfzq1s8"))))
+ "141a96hx8zhcdv121g6cs91n46kb47y040v25pnvz5f54964z7f5"))))
(build-system cmake-build-system)
(inputs ; TODO: Need to force-keep references on some inputs, e.g. boost.
`(("zlib" ,zlib)
--
2.26.1
J
J
Jan Wielkiewicz wrote on 17 Apr 2020 02:34
[PATCH 13/30] gnu: pjproject: Add and apply a patch fixing the crash.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200417003433.5608-13-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/patches/pjproject-fix.patch | 21 +++++++++++++++++++++
gnu/packages/telephony.scm | 2 ++
2 files changed, 23 insertions(+)
create mode 100644 gnu/packages/patches/pjproject-fix.patch

Toggle diff (42 lines)
diff --git a/gnu/packages/patches/pjproject-fix.patch b/gnu/packages/patches/pjproject-fix.patch
new file mode 100644
index 0000000000..8d7e22f965
--- /dev/null
+++ b/gnu/packages/patches/pjproject-fix.patch
@@ -0,0 +1,21 @@
+--- a/pjsip/src/pjsip-ua/sip_inv.c (revision 6086)
++++ b/pjsip/src/pjsip-ua/sip_inv.c (revision 6087)
+@@ -314,10 +314,16 @@
+ inv->cb_called |= (1 << state);
+
+- /* Call on_state_changed() callback. */
++ /* Call on_state_changed() callback.
++ * While in the callback, can the state shift to DISCONNECTED? Perhaps
++ * yes, so better avoid premature destroy of the invite session by
++ * temporarily increase its ref counter.
++ */
++ pjsip_inv_add_ref(inv);
+ if (mod_inv.cb.on_state_changed && inv->notify && !dont_notify)
+ (*mod_inv.cb.on_state_changed)(inv, e);
++ pjsip_inv_dec_ref(inv);
+
+ /* Only decrement when previous state is not already DISCONNECTED */
+- if (inv->state == PJSIP_INV_STATE_DISCONNECTED &&
++ if (state == PJSIP_INV_STATE_DISCONNECTED &&
+ prev_state != PJSIP_INV_STATE_DISCONNECTED)
+ {
diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index 62bd8fd548..7ee9bdd9ab 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -655,6 +655,8 @@ calls and messages")
(url "https://github.com/pjsip/pjproject.git")
(commit "5dfa75be7d69047387f9b0436dd9492bbbf03fe4")))
(modules '((guix build utils)))
+ (patches
+ (search-patches "pjproject-fix.patch"))
(snippet
'(begin
(let ((third-party-directories
--
2.26.1
J
J
Jan Wielkiewicz wrote on 17 Apr 2020 02:34
[PATCH 14/30] gnu: jami.scm: Add a missing module.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200417003433.5608-14-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/jami.scm | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

Toggle diff (16 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 362832f74a..65d8c5bb0b 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -56,7 +56,8 @@
#:use-module (guix build-system gnu)
#:use-module (guix download)
#:use-module (guix git-download)
- #:use-module (guix packages))
+ #:use-module (guix packages)
+ #:use-module (guix utils))
(define %jami-version "20200203.1.5ee7e10")
--
2.26.1
J
J
Jan Wielkiewicz wrote on 17 Apr 2020 02:34
[PATCH 15/30] gnu: jami: Bump to 20200206.2.996bf03.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200417003433.5608-15-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/jami.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Toggle diff (24 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 65d8c5bb0b..9ec4b45a32 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -59,7 +59,7 @@
#:use-module (guix packages)
#:use-module (guix utils))
-(define %jami-version "20200203.1.5ee7e10")
+(define %jami-version "20200206.2.996bf03")
(define* (jami-source #:key without-daemon)
(origin
@@ -75,7 +75,7 @@
#f))
(sha256
(base32
- "0kx0y9jxyhgj6id6n3xxpm54i6b8dqyx9vxwkx505jvhlbxd2x7x"))))
+ "0f8j9xv5whw3jvxnmvz9w1xq2vc5a9a0f1lpif1gdkk6bl1157lz"))))
(define-public jami-apply-dependency-patches
'(lambda* (#:key inputs dep-name patches)
--
2.26.1
J
J
Jan Wielkiewicz wrote on 17 Apr 2020 02:34
[PATCH 16/30] gnu: pjproject-jami: Add a new SFL patch.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200417003433.5608-16-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/jami.scm | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

Toggle diff (16 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 9ec4b45a32..e28f97c4d9 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -164,7 +164,8 @@
"fix_ebusy_turn"
"ignore_ipv6_on_transport_check"
"fix_turn_connection_failure"
- "disable_local_resolution"))
+ "disable_local_resolution"
+ "fix_assert_on_connection_attempt"))
#t)))
;; TODO: We could use substitute-keyword-arguments instead of
;; repeating the phases from pjproject, but somehow it does
--
2.26.1
J
J
Jan Wielkiewicz wrote on 17 Apr 2020 02:34
[PATCH 17/30] gnu: pjproject: Fix formatting.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200417003433.5608-17-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/telephony.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Toggle diff (19 lines)
diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index 7ee9bdd9ab..64a5827795 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -706,10 +706,10 @@ calls and messages")
("pkg-config" ,pkg-config)
("libtool" ,libtool)))
(arguments
- `(;; FIXME make: No rule to make target
+ `( ;; FIXME make: No rule to make target
;; 'pjlib-test-unknown-[something]-gnu'.
#:tests? #f
- ;; #:test-target "selftest"
+ ;; #:test-target "selftest"
#:phases
(modify-phases %standard-phases
(add-before 'build 'build-dep
--
2.26.1
J
J
Jan Wielkiewicz wrote on 17 Apr 2020 02:34
[PATCH 18/30] gnu: jami: Make gettext a native input.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200417003433.5608-18-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/jami.scm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Toggle diff (22 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index e28f97c4d9..2a5d282fdd 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -546,7 +546,6 @@ This package provides a library common to all Jami clients.")
("libnotify" ,libnotify)
("clutter" ,clutter)
("clutter-gtk" ,clutter-gtk)
- ("gettext" ,gnu-gettext)
("libcanberra" ,libcanberra)
("webkitgtk" ,webkitgtk)
;; TODO: We must wrap ring-client-gnome to force using the
@@ -563,6 +562,7 @@ This package provides a library common to all Jami clients.")
("sqlite" ,sqlite-with-column-metadata)))
(native-inputs
`(("pkg-config" ,pkg-config)
+ ("gettext" ,gnu-gettext)
("glib:bin" ,glib "bin")
("doxygen" ,doxygen)))
(propagated-inputs
--
2.26.1
J
J
Jan Wielkiewicz wrote on 17 Apr 2020 02:34
[PATCH 19/30] gnu: jami.scm: Untabify by emacs.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200417003433.5608-19-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/jami.scm | 74 +++++++++++++++++++++----------------------
1 file changed, 37 insertions(+), 37 deletions(-)

Toggle diff (149 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 2a5d282fdd..96969eb349 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -133,7 +133,7 @@
"CFLAGS=-fPIC"
"CXXFLAGS=-fPIC")
#:modules ((guix build utils)
- ,@(@@ (guix build-system gnu) %default-modules))
+ ,@(@@ (guix build-system gnu) %default-modules))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'make-git-checkout-writable
@@ -165,7 +165,7 @@
"ignore_ipv6_on_transport_check"
"fix_turn_connection_failure"
"disable_local_resolution"
- "fix_assert_on_connection_attempt"))
+ "fix_assert_on_connection_attempt"))
#t)))
;; TODO: We could use substitute-keyword-arguments instead of
;; repeating the phases from pjproject, but somehow it does
@@ -225,7 +225,7 @@
"--enable-protocol=udp"
"--enable-protocol=unix"
"--enable-protocol=pipe"
- ;; enable muxers/demuxers
+ ;; enable muxers/demuxers
"--disable-demuxers"
"--disable-muxers"
"--enable-muxer=rtp"
@@ -260,14 +260,14 @@
"--enable-demuxer=h263"
"--enable-demuxer=h264"
"--enable-demuxer=hevc"
- ;; enable parsers
+ ;; enable parsers
"--enable-parser=h263"
"--enable-parser=h264"
"--enable-parser=mpeg4video"
"--enable-parser=vp8"
"--enable-parser=vp9"
"--enable-parser=opus"
- ;; encoders/decoders
+ ;; encoders/decoders
"--enable-encoder=adpcm_g722"
"--enable-decoder=adpcm_g722"
"--enable-encoder=rawvideo"
@@ -297,7 +297,7 @@
"--enable-decoder=libspeex"
"--enable-encoder=libopus"
"--enable-decoder=libopus"
- ;; decoders for ringtones and audio streaming
+ ;; decoders for ringtones and audio streaming
"--enable-decoder=flac"
"--enable-decoder=vorbis"
"--enable-decoder=aac"
@@ -331,7 +331,7 @@
"--enable-decoder=pcm_s8_planar"
"--enable-decoder=pcm_u16be"
"--enable-decoder=pcm_u16le"
- ;; encoders/decoders for images
+ ;; encoders/decoders for images
"--enable-encoder=gif"
"--enable-decoder=gif"
"--enable-encoder=jpegls"
@@ -344,7 +344,7 @@
"--enable-decoder=bmp"
"--enable-encoder=tiff"
"--enable-decoder=tiff"
- ;; filters
+ ;; filters
"--enable-filter=scale"
"--enable-filter=overlay"
"--enable-filter=amix"
@@ -355,7 +355,7 @@
"--enable-filter=fps"
"--enable-filter=transpose"
"--enable-filter=pad")
- ;; platform specific options
+ ;; platform specific options
(if (string-contains (%current-system) "linux")
'("--enable-pic"
"--extra-cxxflags=-fPIC --extra-cflags=-fPIC"
@@ -375,34 +375,34 @@
"--enable-encoder=vp8_vaapi"
"--enable-encoder=mjpeg_vaapi"
))
- (cond ((string?= (%current-system) "i386")
- '("--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"))
- ((string?= (%current-system) "x86_64")
- '("--arch=x86_64"
- "--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"))
- ((string?= (%current-system) "aarch64-linux") '("--arch=aarch64"))
- ((string?= (%current-system) "arm64-linux") '("--arch=aarch64"))
- ((string?= (%current-system) "arm") '("--arch=arm"))
- (else '()))))
+ (cond ((string?= (%current-system) "i386")
+ '("--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"))
+ ((string?= (%current-system) "x86_64")
+ '("--arch=x86_64"
+ "--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"))
+ ((string?= (%current-system) "aarch64-linux") '("--arch=aarch64"))
+ ((string?= (%current-system) "arm64-linux") '("--arch=aarch64"))
+ ((string?= (%current-system) "arm") '("--arch=arm"))
+ (else '()))))
((#:phases phases)
`(modify-phases ,phases
(add-after 'unpack 'make-git-checkout-writable
--
2.26.1
J
J
Jan Wielkiewicz wrote on 17 Apr 2020 02:34
[PATCH 20/30] gnu: jami: Bump to 20200214.1.7488e86.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200417003433.5608-20-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/jami.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Toggle diff (24 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 96969eb349..f67ef45072 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -59,7 +59,7 @@
#:use-module (guix packages)
#:use-module (guix utils))
-(define %jami-version "20200206.2.996bf03")
+(define %jami-version "20200214.1.7488e86")
(define* (jami-source #:key without-daemon)
(origin
@@ -75,7 +75,7 @@
#f))
(sha256
(base32
- "0f8j9xv5whw3jvxnmvz9w1xq2vc5a9a0f1lpif1gdkk6bl1157lz"))))
+ "174akfri3l1wjchkybz3ida975k7fxwd9vhpfxqyliy1i894z721"))))
(define-public jami-apply-dependency-patches
'(lambda* (#:key inputs dep-name patches)
--
2.26.1
J
J
Jan Wielkiewicz wrote on 17 Apr 2020 02:34
[PATCH 21/30] gnu: opendht: Bump to 2.0.0rc2.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200417003433.5608-21-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/networking.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Toggle diff (24 lines)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 8c3a2137eb..7707032aba 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -2648,7 +2648,7 @@ and targeted primarily for asynchronous processing of HTTP-requests.")
(define-public opendht
(package
(name "opendht")
- (version "2.0.0rc1")
+ (version "2.0.0rc2")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -2657,7 +2657,7 @@ and targeted primarily for asynchronous processing of HTTP-requests.")
(file-name (git-file-name name version))
(sha256
(base32
- "1adpdvpc7dwc973803nng3mkqn6x9k93xfsy59f1n5dnv5xmbg9w"))))
+ "1l3j55qqm894jc9r2sd55snqpcdp9k0kmy7iprpf707jg67c22ij"))))
;; Since 2.0, the gnu-build-system does not seem to work anymore, upstream bug?
(build-system cmake-build-system)
(inputs
--
2.26.1
J
J
Jan Wielkiewicz wrote on 17 Apr 2020 02:34
[PATCH 22/30] gnu: networking.scm: Add missing copyright year.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200417003433.5608-22-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/networking.scm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Toggle diff (15 lines)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 7707032aba..8f020a6179 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -33,7 +33,7 @@
;;; Copyright © 2019 Brice Waegeneire <brice@waegenei.re>
;;; Copyright © 2019 Tonton <tonton@riseup.net>
;;; Copyright © 2019, 2020 Alex Griffin <a@ajgrf.com>
-;;; Copyright © 2019 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
+;;; Copyright © 2019, 2020 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
;;; Copyright © 2019 Daniel Schaefer <git@danielschaefer.me>
;;; Copyright © 2019 Diego N. Barbato <dnbarbato@posteo.de>
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
--
2.26.1
J
J
Jan Wielkiewicz wrote on 17 Apr 2020 02:34
[PATCH 23/30] gnu: pjproject, pjproject-jami: Remove broken pjproject package. Make pjproject-jami package stand-alone by moving package code from pjproject into it.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200417003433.5608-23-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/jami.scm | 67 +++++++++++++++++++++++++++--
gnu/packages/telephony.scm | 88 --------------------------------------
2 files changed, 63 insertions(+), 92 deletions(-)

Toggle diff (188 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index f67ef45072..61236ff9a0 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -95,11 +95,66 @@
(define-public pjproject-jami
(package
- (inherit pjproject)
(name "pjproject-jami")
+ (version "2.9")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/pjsip/pjproject.git")
+ (commit "5dfa75be7d69047387f9b0436dd9492bbbf03fe4")))
+ (modules '((guix build utils)))
+ (patches
+ (search-patches "pjproject-fix.patch"))
+ (snippet
+ '(begin
+ (let ((third-party-directories
+ ;; Things we don't need:
+ ;; BaseClasses - contains libraries from Windows SDK
+ ;; we don't need it, at least not now.
+ (list "BaseClasses" "g7221" "ilbc" "milenage"
+ "speex" "threademulation" "yuv" "bdsound"
+ "gsm" "mp3" "resample" "srtp" "webrtc"
+ ;; Keep only resample, build and README.txt.
+ "build/baseclasses" "build/g7221" "build/gsm"
+ "build/ilbc" "build/milenage" "build/resample"
+ "build/samplerate" "build/speex" "build/srtp"
+ "build/webrtc" "build/yuv")))
+ ;; Keep only Makefiles related to resample.
+ (for-each (lambda (directory)
+ (delete-file-recursively
+ (string-append "third_party/" directory)))
+ third-party-directories)
+ #t)
+ (let ((third-party-dirs
+ (list "gsm" "ilbc" "speex" "g7221" "srtp"
+ "portaudio" "resample")))
+ (for-each
+ (lambda (dirs)
+ (substitute* "third_party/build/os-linux.mak"
+ (((string-append "DIRS += " dirs)) "")))
+ third-party-dirs))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1ayj6n7zd5wvd1nzj2k9s57fb4ckc2fv92k5sjvhd87yg69k3393"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("portaudio" ,portaudio)))
+ (propagated-inputs
+ ;; These packages are referenced in the Libs field of the pkg-config
+ ;; file that will be installed by pjproject.
+ `(("speex" ,speex)
+ ("libsrtp" ,libsrtp)
+ ("gnutls" ,gnutls)
+ ("resample", resample)
+ ("util-linux" ,util-linux)))
(native-inputs
- `(("savoir-faire-linux-patches" ,(jami-source))
- ,@(package-native-inputs pjproject)))
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("pkg-config" ,pkg-config)
+ ("libtool" ,libtool)
+ ("savoir-faire-linux-patches" ,(jami-source))))
(arguments
`(#:tests? #f
;; See ring-project/daemon/contrib/src/pjproject/rules.mak.
@@ -183,7 +238,11 @@
(substitute* "Makefile"
(("selftest: pjlib-test pjlib-util-test pjnath-test pjmedia-test pjsip-test pjsua-test")
"selftest: pjlib-test pjlib-util-test pjmedia-test"))
- #t)))))))
+ #t)))))
+ (home-page "https://www.pjsip.org")
+ (synopsis "SIP (protocol) stack used by Jami")
+ (description "Pjsip is a C library implementing the SIP protocol. This version is highly modified for use in GNU Jami.")
+ (license license:gpl2+)))
(define-public ffmpeg-jami
(package
diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index 64a5827795..b3d2b8bc70 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -644,94 +644,6 @@ phone to IP phone communication or in a network using a SIP proxy to route your
calls and messages")
(license license:gpl2+)))
-(define-public pjproject
- (package
- (name "pjproject")
- (version "2.9")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/pjsip/pjproject.git")
- (commit "5dfa75be7d69047387f9b0436dd9492bbbf03fe4")))
- (modules '((guix build utils)))
- (patches
- (search-patches "pjproject-fix.patch"))
- (snippet
- '(begin
- (let ((third-party-directories
- ;; Things we don't need:
- ;; BaseClasses - contains libraries from Windows SDK
- ;; we don't need it, at least not now.
- (list "BaseClasses" "g7221" "ilbc" "milenage"
- "speex" "threademulation" "yuv" "bdsound"
- "gsm" "mp3" "resample" "srtp" "webrtc"
- ;; Keep only resample, build and README.txt.
- "build/baseclasses" "build/g7221" "build/gsm"
- "build/ilbc" "build/milenage" "build/resample"
- "build/samplerate" "build/speex" "build/srtp"
- "build/webrtc" "build/yuv")))
- ;; Keep only Makefiles related to resample.
- (for-each (lambda (directory)
- (delete-file-recursively
- (string-append "third_party/" directory)))
- third-party-directories)
- #t)
- (let ((third-party-dirs
- (list "gsm" "ilbc" "speex" "g7221" "srtp"
- "portaudio" "resample")))
- (for-each
- (lambda (dirs)
- (substitute* "third_party/build/os-linux.mak"
- (((string-append "DIRS += " dirs)) "")))
- third-party-dirs))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1ayj6n7zd5wvd1nzj2k9s57fb4ckc2fv92k5sjvhd87yg69k3393"))))
- (build-system gnu-build-system)
- (inputs
- `(("portaudio" ,portaudio)))
- (propagated-inputs
- ;; These packages are referenced in the Libs field of the pkg-config
- ;; file that will be installed by pjproject.
- `(("speex" ,speex)
- ("libsrtp" ,libsrtp)
- ("gnutls" ,gnutls)
- ("resample", resample)
- ("util-linux" ,util-linux)))
- (native-inputs
- `(("autoconf" ,autoconf)
- ("automake" ,automake)
- ("pkg-config" ,pkg-config)
- ("libtool" ,libtool)))
- (arguments
- `( ;; FIXME make: No rule to make target
- ;; 'pjlib-test-unknown-[something]-gnu'.
- #:tests? #f
- ;; #:test-target "selftest"
- #:phases
- (modify-phases %standard-phases
- (add-before 'build 'build-dep
- (lambda _ (invoke "make" "dep")))
- (add-before 'patch-source-shebangs 'autoconf
- (lambda _
- (invoke "autoconf" "-v" "-f" "-i" "-o"
- "aconfigure" "aconfigure.ac")))
- (add-before 'autoconf 'disable-some-tests
- ;; Three of the six test programs fail due to missing network
- ;; access.
- (lambda _
- (substitute* "Makefile"
- (("selftest: pjlib-test pjlib-util-test pjnath-test pjmedia-test pjsip-test pjsua-test")
- "selftest: pjlib-test pjlib-util-test pjmedia-test"))
- #t)))))
- (home-page "https://www.pjsip.org")
- (synopsis "Session Initiation Protocol (SIP) stack")
- (description "PJProject provides an implementation of the Session
-Initiation Protocol (SIP) and a multimedia framework.")
- (license license:gpl2+)))
-
(define-public libtgvoip
(package
(name "libtgvoip")
--
2.26.1
J
J
Jan Wielkiewicz wrote on 17 Apr 2020 02:34
[PATCH 24/30] gnu: jami: Bump to 20200326.1.f8d3d10.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200417003433.5608-24-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/jami.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Toggle diff (24 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 61236ff9a0..7d4f13250b 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -59,7 +59,7 @@
#:use-module (guix packages)
#:use-module (guix utils))
-(define %jami-version "20200214.1.7488e86")
+(define %jami-version "20200326.1.f8d3d10")
(define* (jami-source #:key without-daemon)
(origin
@@ -75,7 +75,7 @@
#f))
(sha256
(base32
- "174akfri3l1wjchkybz3ida975k7fxwd9vhpfxqyliy1i894z721"))))
+ "05mi8axxfslbmqc0658zxnjyhgihh5mn97g8hdasd4ip96gyyv1p"))))
(define-public jami-apply-dependency-patches
'(lambda* (#:key inputs dep-name patches)
--
2.26.1
J
J
Jan Wielkiewicz wrote on 17 Apr 2020 02:34
[PATCH 25/30] gnu: pjproject-jami: Bump to 2.10; apply some cool patches.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200417003433.5608-25-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/jami.scm | 36 +++++++++++++-----------------------
1 file changed, 13 insertions(+), 23 deletions(-)

Toggle diff (76 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 7d4f13250b..d52bfa866e 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -96,16 +96,14 @@
(define-public pjproject-jami
(package
(name "pjproject-jami")
- (version "2.9")
+ (version "2.10")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/pjsip/pjproject.git")
- (commit "5dfa75be7d69047387f9b0436dd9492bbbf03fe4")))
+ (commit "3e7b75cb2e482baee58c1991bd2fa4fb06774e0d")))
(modules '((guix build utils)))
- (patches
- (search-patches "pjproject-fix.patch"))
(snippet
'(begin
(let ((third-party-directories
@@ -137,7 +135,7 @@
(file-name (git-file-name name version))
(sha256
(base32
- "1ayj6n7zd5wvd1nzj2k9s57fb4ckc2fv92k5sjvhd87yg69k3393"))))
+ "1aklicpgwc88578k03i5d5cm5h8mfm7hmx8vfprchbmaa2p8f4z0"))))
(build-system gnu-build-system)
(inputs
`(("portaudio" ,portaudio)))
@@ -159,7 +157,7 @@
`(#:tests? #f
;; See ring-project/daemon/contrib/src/pjproject/rules.mak.
#:configure-flags
- (list "--disable-oss"
+ (list ;;"--disable-oss" ; do we need this?
"--disable-sound"
"--disable-video"
"--enable-ext-sound"
@@ -204,23 +202,15 @@
(jami-apply-dependency-patches #:inputs inputs
#:dep-name "pjproject"
#:patches
- '("fix_turn_alloc_failure"
- "rfc2466"
- "ipv6"
- "multiple_listeners"
- "pj_ice_sess"
- "fix_turn_fallback"
- "fix_ioqueue_ipv6_sendto"
- "add_dtls_transport"
- "rfc6544"
- "ice_config"
- "sip_config"
- "fix_first_packet_turn_tcp"
- "fix_ebusy_turn"
- "ignore_ipv6_on_transport_check"
- "fix_turn_connection_failure"
- "disable_local_resolution"
- "fix_assert_on_connection_attempt"))
+ '("0001-rfc6544"
+ "0002-rfc2466"
+ "0003-add-tcp-keep-alive"
+ "0004-multiple_listeners"
+ "0005-fix_ebusy_turn"
+ "0006-ignore_ipv6_on_transport_check"
+ "0007-pj_ice_sess"
+ "0008-fix_ioqueue_ipv6_sendto"
+ "0009-add-config-site"))
#t)))
;; TODO: We could use substitute-keyword-arguments instead of
;; repeating the phases from pjproject, but somehow it does
--
2.26.1
J
J
Jan Wielkiewicz wrote on 17 Apr 2020 02:34
[PATCH 26/30] gnu: jami.scm: Indent code properly.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200417003433.5608-26-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/jami.scm | 54 +++++++++++++++++++++----------------------
1 file changed, 27 insertions(+), 27 deletions(-)

Toggle diff (67 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index d52bfa866e..899c6fb747 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -158,33 +158,33 @@
;; See ring-project/daemon/contrib/src/pjproject/rules.mak.
#:configure-flags
(list ;;"--disable-oss" ; do we need this?
- "--disable-sound"
- "--disable-video"
- "--enable-ext-sound"
- "--disable-speex-aec"
- "--disable-g711-codec"
- "--disable-l16-codec"
- "--disable-gsm-codec"
- "--disable-g722-codec"
- "--disable-g7221-codec"
- "--disable-speex-codec"
- "--disable-ilbc-codec"
- "--disable-opencore-amr"
- "--disable-silk"
- "--disable-sdl"
- "--disable-ffmpeg"
- "--disable-v4l2"
- "--disable-openh264"
- "--disable-resample"
- "--disable-libwebrtc"
- "--with-gnutls"
- "--with-external-srtp"
- ;; We need -fPIC or else we get the following error when linking
- ;; against pjproject-jami:
- ;; relocation R_X86_64_32S against `.rodata' can not be used when
- ;; making a shared object;
- "CFLAGS=-fPIC"
- "CXXFLAGS=-fPIC")
+ "--disable-sound"
+ "--disable-video"
+ "--enable-ext-sound"
+ "--disable-speex-aec"
+ "--disable-g711-codec"
+ "--disable-l16-codec"
+ "--disable-gsm-codec"
+ "--disable-g722-codec"
+ "--disable-g7221-codec"
+ "--disable-speex-codec"
+ "--disable-ilbc-codec"
+ "--disable-opencore-amr"
+ "--disable-silk"
+ "--disable-sdl"
+ "--disable-ffmpeg"
+ "--disable-v4l2"
+ "--disable-openh264"
+ "--disable-resample"
+ "--disable-libwebrtc"
+ "--with-gnutls"
+ "--with-external-srtp"
+ ;; We need -fPIC or else we get the following error when linking
+ ;; against pjproject-jami:
+ ;; relocation R_X86_64_32S against `.rodata' can not be used when
+ ;; making a shared object;
+ "CFLAGS=-fPIC"
+ "CXXFLAGS=-fPIC")
#:modules ((guix build utils)
,@(@@ (guix build-system gnu) %default-modules))
#:phases
--
2.26.1
J
J
Jan Wielkiewicz wrote on 17 Apr 2020 02:34
[PATCH 27/30] gnu: opendht: Bump to 2.0.0.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200417003433.5608-27-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/networking.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Toggle diff (24 lines)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 8f020a6179..c8d009080b 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -2648,7 +2648,7 @@ and targeted primarily for asynchronous processing of HTTP-requests.")
(define-public opendht
(package
(name "opendht")
- (version "2.0.0rc2")
+ (version "2.0.0")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -2657,7 +2657,7 @@ and targeted primarily for asynchronous processing of HTTP-requests.")
(file-name (git-file-name name version))
(sha256
(base32
- "1l3j55qqm894jc9r2sd55snqpcdp9k0kmy7iprpf707jg67c22ij"))))
+ "1q1fwk8wwk9r6bp0indpr60ql668lsk16ykslacyhrh7kg97kvhr"))))
;; Since 2.0, the gnu-build-system does not seem to work anymore, upstream bug?
(build-system cmake-build-system)
(inputs
--
2.26.1
J
J
Jan Wielkiewicz wrote on 17 Apr 2020 02:34
[PATCH 28/30] gnu: jami: Bump to 20200401.1.6f090de.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200417003433.5608-28-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/jami.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Toggle diff (24 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 899c6fb747..608baea660 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -59,7 +59,7 @@
#:use-module (guix packages)
#:use-module (guix utils))
-(define %jami-version "20200326.1.f8d3d10")
+(define %jami-version "20200401.1.6f090de")
(define* (jami-source #:key without-daemon)
(origin
@@ -75,7 +75,7 @@
#f))
(sha256
(base32
- "05mi8axxfslbmqc0658zxnjyhgihh5mn97g8hdasd4ip96gyyv1p"))))
+ "0lryx9n1jn0jsw7s10pbwivqv0d5m3jdzhdhdyg5n02v72mjvkmh"))))
(define-public jami-apply-dependency-patches
'(lambda* (#:key inputs dep-name patches)
--
2.26.1
J
J
Jan Wielkiewicz wrote on 17 Apr 2020 02:34
[PATCH 29/30] gnu: jami: Replace gnu-gettext with gettext-minimal, just like on master.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200417003433.5608-29-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/jami.scm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Toggle diff (15 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 608baea660..00ee79fce4 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -611,7 +611,7 @@ This package provides a library common to all Jami clients.")
("sqlite" ,sqlite-with-column-metadata)))
(native-inputs
`(("pkg-config" ,pkg-config)
- ("gettext" ,gnu-gettext)
+ ("gettext" ,gettext-minimal)
("glib:bin" ,glib "bin")
("doxygen" ,doxygen)))
(propagated-inputs
--
2.26.1
J
J
Jan Wielkiewicz wrote on 17 Apr 2020 02:34
[PATCH 30/30] gnu: pjproject-jami: Add the missing "--enable-epoll" flag.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200417003433.5608-30-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/jami.scm | 1 +
1 file changed, 1 insertion(+)

Toggle diff (14 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 00ee79fce4..58280b3b7c 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -160,6 +160,7 @@
(list ;;"--disable-oss" ; do we need this?
"--disable-sound"
"--disable-video"
+ "--enable-epoll" ; if have linux
"--enable-ext-sound"
"--disable-speex-aec"
"--disable-g711-codec"
--
2.26.1
M
M
Mathieu Othacehe wrote on 18 Apr 2020 14:13
Re: [bug#40677] [PATCH 01/30] gnu: jami: Move Jami and its dependencies to jami.scm.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87mu79j8jt.fsf@gmail.com
Hello Jan,

Nice work! Please find my comments below.

Toggle quote (5 lines)
> gnu/packages/jami.scm | 350 +++++++++++++++++++++++++++++++++++++
> gnu/packages/telephony.scm | 291 ------------------------------
> 2 files changed, 350 insertions(+), 291 deletions(-)
> create mode 100644 gnu/packages/jami.scm

You also need to update 'gnu/local.mk' when adding new files.

Thanks,

Mathieu
M
M
Mathieu Othacehe wrote on 18 Apr 2020 14:16
Re: [bug#40677] [PATCH 03/30] gnu: jami: Fix downloading by changing the prefix to "jami_"; Use the "release" dir instead of the deprecated "ring-release".
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87imhxj8fc.fsf@gmail.com
You need to add a commit description for this one. What's written in the
subject line should instead be part of it.

Mathieu

Toggle quote (17 lines)
> ---
> gnu/packages/jami.scm | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
> index 0e6218c4a0..8601ad718d 100644
> --- a/gnu/packages/jami.scm
> +++ b/gnu/packages/jami.scm
> @@ -63,7 +63,7 @@
> (define* (jami-source #:key without-daemon)
> (origin
> (method url-fetch)
> - (uri (string-append "https://dl.jami.net/ring-release/tarballs/ring_"
> + (uri (string-append "https://dl.jami.net/release/tarballs/jami_"
> %jami-version
> ".tar.gz"))
> (modules '((guix build utils)))
M
M
Mathieu Othacehe wrote on 18 Apr 2020 14:24
Re: [bug#40677] [PATCH 04/30] gnu: jami: Add a generalized procedure for applying patches made by Savoir-faire linux to Jami dependencies.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87eeslj823.fsf@gmail.com
Toggle quote (2 lines)
> + (let ((savoir-faire-linux-patches-directory "Savoir-faire Linux patches"))

Do we have to name the directory this way, or could use something
shorter and without spaces :) ?

Mathieu
M
M
Mathieu Othacehe wrote on 18 Apr 2020 14:27
Re: [bug#40677] [PATCH 05/30] gnu: pjproject-jami: Use the jami-apply-dependency-patches procedure.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87a739j7xj.fsf@gmail.com
Toggle quote (62 lines)
> - (let ((savoir-faire-linux-patches-directory "Savoir-faire Linux patches")
> - ;; Comes from
> - ;; "ring-project/daemon/contrib/src/pjproject/rules.mak".
> - ;; WARNING: These amount for huge changes in pjproject.
> - (savoir-faire-linux-patches
> - '("fix_turn_alloc_failure"
> - "rfc2466"
> - "ipv6"
> - "multiple_listeners"
> - "pj_ice_sess"
> - "fix_turn_fallback"
> - "fix_ioqueue_ipv6_sendto"
> - "add_dtls_transport"
> - "rfc6544"
> - "ice_config"
> - "sip_config"
> - "fix_first_packet_turn_tcp"
> - "fix_ebusy_turn"
> - "ignore_ipv6_on_transport_check"
> - "fix_turn_connection_failure"
> - ;; "uwp_vs" ; for windows
> - "disable_local_resolution")))
> - (mkdir-p savoir-faire-linux-patches-directory)
> - (invoke "tar" "-xvf" (assoc-ref inputs "savoir-faire-linux-patches")
> - "-C" savoir-faire-linux-patches-directory
> - "--strip-components=5"
> - "ring-project/daemon/contrib/src/pjproject")
> - (for-each
> - (lambda (file)
> - (invoke "patch" "--force" "-p1" "-i"
> - (string-append savoir-faire-linux-patches-directory "/"
> - file ".patch")))
> - savoir-faire-linux-patches))
> - #t))
> + (let ((jami-apply-dependency-patches ,jami-apply-dependency-patches))
> + ;; Comes from
> + ;; "ring-project/daemon/contrib/src/pjproject/rules.mak".
> + ;; WARNING: These amount for huge changes in pjproject.
> + (jami-apply-dependency-patches #:inputs inputs
> + #:dep-name "pjproject"
> + #:patches
> + '("fix_turn_alloc_failure"
> + "rfc2466"
> + "ipv6"
> + "multiple_listeners"
> + "pj_ice_sess"
> + "fix_turn_fallback"
> + "fix_ioqueue_ipv6_sendto"
> + "add_dtls_transport"
> + "rfc6544"
> + "ice_config"
> + "sip_config"
> + "fix_first_packet_turn_tcp"
> + "fix_ebusy_turn"
> + "ignore_ipv6_on_transport_check"
> + "fix_turn_connection_failure"
> + "disable_local_resolution"))
> + #t)))
> ;; TODO: We could use substitute-keyword-arguments instead of
> ;; repeating the phases from pjproject, but somehow it does
> ;; not work.

You can squash this patch with the previous one.

Mathieu
M
M
Mathieu Othacehe wrote on 18 Apr 2020 14:30
Re: [bug#40677] [PATCH 06/30] gnu: Add libnatpmp.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
875zdxj7r4.fsf@gmail.com
Toggle quote (2 lines)
> + (synopsis "C Library implementing NAT-PMP")

"library"

Toggle quote (3 lines)
> + (description
> + "libnatpmp is a portable and asynchronous implementaiton of the NAT Port Mapping Protocol (NAT-PMP) written in C.")

This line is over the 78 column limit. Plus you can use texinfo markup
for "libnatpmp" as explained here:

Thanks,

Mathieu
M
M
Mathieu Othacehe wrote on 18 Apr 2020 14:33
Re: [bug#40677] [PATCH 07/30] gnu: libring: Add libnatpmp as an optional dependency; remove unnecessary comment.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
871rolj7ni.fsf@gmail.com
You need to write a commit log message compliant with GNU Coding
Standards as explained here:

Thanks,

Mathieu
M
M
Mathieu Othacehe wrote on 18 Apr 2020 14:37
Re: [bug#40677] [PATCH 08/30] gnu: libupnp: Bump to 1.8.6; change the download method to git-fetch; add missing dependencies.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87tv1hhsvm.fsf@gmail.com
Do not forget to add your copyright on top of the file.

Toggle quote (8 lines)
> - (method url-fetch)
> - (uri (string-append "mirror://sourceforge/pupnp/pupnp/libUPnP%20"
> - version "/" name "-" version ".tar.bz2"))
> + (method git-fetch)
> + (uri (git-reference
> + (url "https://github.com/mrjimenez/pupnp.git")
> + (commit (string-append "release-" version))))

Seems that this url is redirected to https://github.com/pupnp/pupnp.

Toggle quote (10 lines)
> (sha256
> (base32
> - "0hzsd7rvfa87b4hxg9yj4xhdfxx9sp09r9sqdl3mqhvmcyw018y5"))))
> + "1jlb6qh47513h2simy0zxia5q61w1c31mnwmjqpr2nf832lmnpk4"))))
> + (native-inputs
> + `(("autoconf" ,autoconf)
> + ("automake" ,automake)
> + ("libtool" ,libtool)
> + ("pkg-config" ,pkg-config)))

There's a mix of tab and space characters here.

Thanks,

Mathieu
M
M
Mathieu Othacehe wrote on 18 Apr 2020 14:49
Re: [bug#40677] [PATCH 10/30] gnu: Add ffmpeg-jami.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87pnc5hsaw.fsf@gmail.com
Toggle quote (11 lines)
> +(define-public ffmpeg-jami
> + (package
> + (inherit ffmpeg)
> + (name "ffmpeg-jami")
> + (version "4.2.1")
> + (source (origin
> + (method git-fetch)
> + (uri (git-reference
> + (url "https://git.ffmpeg.org/ffmpeg.git")
> + (commit "59da9dcd7ef6277e4e04998ced71b05a6083c635")))

Do we need this particular commit? If so the version should be:

Toggle snippet (3 lines)
(git-version "4.2.1" revision commit)

you will find some examples in packages such as guile-webutils, or
boost-sync.

Toggle quote (196 lines)
> + (append '("--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"
> + ;; enable muxers/demuxers
> + "--disable-demuxers"
> + "--disable-muxers"
> + "--enable-muxer=rtp"
> + "--enable-muxer=g722"
> + "--enable-muxer=h263"
> + "--enable-muxer=h264"
> + "--enable-muxer=hevc"
> + "--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"
> + "--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"
> + ;; enable parsers
> + "--enable-parser=h263"
> + "--enable-parser=h264"
> + "--enable-parser=mpeg4video"
> + "--enable-parser=vp8"
> + "--enable-parser=vp9"
> + "--enable-parser=opus"
> + ;; encoders/decoders
> + "--enable-encoder=adpcm_g722"
> + "--enable-decoder=adpcm_g722"
> + "--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"
> + ;; decoders for ringtones and audio streaming
> + "--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"
> + ;; encoders/decoders for images
> + "--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"
> + ;; filters
> + "--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")
> + ;; platform specific options
> + (if (string-contains (%current-system) "linux")
> + '("--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-encoder=h264_vaapi"
> + "--enable-encoder=vp8_vaapi"
> + "--enable-encoder=mjpeg_vaapi"
> + ))
> + (cond ((string?= (%current-system) "i386")
> + '("--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"))
> + ((string?= (%current-system) "x86_64")
> + '("--arch=x86_64"
> + "--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"))
> + ((string?= (%current-system) "aarch64-linux") '("--arch=aarch64"))
> + ((string?= (%current-system) "arm64-linux") '("--arch=aarch64"))
> + ((string?= (%current-system) "arm") '("--arch=arm"))
> + (else '()))))

This long list is a bit scary. Could inherit from the one of ffmpeg and
add/remove only what's necessary? The default values should also be
omitted.

Toggle quote (4 lines)
> + ;; Comes from
> + ;; "ring-project/daemon/contrib/src/pjproject/rules.mak".
> + ;; WARNING: These amount for huge changes in pjproject.

That's only three patches here? You can maybe remove this comment.

Mathieu
M
M
Mathieu Othacehe wrote on 18 Apr 2020 14:54
Re: [bug#40677] [PATCH 13/30] gnu: pjproject: Add and apply a patch fixing the crash.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87lfmths42.fsf@gmail.com
Toggle quote (3 lines)
> gnu/packages/patches/pjproject-fix.patch | 21 +++++++++++++++++++++
> gnu/packages/telephony.scm | 2 ++

New patches should also be added to 'gnu/local.mk' file. You can find an
example here: b03ee02f.

You also need to explain where this patch comes from, and why it is
necessary.

Thanks,

Mathieu
M
M
Mathieu Othacehe wrote on 18 Apr 2020 14:55
Re: [bug#40677] [PATCH 14/30] gnu: jami.scm: Add a missing module.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87h7xhhs1g.fsf@gmail.com
Toggle quote (6 lines)
> #:use-module (guix git-download)
> - #:use-module (guix packages))
> + #:use-module (guix packages)
> + #:use-module (guix utils))
>

This should be squashed with the patch that requires those two modules.

Mathieu
M
M
Mathieu Othacehe wrote on 18 Apr 2020 14:56
Re: [bug#40677] [PATCH 15/30] gnu: jami: Bump to 20200206.2.996bf03.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87d085hrzr.fsf@gmail.com
Toggle quote (3 lines)
> -(define %jami-version "20200203.1.5ee7e10")
> +(define %jami-version "20200206.2.996bf03")

There are multiple patches updating this version. They all should be
squashed into a single one, so that the serie is shorter and hence
easier to review :)

Mathieu
M
M
Mathieu Othacehe wrote on 18 Apr 2020 15:00
Re: [bug#40677] [PATCH 16/30] gnu: pjproject-jami: Add a new SFL patch.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
878sithrtf.fsf@gmail.com
Toggle quote (5 lines)
> - "disable_local_resolution"))
> + "disable_local_resolution"
> + "fix_assert_on_connection_attempt"))
> #t)))

This indentation is wrong here. You should not use tabulations. Also
this is over the 78 column limit. A trick to respect it would be to
introduce a line break between the '#:inputs' key above and let your
editor figure it out.

Mathieu
M
M
Mathieu Othacehe wrote on 18 Apr 2020 15:03
Re: [bug#40677] [PATCH 23/30] gnu: pjproject, pjproject-jami: Remove broken pjproject package. Make pjproject-jami package stand-alone by moving package code from pjproject into it.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
874kthhro1.fsf@gmail.com
Why is pjproject package "broken"? Could pjproject-jami inherit from it and
only change the suitable bits?

Mathieu
M
M
Mathieu Othacehe wrote on 18 Apr 2020 15:08
Re: [bug#40677] [PATCH 19/30] gnu: jami.scm: Untabify by emacs.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87zhb9gcvr.fsf@gmail.com
Toggle quote (16 lines)
> "--enable-protocol=udp"
> "--enable-protocol=unix"
> "--enable-protocol=pipe"
> - ;; enable muxers/demuxers
> + ;; enable muxers/demuxers
> "--disable-demuxers"
> "--disable-muxers"
> "--enable-muxer=rtp"
> @@ -260,14 +260,14 @@
> "--enable-demuxer=h263"
> "--enable-demuxer=h264"
> "--enable-demuxer=hevc"
> - ;; enable parsers
> + ;; enable parsers
> "--enable-parser=h263"

All of this patch should be squashed with the previous patches. When
working on such a vast topic, the final phase of squashing, renaming and
reordering commits can be really cumbersome.

However, it is also really important as it makes the serie shorter and
easier to review. You can use the interactive rebase mode of Magit to
add some fun.

Mathieu
M
M
Mathieu Othacehe wrote on 18 Apr 2020 15:13
Re: [bug#40677] [PATCH 30/30] gnu: pjproject-jami: Add the missing "--enable-epoll" flag.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87v9lxgcna.fsf@gmail.com
Toggle quote (4 lines)
> "--disable-video"
> + "--enable-epoll" ; if have linux
> "--enable-ext-sound"

If this is a Linux specific flag, you may need to protect it with a
"hurd-triplet?" conditional (see libgc package for example).

Mathieu
J
Re: [bug#40677] [PATCH 23/30] gnu: pjproject, pjproject-jami: Remove broken pjproject package. Make pjproject-jami package stand-alone by moving package code from pjproject into it.
(name . Mathieu Othacehe)(address . m.othacehe@gmail.com)(address . 40677@debbugs.gnu.org)
20200419214442.46c665f3@kompiuter
On Sat, 18 Apr 2020 15:03:42 +0200
Mathieu Othacehe <m.othacehe@gmail.com> wrote:

Toggle quote (5 lines)
> Why is pjproject package "broken"? Could pjproject-jami inherit from
> it and only change the suitable bits?
>
> Mathieu

The pjproject package we had in Guix have never worked - the build
phase always failed. I attempted to fix it, but never successfully.
Jami is also the only package that uses pjproject, but a highly
modified version. I did some research about it and it seems pjproject
can't even be used as a system-wide library.

That's what I found:


Jan Wielkiewicz
J
Re: [bug#40677] [PATCH 16/30] gnu: pjproject-jami: Add a new SFL patch.
(name . Mathieu Othacehe)(address . m.othacehe@gmail.com)(address . 40677@debbugs.gnu.org)
20200419214907.4c66c96d@kompiuter
On Sat, 18 Apr 2020 15:00:28 +0200
Mathieu Othacehe <m.othacehe@gmail.com> wrote:

Toggle quote (14 lines)
> > -
> > "disable_local_resolution"))
> > +
> > "disable_local_resolution"
> > + "fix_assert_on_connection_attempt"))
> > #t)))
>
> This indentation is wrong here. You should not use tabulations. Also
> this is over the 78 column limit. A trick to respect it would be to
> introduce a line break between the '#:inputs' key above and let your
> editor figure it out.
>
> Mathieu

Is there a way to remove tabulations in emacs or to configure emacs so
that it won't use tabulations?

I tried to correct formatting using the ./etc/indent_code.el or
something, but could miss something.


Jan Wielkiewicz
J
Re: [bug#40677] [PATCH 15/30] gnu: jami: Bump to 20200206.2.996bf03.
(name . Mathieu Othacehe)(address . m.othacehe@gmail.com)(address . 40677@debbugs.gnu.org)
20200419214957.3ee4d68e@kompiuter
On Sat, 18 Apr 2020 14:56:40 +0200
Mathieu Othacehe <m.othacehe@gmail.com> wrote:

Toggle quote (9 lines)
> > -(define %jami-version "20200203.1.5ee7e10")
> > +(define %jami-version "20200206.2.996bf03")
>
> There are multiple patches updating this version. They all should be
> squashed into a single one, so that the serie is shorter and hence
> easier to review :)
>
> Mathieu

How do I do this gently in git?


Jan Wielkiewicz
J
Re: [bug#40677] [PATCH 10/30] gnu: Add ffmpeg-jami.
(name . Mathieu Othacehe)(address . m.othacehe@gmail.com)(address . 40677@debbugs.gnu.org)
20200419220357.1181934c@kompiuter
On Sat, 18 Apr 2020 14:49:59 +0200
Mathieu Othacehe <m.othacehe@gmail.com> wrote:

Toggle quote (9 lines)
> Do we need this particular commit? If so the version should be:
>
> --8<---------------cut here---------------start------------->8---
> (git-version "4.2.1" revision commit)
> --8<---------------cut here---------------end--------------->8---
>
> you will find some examples in packages such as guile-webutils, or
> boost-sync.

Because of the strange bugs I get in Jami, I tried to be as close as
possible to the official Jami package. They use this particular commit
and if I remember correctly, applying the patches failed without it.

The patches add:

-Hardware acceleration to use GPU instead CPU to encode/decode video
whenever possible
-All codecs available (but nor really important, it will be ok with
h264 + vp8)
-REMB feedback (./ffmpeg/rtp_ext_abs_send_time.patch) to automatically
adapt the bitrate and avoid dirty video.

Toggle quote (4 lines)
> This long list is a bit scary. Could inherit from the one of ffmpeg
> and add/remove only what's necessary? The default values should also
> be omitted.

I tried asking Jami devs how important are these flags, but never got
answer. I can ask again, but for now I must check one more thing
related to the strange bug I get.

Toggle quote (10 lines)
> > + ;; Comes from
> > + ;;
> > "ring-project/daemon/contrib/src/pjproject/rules.mak".
> > + ;; WARNING: These amount for huge changes in
> > pjproject.
>
> That's only three patches here? You can maybe remove this comment.
>
> Mathieu

Yes, right.


Jan Wielkiewicz
M
M
Michael Rohleder wrote on 19 Apr 2020 22:32
Re: [bug#40677] [PATCH 16/30] gnu: pjproject-jami: Add a new SFL patch.
(name . Jan)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87sggzb4ik.fsf@rohleder.de
Jan <tona_kosmicznego_smiecia@interia.pl> writes:
Toggle quote (3 lines)
> Is there a way to remove tabulations in emacs or to configure emacs so
> that it won't use tabulations?

this should help:

(setq-default indent-tabs-mode nil)

--
Pandora's Rule:
Never open a box you didn't close.
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEdV4t5dDVhcUueCgwfHr/vv7yyyUFAl6ctWQACgkQfHr/vv7y
yyUpkAf6A0K0kNagV4B+bwVE8Lz/7FaEY/dlQ9r6+75NjpRDiG91RLrdbLn3eC5G
oaRGVGDkqxgBSe0jKI/cVvWdrohk78puF3y3jTFSnkt1EDeTr6hvxiz/zk3s/YC4
37VurcFixPGcKlwn6h05Ln7YsAu0/W1fSlmtAcDh+3mzX0IGtzG32PebWm9rURq5
pBZp6MzHGHhUpyres4N42kg4kxrwKhH80jD05Mb/O4LDokvmjSoL+NMkFkHaV5Vz
bmKu10RmNvT+mG+rRI6og6on8JJWa2Zmdvfl+DYaEuuTbQFjQDYCZIYWGUkf+OgY
P1P5f2ii1uuLkQYjUZf8XVB+kZb0VA==
=cLyw
-----END PGP SIGNATURE-----

J
Re: [bug#40677] [PATCH 13/30] gnu: pjproject: Add and apply a patch fixing the crash.
(name . Mathieu Othacehe)(address . m.othacehe@gmail.com)(address . 40677@debbugs.gnu.org)
20200420002620.7a9f4fe1@kompiuter
On Sat, 18 Apr 2020 14:54:05 +0200
Mathieu Othacehe <m.othacehe@gmail.com> wrote:

Toggle quote (13 lines)
> > gnu/packages/patches/pjproject-fix.patch | 21 +++++++++++++++++++++
> > gnu/packages/telephony.scm | 2 ++
>
> New patches should also be added to 'gnu/local.mk' file. You can find
> an example here: b03ee02f.
>
> You also need to explain where this patch comes from, and why it is
> necessary.
>
> Thanks,
>
> Mathieu

I just removed this patch, because the issue was fixed in pjproject
2.10.


Jan Wielkiewicz
J
Code review problems resolved
(address . 40677@debbugs.gnu.org)
20200421005506.7d93ae37@kompiuter
Hello,

I think I addressed the problems Mathieu pointed out. Should I close
this issue and open a new one with corrected patches?



Jan Wielkiewicz
C
C
Christopher Baines wrote on 21 Apr 2020 09:04
(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87sggx48vb.fsf@cbaines.net
Jan <tona_kosmicznego_smiecia@interia.pl> writes:

Toggle quote (3 lines)
> I think I addressed the problems Mathieu pointed out. Should I close
> this issue and open a new one with corrected patches?

Assuming it's the same set of patches, just send them to this bug. You
can use -v2 with git send-email when sending the patches to help
indicate they're revised.

Thanks,

Chris
-----BEGIN PGP SIGNATURE-----

iQKTBAEBCgB9FiEEPonu50WOcg2XVOCyXiijOwuE9XcFAl6emxhfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDNF
ODlFRUU3NDU4RTcyMEQ5NzU0RTBCMjVFMjhBMzNCMEI4NEY1NzcACgkQXiijOwuE
9XdgnhAAs0kOiPIvyHna+N495QqM5TByeRHbZ9H9ClptucueysNO/2+sCyT233/g
pkSiXLHG82QRpbx7g1N5q+sgEoQ5Fc2OpZ5XOIF5/kkIHaV+0KJxbv+zYr+uhwSx
bPaliXcrHYP7uengRDKu4/3kICDPN5Rad4mTkyMlA1mBW/AI2PCi3GKUs9LxUWeN
d5C6D991GO36In0oQIJcAbd1kMy/Uw3kEyDi/7HNgMXv+I6VBXDxpNFLK+trKhJr
pqXYYNdPD3sP74KNW2XY+LN+lVIPi9jX60Q6i6NBM9bhk8cc88BCkrH9hWfExp03
ndybLBE/MnhPYkd9817eerhwIYJYU/WpYAJj2sUBqidpmO9ANCLyceVrCurrOFxn
VfNfqtNljX/vIgPDq6zilwTMfahF5kJBG7ZnTa/y8fszmRCsK9zcr50kg/IrqVmT
8lQkzSIggQc78uhGNhqKePkdaoKrAQ5jSybhE1/AEC+TAsylekIhkVXqY5bHy4HU
nbtApcf0CG34JpdxFo4VVY2Km/VR1Dpz7MN04Z5ydWGfrcTFTCczhhMoGXpold53
ERcopVaygMdIWhuN3O/9bzMMjkymIJudqiKS19SAhhm/hCMDgTW7nT032mOuzlXb
NC5oYjN08308Ap8FpC3kPR3UZtabv2HaGm3EbinEQmcIx9UHTpA=
=gD9R
-----END PGP SIGNATURE-----

M
M
Mathieu Othacehe wrote on 21 Apr 2020 09:28
(name . Jan)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87v9ltqouq.fsf@gmail.com
Hello Jan,

Thanks for working on this. No you should use the same bug ticket for new
patches revision, until it gets eventually merged.

Mathieu
J
J
Jan Wielkiewicz wrote on 21 Apr 2020 18:10
[PATCH 02/18] gnu: jami: Fix downloading.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200421161032.1847-2-tona_kosmicznego_smiecia@interia.pl
The package name changed from Ring to Jami.
Package tarballs start now with "jami_" prefix.
The "ring-release" folder is also deprecated, let's use the
"release" folder instead.
---
gnu/packages/jami.scm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Toggle diff (15 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 5c167808f0..44a57c9bfb 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -64,7 +64,7 @@
(define* (jami-source #:key without-daemon)
(origin
(method url-fetch)
- (uri (string-append "https://dl.jami.net/ring-release/tarballs/ring_"
+ (uri (string-append "https://dl.jami.net/release/tarballs/jami_"
%jami-version
".tar.gz"))
(modules '((guix build utils)))
--
2.26.1
J
J
Jan Wielkiewicz wrote on 21 Apr 2020 18:10
[PATCH 05/18] gnu: libring: Add libnatpmp as an optional dependency.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200421161032.1847-5-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/jami.scm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Toggle diff (22 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 3a50cef18a..041f0a1292 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -195,7 +195,6 @@
(source (jami-source #:without-daemon #t))
(build-system gnu-build-system)
(inputs
- ;; Missing (optional?) dep: libnatpmp.
`(("alsa-lib" ,alsa-lib)
("boost" ,boost)
("dbus-c++" ,dbus-c++)
@@ -206,6 +205,7 @@
("gsm" ,gsm)
("jack" ,jack-1)
("jsoncpp" ,jsoncpp)
+ ("libnatpmp" ,libnatpmp)
("libogg" ,libogg)
("libva" ,libva)
("opendht" ,opendht)
--
2.26.1
J
J
Jan Wielkiewicz wrote on 21 Apr 2020 18:10
[PATCH 04/18] gnu: Add libnatpmp.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200421161032.1847-4-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/networking.scm | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)

Toggle diff (41 lines)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index f754683bb9..02ba5e9601 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -374,6 +374,34 @@ between different versions of ØMQ.")
files contain direct mappings of the abstractions provided by the ØMQ C API.")
(license license:expat)))
+(define-public libnatpmp
+ (package
+ (name "libnatpmp")
+ (version "20150609")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://miniupnp.free.fr/files/"
+ name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1c1n8n7mp0amsd6vkz32n8zj3vnsckv308bb7na0dg0r8969rap1"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (delete 'check))
+ #:make-flags
+ (list (string-append "PREFIX=" (assoc-ref %outputs "out")))))
+ (home-page "http://miniupnp.free.fr/libnatpmp.html")
+ (synopsis "C library implementing NAT-PMP")
+ (description
+ "libnatpmp is a portable and asynchronous implementaiton of
+the Network Address Translation - Port Mapping Protocol (NAT-PMP)
+written in the C programming language.")
+ (license license:bsd-3)))
+
(define-public librdkafka
(package
(name "librdkafka")
--
2.26.1
J
J
Jan Wielkiewicz wrote on 21 Apr 2020 18:10
[PATCH 06/18] gnu: libupnp: Bump to 1.8.6; change the download method to git-fetch; add missing dependencies.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200421161032.1847-6-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/upnp.scm | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)

Toggle diff (49 lines)
diff --git a/gnu/packages/upnp.scm b/gnu/packages/upnp.scm
index 8f3c887a68..768df4a03e 100644
--- a/gnu/packages/upnp.scm
+++ b/gnu/packages/upnp.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2016, 2017, 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Theodoros Foradis <theodoros@foradis.org>
;;; Copyright © 2019 Jens Mølgaard <jens@zete.tk>
+;;; Copyright © 2020 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -28,6 +29,7 @@
#:use-module (gnu packages photo)
#:use-module (gnu packages image)
#:use-module (gnu packages mp3)
+ #:use-module (gnu packages pkg-config)
#:use-module (gnu packages xiph)
#:use-module (gnu packages sqlite)
#:use-module (gnu packages python)
@@ -92,15 +94,21 @@ over IRC, instant messaging, network games, and most server software.")
(define-public libupnp
(package
(name "libupnp")
- (version "1.6.25")
+ (version "1.8.6")
(source
(origin
- (method url-fetch)
- (uri (string-append "mirror://sourceforge/pupnp/pupnp/libUPnP%20"
- version "/" name "-" version ".tar.bz2"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/pupnp/pupnp.git")
+ (commit (string-append "release-" version))))
(sha256
(base32
- "0hzsd7rvfa87b4hxg9yj4xhdfxx9sp09r9sqdl3mqhvmcyw018y5"))))
+ "1jlb6qh47513h2simy0zxia5q61w1c31mnwmjqpr2nf832lmnpk4"))))
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("libtool" ,libtool)
+ ("pkg-config" ,pkg-config)))
(build-system gnu-build-system)
(arguments
;; The tests require a network device capable of multicasting which is
--
2.26.1
J
J
Jan Wielkiewicz wrote on 21 Apr 2020 18:10
[PATCH 08/18] gnu: libring: Use ffmpeg-jami instead of ffmpeg.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200421161032.1847-8-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/jami.scm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Toggle diff (15 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index e7f15c7197..c67236ac0d 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -438,7 +438,7 @@
("boost" ,boost)
("dbus-c++" ,dbus-c++)
("eudev" ,eudev)
- ("ffmpeg" ,ffmpeg)
+ ("ffmpeg" ,ffmpeg-jami)
("flac" ,flac)
("gmp" ,gmp)
("gsm" ,gsm)
--
2.26.1
J
J
Jan Wielkiewicz wrote on 21 Apr 2020 18:10
[PATCH 09/18] gnu: restinio: Bump to 0.6.1.1.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200421161032.1847-9-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/networking.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Toggle diff (24 lines)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 02ba5e9601..b767c9035a 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -2608,7 +2608,7 @@ communication over HTTP.")
(define-public restinio
(package
(name "restinio")
- (version "0.6.0.1")
+ (version "0.6.1.1")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -2617,7 +2617,7 @@ communication over HTTP.")
(file-name (git-file-name name version))
(sha256
(base32
- "1c25kpx652nng8m1sqf5an2c3c4g3k6zj85mkkaxzk88iwfzq1s8"))))
+ "141a96hx8zhcdv121g6cs91n46kb47y040v25pnvz5f54964z7f5"))))
(build-system cmake-build-system)
(inputs ; TODO: Need to force-keep references on some inputs, e.g. boost.
`(("zlib" ,zlib)
--
2.26.1
J
J
Jan Wielkiewicz wrote on 21 Apr 2020 18:10
[PATCH 10/18] gnu: pjproject-jami: Add a new SFL patch.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200421161032.1847-10-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/jami.scm | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

Toggle diff (16 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index c67236ac0d..e612605775 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -168,7 +168,8 @@
"fix_ebusy_turn"
"ignore_ipv6_on_transport_check"
"fix_turn_connection_failure"
- "disable_local_resolution"))
+ "disable_local_resolution"
+ "fix_assert_on_connection_attempt"))
#t)))
;; TODO: We could use substitute-keyword-arguments instead of
;; repeating the phases from pjproject, but somehow it does
--
2.26.1
J
J
Jan Wielkiewicz wrote on 21 Apr 2020 18:10
[PATCH 07/18] gnu: Add ffmpeg-jami.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200421161032.1847-7-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/jami.scm | 239 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 239 insertions(+)

Toggle diff (252 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 041f0a1292..e7f15c7197 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -188,6 +188,245 @@
"selftest: pjlib-test pjlib-util-test pjmedia-test"))
#t)))))))
+(define-public ffmpeg-jami
+ (let ((commit "59da9dcd7ef6277e4e04998ced71b05a6083c635")
+ (revision "0"))
+ (package
+ (inherit ffmpeg)
+ (name "ffmpeg-jami")
+ (version (git-version "4.2.1" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://git.ffmpeg.org/ffmpeg.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0cm58kd06lvslc7knnfajv5p63v4cc6502badjcic5m9izd03lz2"))))
+ (native-inputs
+ `(("SFL-patches" ,(jami-source))
+ ("libiconv" ,libiconv)
+ ,@(package-native-inputs ffmpeg)))
+ (arguments
+ (append
+ '(#:tests? #f)
+ (substitute-keyword-arguments (package-arguments ffmpeg)
+ ((#:configure-flags '())
+ (append '("--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"
+ ;; enable muxers/demuxers
+ "--disable-demuxers"
+ "--disable-muxers"
+ "--enable-muxer=rtp"
+ "--enable-muxer=g722"
+ "--enable-muxer=h263"
+ "--enable-muxer=h264"
+ "--enable-muxer=hevc"
+ "--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"
+ "--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"
+ ;; enable parsers
+ "--enable-parser=h263"
+ "--enable-parser=h264"
+ "--enable-parser=mpeg4video"
+ "--enable-parser=vp8"
+ "--enable-parser=vp9"
+ "--enable-parser=opus"
+ ;; encoders/decoders
+ "--enable-encoder=adpcm_g722"
+ "--enable-decoder=adpcm_g722"
+ "--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"
+ ;; decoders for ringtones and audio streaming
+ "--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"
+ ;; encoders/decoders for images
+ "--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"
+ ;; filters
+ "--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")
+ ;; platform specific options
+ (if (string-contains (%current-system) "linux")
+ '("--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-encoder=h264_vaapi"
+ "--enable-encoder=vp8_vaapi"
+ "--enable-encoder=mjpeg_vaapi"
+ ))
+ (cond ((string?= (%current-system) "i386")
+ '("--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"))
+ ((string?= (%current-system) "x86_64")
+ '("--arch=x86_64"
+ "--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"))
+ ((string?= (%current-system) "aarch64-linux") '("--arch=aarch64"))
+ ((string?= (%current-system) "arm64-linux") '("--arch=aarch64"))
+ ((string?= (%current-system) "arm") '("--arch=arm"))
+ (else '()))))
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (add-after 'unpack 'make-git-checkout-writable
+ (lambda _
+ (for-each make-file-writable (find-files "."))
+ #t))
+ (add-after 'unpack 'apply-patches
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((jami-apply-dependency-patches ,jami-apply-dependency-patches))
+ ;; These patches come from:
+ ;; "ring-project/daemon/contrib/src/ffmpeg/rules.mak".
+ (jami-apply-dependency-patches #:inputs inputs
+ #:dep-name "ffmpeg"
+ #:patches
+ '("remove-mjpeg-log"
+ "change-RTCP-ratio"
+ "rtp_ext_abs_send_time"))
+ #t)))))))))))
+
(define-public libring
(package
(name "libring")
--
2.26.1
J
J
Jan Wielkiewicz wrote on 21 Apr 2020 18:10
[PATCH 11/18] gnu: pjproject: Fix formatting.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200421161032.1847-11-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/telephony.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Toggle diff (19 lines)
diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index 62bd8fd548..59cd06f6f5 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -704,10 +704,10 @@ calls and messages")
("pkg-config" ,pkg-config)
("libtool" ,libtool)))
(arguments
- `(;; FIXME make: No rule to make target
+ `( ;; FIXME make: No rule to make target
;; 'pjlib-test-unknown-[something]-gnu'.
#:tests? #f
- ;; #:test-target "selftest"
+ ;; #:test-target "selftest"
#:phases
(modify-phases %standard-phases
(add-before 'build 'build-dep
--
2.26.1
J
J
Jan Wielkiewicz wrote on 21 Apr 2020 18:10
[PATCH 12/18] gnu: jami: Make gettext a native input.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200421161032.1847-12-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/jami.scm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Toggle diff (22 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index e612605775..534958df5d 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -551,7 +551,6 @@ This package provides a library common to all Jami clients.")
("libnotify" ,libnotify)
("clutter" ,clutter)
("clutter-gtk" ,clutter-gtk)
- ("gettext" ,gnu-gettext)
("libcanberra" ,libcanberra)
("webkitgtk" ,webkitgtk)
;; TODO: We must wrap ring-client-gnome to force using the
@@ -568,6 +567,7 @@ This package provides a library common to all Jami clients.")
("sqlite" ,sqlite-with-column-metadata)))
(native-inputs
`(("pkg-config" ,pkg-config)
+ ("gettext" ,gnu-gettext)
("glib:bin" ,glib "bin")
("doxygen" ,doxygen)))
(propagated-inputs
--
2.26.1
J
J
Jan Wielkiewicz wrote on 21 Apr 2020 18:10
[PATCH 01/18] gnu: jami: Move Jami and its dependencies to jami.scm.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200421161032.1847-1-tona_kosmicznego_smiecia@interia.pl
---
gnu/local.mk | 2 +
gnu/packages/jami.scm | 351 +++++++++++++++++++++++++++++++++++++
gnu/packages/telephony.scm | 291 ------------------------------
3 files changed, 353 insertions(+), 291 deletions(-)
create mode 100644 gnu/packages/jami.scm

Toggle diff (494 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 952fc55df4..10bf91366d 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -30,6 +30,7 @@
# Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
# Copyright © 2020 R Veera Kumar <vkor@vkten.in>
# Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz
+# Copyright © 2020 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
#
# This file is part of GNU Guix.
#
@@ -275,6 +276,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/ipfs.scm \
%D%/packages/irc.scm \
%D%/packages/iso-codes.scm \
+ %D%/packages/jami.scm \
%D%/packages/java.scm \
%D%/packages/java-compression.scm \
%D%/packages/java-graphics.scm \
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
new file mode 100644
index 0000000000..5c167808f0
--- /dev/null
+++ b/gnu/packages/jami.scm
@@ -0,0 +1,351 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
+;;; Copyright © 2019, 2020 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
+;;;
+;;; 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)
+ #:use-module (gnu packages base)
+ #:use-module (gnu packages boost)
+ #:use-module (gnu packages check)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages crypto)
+ #:use-module (gnu packages documentation)
+ #:use-module (gnu packages gettext)
+ #:use-module (gnu packages glib)
+ #:use-module (gnu packages gnome)
+ #:use-module (gnu packages gtk)
+ #:use-module (gnu packages libcanberra)
+ #:use-module (gnu packages linux)
+ #:use-module (gnu packages multiprecision)
+ #:use-module (gnu packages networking)
+ #:use-module (gnu packages pcre)
+ #: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)
+ #:use-module (gnu packages video)
+ #:use-module (gnu packages webkit)
+ #: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)
+ #:use-module (guix download)
+ #:use-module (guix git-download)
+ #:use-module (guix packages)
+ #:use-module (guix utils))
+
+(define %jami-version "20191101.3.67671e7")
+
+(define* (jami-source #:key without-daemon)
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://dl.jami.net/ring-release/tarballs/ring_"
+ %jami-version
+ ".tar.gz"))
+ (modules '((guix build utils)))
+ (snippet
+ (if without-daemon
+ '(begin
+ (delete-file-recursively "daemon/contrib"))
+ #f))
+ (sha256
+ (base32
+ "0kw172w2ccyz438kf5xqw14nhfm4xk6a2libnzib9j2wvhlpf4q0"))))
+
+(define-public pjproject-jami
+ (package
+ (inherit pjproject)
+ (name "pjproject-jami")
+ (native-inputs
+ `(("savoir-faire-linux-patches" ,(jami-source))
+ ,@(package-native-inputs pjproject)))
+ (arguments
+ `(#:tests? #f
+ ;; See ring-project/daemon/contrib/src/pjproject/rules.mak.
+ #:configure-flags
+ (list "--disable-oss"
+ "--disable-sound"
+ "--disable-video"
+ "--enable-ext-sound"
+ "--disable-speex-aec"
+ "--disable-g711-codec"
+ "--disable-l16-codec"
+ "--disable-gsm-codec"
+ "--disable-g722-codec"
+ "--disable-g7221-codec"
+ "--disable-speex-codec"
+ "--disable-ilbc-codec"
+ "--disable-opencore-amr"
+ "--disable-silk"
+ "--disable-sdl"
+ "--disable-ffmpeg"
+ "--disable-v4l2"
+ "--disable-openh264"
+ "--disable-resample"
+ "--disable-libwebrtc"
+ "--with-gnutls"
+ "--with-external-srtp"
+ ;; We need -fPIC or else we get the following error when linking
+ ;; against pjproject-jami:
+ ;; relocation R_X86_64_32S against `.rodata' can not be used when
+ ;; making a shared object;
+ "CFLAGS=-fPIC"
+ "CXXFLAGS=-fPIC")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'make-git-checkout-writable
+ (lambda _
+ (for-each make-file-writable (find-files "."))
+ #t))
+ (add-after 'unpack 'apply-patches
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((savoir-faire-linux-patches-directory "Savoir-faire Linux patches")
+ ;; Comes from
+ ;; "ring-project/daemon/contrib/src/pjproject/rules.mak".
+ ;; WARNING: These amount for huge changes in pjproject.
+ (savoir-faire-linux-patches
+ '("fix_turn_alloc_failure"
+ "rfc2466"
+ "ipv6"
+ "multiple_listeners"
+ "pj_ice_sess"
+ "fix_turn_fallback"
+ "fix_ioqueue_ipv6_sendto"
+ "add_dtls_transport"
+ "rfc6544"
+ "ice_config"
+ "sip_config"
+ "fix_first_packet_turn_tcp"
+ "fix_ebusy_turn"
+ "ignore_ipv6_on_transport_check"
+ "fix_turn_connection_failure"
+ ;; "uwp_vs" ; for windows
+ "disable_local_resolution")))
+ (mkdir-p savoir-faire-linux-patches-directory)
+ (invoke "tar" "-xvf" (assoc-ref inputs "savoir-faire-linux-patches")
+ "-C" savoir-faire-linux-patches-directory
+ "--strip-components=5"
+ "ring-project/daemon/contrib/src/pjproject")
+ (for-each
+ (lambda (file)
+ (invoke "patch" "--force" "-p1" "-i"
+ (string-append savoir-faire-linux-patches-directory "/"
+ file ".patch")))
+ savoir-faire-linux-patches))
+ #t))
+ ;; TODO: We could use substitute-keyword-arguments instead of
+ ;; repeating the phases from pjproject, but somehow it does
+ ;; not work.
+ (add-before 'build 'build-dep
+ (lambda _ (invoke "make" "dep")))
+ (add-before 'patch-source-shebangs 'autoconf
+ (lambda _
+ (invoke "autoconf" "-v" "-f" "-i" "-o"
+ "aconfigure" "aconfigure.ac")))
+ (add-before 'autoconf 'disable-some-tests
+ ;; Three of the six test programs fail due to missing network
+ ;; access.
+ (lambda _
+ (substitute* "Makefile"
+ (("selftest: pjlib-test pjlib-util-test pjnath-test pjmedia-test pjsip-test pjsua-test")
+ "selftest: pjlib-test pjlib-util-test pjmedia-test"))
+ #t)))))))
+
+(define-public libring
+ (package
+ (name "libring")
+ (version %jami-version)
+ (source (jami-source #:without-daemon #t))
+ (build-system gnu-build-system)
+ (inputs
+ ;; Missing (optional?) dep: libnatpmp.
+ `(("alsa-lib" ,alsa-lib)
+ ("boost" ,boost)
+ ("dbus-c++" ,dbus-c++)
+ ("eudev" ,eudev)
+ ("ffmpeg" ,ffmpeg)
+ ("flac" ,flac)
+ ("gmp" ,gmp)
+ ("gsm" ,gsm)
+ ("jack" ,jack-1)
+ ("jsoncpp" ,jsoncpp)
+ ("libogg" ,libogg)
+ ("libva" ,libva)
+ ("opendht" ,opendht)
+ ("opus" ,opus)
+ ("pcre" ,pcre)
+ ("pulseaudio" ,pulseaudio)
+ ("libsamplerate" ,libsamplerate)
+ ("libsndfile" ,libsndfile)
+ ("speex" ,speex)
+ ("speexdsp" ,speexdsp)
+ ("libupnp" ,libupnp)
+ ("libvorbis" ,libvorbis)
+ ("libx264" ,libx264)
+ ("libvdpau" ,libvdpau)
+ ("yaml-cpp" ,yaml-cpp)
+ ("zlib" ,zlib)
+ ("openssl" ,openssl)
+ ("libsecp256k1" ,libsecp256k1)
+ ("python" ,python)
+ ("python-wrapper" ,python-wrapper)
+ ("restinio" ,restinio)
+ ("libx11" ,libx11)
+ ("asio" ,asio)
+ ;; TODO: Upstream seems to rely on a custom pjproject (a.k.a. pjsip) version.
+ ;; See https://git.jami.net/savoirfairelinux/ring-daemon/issues/24.
+ ("pjproject" ,pjproject-jami)))
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("libtool" ,libtool)
+ ("pkg-config" ,pkg-config)
+ ("which" ,which)
+ ("cppunit" ,cppunit)
+ ("perl" ,perl))) ; Needed for documentation.
+ (arguments
+ `(#:tests? #f ; The tests fail to compile due to missing headers.
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'change-directory
+ (lambda _
+ (chdir "daemon")
+ #t))
+ (add-before 'build 'add-lib-dir
+ (lambda _
+ (mkdir-p "src/lib")
+ #t)))))
+ (synopsis "Distributed multimedia communications platform")
+ (description "Jami (formerly GNU Ring) 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.
+
+This package provides a library and daemon implementing the Jami core
+functionality.")
+ (home-page "https://jami.net/")
+ (license license:gpl3+)))
+
+(define-public libringclient
+ (package
+ (inherit libring)
+ (name "libringclient")
+ (build-system cmake-build-system)
+ (propagated-inputs
+ `(("libring" ,libring) ; For 'dring'.
+ ("qtbase" ,qtbase) ; Qt is included in several installed headers.
+ ("qttools" ,qttools)))
+ (arguments
+ `(#:tests? #f ; There is no testsuite.
+ #:configure-flags
+ (list (string-append "-DRING_BUILD_DIR="
+ (assoc-ref %build-inputs "libring") "/include"))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'change-directory
+ (lambda _
+ (chdir "lrc")
+ #t))
+ (add-before 'configure 'fix-dbus-interfaces-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "CMakeLists.txt"
+ (("\\$\\{CMAKE_INSTALL_PREFIX\\}(/share/dbus-1/interfaces)" _ dbus-interfaces-path-suffix)
+ (string-append (assoc-ref inputs "libring")
+ dbus-interfaces-path-suffix))))))))
+ (synopsis "Distributed multimedia communications platform")
+ (description "Jami (formerly GNU Ring) 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.
+
+This package provides a library common to all Jami clients.")
+ (home-page "https://jami.net")
+ (license license:gpl3+)))
+
+(define-public jami
+ (package
+ (inherit libring)
+ (name "jami")
+ (build-system cmake-build-system)
+ (inputs
+ `(("libringclient" ,libringclient)
+ ("gtk+" ,gtk+)
+ ("qrencode" ,qrencode)
+ ("libnotify" ,libnotify)
+ ("clutter" ,clutter)
+ ("clutter-gtk" ,clutter-gtk)
+ ("gettext" ,gnu-gettext)
+ ("libcanberra" ,libcanberra)
+ ("webkitgtk" ,webkitgtk)
+ ;; TODO: We must wrap ring-client-gnome to force using the
+ ;; `sqlite-with-column-metadata' package instead of `sqlite' or else it
+ ;; fails with:
+ ;;
+ ;; /gnu/store/...-qtbase-5.11.2/lib/qt5/plugins/sqldrivers/libqsqlite.so:
+ ;; undefined symbol: sqlite3_column_table_name16
+ ;;
+ ;; qtbase is built against sqlite-with-column-metadata but somehow
+ ;; jami-client-gnome ends up with both `sqlite' and
+ ;; `sqlite-with-column-metadata' as inputs and it seems that
+ ;; libqsqlite.so gets confused.
+ ("sqlite" ,sqlite-with-column-metadata)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("glib:bin" ,glib "bin")
+ ("doxygen" ,doxygen)))
+ (propagated-inputs
+ `(("libring" ,libring) ; Contains `dring', the daemon, which is automatically by d-bus.
+ ("adwaita-icon-theme" ,adwaita-icon-theme)
+ ("evolution-data-server" ,evolution-data-server)))
+ (arguments
+ `(#:tests? #f ; There is no testsuite.
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'change-directory
+ (lambda _
+ (chdir "client-gnome")
+ #t))
+ (add-after 'install 'wrap
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (path (string-append (assoc-ref inputs "sqlite") "/lib")))
+ (wrap-program (string-append out "/bin/jami-gnome")
+ `("LD_LIBRARY_PATH" ":" prefix (,path))))
+ #t)))))
+ (synopsis "Distributed, privacy-respecting communication program")
+ (description "Jami (formerly GNU Ring) 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.
+
+This package provides the Jami client for the GNOME desktop.")
+ (home-page "https://jami.net")
+ (license license:gpl3+)))
+
+(define-public jami-client-gnome
+ (deprecated-package "jami-client-gnome" jami))
diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index 85c2f2ab5e..62bd8fd548 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -730,297 +730,6 @@ calls and messages")
Initiation Protocol (SIP) and a multimedia framework.")
(license license:gpl2+)))
-(define %jami-version "20191101.3.67671e7")
-
-(define* (jami-source #:key without-daemon)
- (origin
- (method url-fetch)
- (uri (string-append "https://dl.jami.net/ring-release/tarballs/ring_"
- %jami-version
- ".tar.gz"))
- (modules '((guix build utils)))
- (snippet
- (if without-daemon
- '(begin
- (delete-file-recursively "daemon/contrib"))
- #f))
- (sha256
- (base32
- "0kw172w2ccyz438kf5xqw14nhfm4xk6a2libnzib9j2wvhlpf4q0"))))
-
-(define-public pjproject-jami
- (package
- (inherit pjproject)
- (name "pjproject-jami")
- (native-inputs
- `(("savoir-faire-linux-patches" ,(jami-source))
- ,@(package-native-inputs pjproject)))
- (arguments
- `(#:tests? #f
- ;; See ring-project/daemon/contrib/src/pjproject/rules.mak.
- #:configure-flags
- (list "--disable-oss"
- "--disable-sound"
- "--disable-video"
- "--enable-ext-sound"
- "--disable-speex-aec"
- "--disable-g711-codec"
- "--disable-l16-codec"
- "--disable-gsm-codec"
- "--disable-g722-codec"
- "--disable-g7221-codec"
- "--disable-speex-codec"
- "--disable-ilbc-codec"
- "--disable-opencore-amr"
- "--disable-silk"
- "--disable-sdl"
- "--disable-ffmpeg"
- "--disable-v4l2"
- "--disable-openh264"
- "--disable-resample"
- "--disable-libwebrtc"
- "--with-gnutls"
- "--with-external-srtp"
- ;; We need -fPIC or else we get the following error when linking
- ;; against pjproject-jami:
- ;; relocation R_X86_64_32S against `.rodata' can not be used when
- ;; making a shared object;
- "CFLAGS=-fPIC"
- "CXXFLAGS=-fPIC")
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'make-git-checkout-writable
- (lambda _
- (for-each make-file-writable (find-files "."))
- #t))
- (add-after 'unpack 'apply-patches
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((savoir-faire-linux-patches-directory "Savoir-faire Linux patches")
- ;; Comes from
- ;; "ring-project/daemon/contrib/src/pjproject/rules.mak".
- ;; WARNING: These amount for huge changes in pjproject.
- (savoir-faire-linux-patches
- '("fix_turn_alloc_failure"
- "rfc2466"
- "ipv6"
- "multiple_listeners"
- "pj_ice_sess"
- "fix_turn_fallback"
- "fix_ioqueue_ipv6_sendto"
- "add_dtls_transport"
- "rfc6544"
- "ice_config"
- "sip_config"
- "fix_first_packet_turn_tcp"
- "fix_ebusy_turn"
- "ignore_ipv6_on_transport_check"
- "fix_turn_connection_failure"
- ;; "uwp_vs" ; for windows
- "disable_local_resolution")))
- (mkdir-p savoir-faire-linux-patches-directory)
- (invoke "tar" "-xvf" (assoc-ref inputs "savoir-faire-linux-patches")
- "-C" savoir-faire-linux-patches-directory
- "--strip-components=5"
- "ring-project/daemon/contrib/src/pjproject")
- (for-each
- (lambda (file)
- (invoke "patch" "--force" "-p1" "-i"
- (string-append savoir-faire-linux-patches-directory "/"
- file ".patch")))
- savoir-faire-linux-patches))
- #t))
- ;; TODO: We could use substitute-keyword-arguments instead of
- ;; repeating the phases from pjproject, but somehow it does
- ;; not work.
- (add-before 'build 'build-dep
- (lambda _ (invoke "make" "dep")))
- (add-before 'patch-source-shebangs 'autoconf
- (lambda _
- (invoke "autoconf" "-v" "-f" "-i" "-o"
- "aconfigure" "aconfigure.ac")))
- (add-before 'autoconf 'dis
This message was truncated. Download the full message here.
J
J
Jan Wielkiewicz wrote on 21 Apr 2020 18:10
[PATCH 14/18] gnu: pjproject-jami: Bump to 2.10, apply new SFL patches.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200421161032.1847-14-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/jami.scm | 34 +++++++++++++---------------------
1 file changed, 13 insertions(+), 21 deletions(-)

Toggle diff (73 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 95f34afa03..291eb8522c 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -99,13 +99,13 @@
(define-public pjproject-jami
(package
(name "pjproject-jami")
- (version "2.9")
+ (version "2.10")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/pjsip/pjproject.git")
- (commit "5dfa75be7d69047387f9b0436dd9492bbbf03fe4")))
+ (commit "3e7b75cb2e482baee58c1991bd2fa4fb06774e0d")))
(modules '((guix build utils)))
(snippet
'(begin
@@ -138,7 +138,7 @@
(file-name (git-file-name name version))
(sha256
(base32
- "1ayj6n7zd5wvd1nzj2k9s57fb4ckc2fv92k5sjvhd87yg69k3393"))))
+ "1aklicpgwc88578k03i5d5cm5h8mfm7hmx8vfprchbmaa2p8f4z0"))))
(build-system gnu-build-system)
(inputs
`(("portaudio" ,portaudio)))
@@ -160,7 +160,7 @@
`(#:tests? #f
;; See ring-project/daemon/contrib/src/pjproject/rules.mak.
#:configure-flags
- (list "--disable-oss"
+ (list ;;"--disable-oss" ; do we need this?
"--disable-sound"
"--disable-video"
"--enable-ext-sound"
@@ -206,23 +206,15 @@
#:inputs inputs
#:dep-name "pjproject"
#:patches
- '("fix_turn_alloc_failure"
- "rfc2466"
- "ipv6"
- "multiple_listeners"
- "pj_ice_sess"
- "fix_turn_fallback"
- "fix_ioqueue_ipv6_sendto"
- "add_dtls_transport"
- "rfc6544"
- "ice_config"
- "sip_config"
- "fix_first_packet_turn_tcp"
- "fix_ebusy_turn"
- "ignore_ipv6_on_transport_check"
- "fix_turn_connection_failure"
- "disable_local_resolution"
- "fix_assert_on_connection_attempt"))
+ '("0001-rfc6544"
+ "0002-rfc2466"
+ "0003-add-tcp-keep-alive"
+ "0004-multiple_listeners"
+ "0005-fix_ebusy_turn"
+ "0006-ignore_ipv6_on_transport_check"
+ "0007-pj_ice_sess"
+ "0008-fix_ioqueue_ipv6_sendto"
+ "0009-add-config-site"))
#t)))
;; TODO: We could use substitute-keyword-arguments instead of
;; repeating the phases from pjproject, but somehow it does
--
2.26.1
J
J
Jan Wielkiewicz wrote on 21 Apr 2020 18:10
[PATCH 15/18] gnu: opendht: Bump to 2.0.0.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200421161032.1847-15-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/networking.scm | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

Toggle diff (33 lines)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index b767c9035a..cf865edef4 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -33,7 +33,7 @@
;;; Copyright © 2019 Brice Waegeneire <brice@waegenei.re>
;;; Copyright © 2019 Tonton <tonton@riseup.net>
;;; Copyright © 2019, 2020 Alex Griffin <a@ajgrf.com>
-;;; Copyright © 2019 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
+;;; Copyright © 2019, 2020 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
;;; Copyright © 2019 Daniel Schaefer <git@danielschaefer.me>
;;; Copyright © 2019 Diego N. Barbato <dnbarbato@posteo.de>
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
@@ -2650,7 +2650,7 @@ and targeted primarily for asynchronous processing of HTTP-requests.")
(define-public opendht
(package
(name "opendht")
- (version "2.0.0beta2")
+ (version "2.0.0")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -2659,7 +2659,7 @@ and targeted primarily for asynchronous processing of HTTP-requests.")
(file-name (git-file-name name version))
(sha256
(base32
- "02ix0rvvyhq22gd5djcq84qz08ji7ln93faf23b27zjzni2klzv5"))))
+ "1q1fwk8wwk9r6bp0indpr60ql668lsk16ykslacyhrh7kg97kvhr"))))
;; Since 2.0, the gnu-build-system does not seem to work anymore, upstream bug?
(build-system cmake-build-system)
(inputs
--
2.26.1
J
J
Jan Wielkiewicz wrote on 21 Apr 2020 18:10
[PATCH 13/18] gnu: pjproject, pjproject-jami: Remove broken pjproject package. Make pjproject-jami package stand-alone by moving package code from pjproject into it.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200421161032.1847-13-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/jami.scm | 65 ++++++++++++++++++++++++++--
gnu/packages/telephony.scm | 86 --------------------------------------
2 files changed, 61 insertions(+), 90 deletions(-)

Toggle diff (184 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 534958df5d..95f34afa03 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -98,11 +98,64 @@
(define-public pjproject-jami
(package
- (inherit pjproject)
(name "pjproject-jami")
+ (version "2.9")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/pjsip/pjproject.git")
+ (commit "5dfa75be7d69047387f9b0436dd9492bbbf03fe4")))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ (let ((third-party-directories
+ ;; Things we don't need:
+ ;; BaseClasses - contains libraries from Windows SDK
+ ;; we don't need it, at least not now.
+ (list "BaseClasses" "g7221" "ilbc" "milenage"
+ "speex" "threademulation" "yuv" "bdsound"
+ "gsm" "mp3" "resample" "srtp" "webrtc"
+ ;; Keep only resample, build and README.txt.
+ "build/baseclasses" "build/g7221" "build/gsm"
+ "build/ilbc" "build/milenage" "build/resample"
+ "build/samplerate" "build/speex" "build/srtp"
+ "build/webrtc" "build/yuv")))
+ ;; Keep only Makefiles related to resample.
+ (for-each (lambda (directory)
+ (delete-file-recursively
+ (string-append "third_party/" directory)))
+ third-party-directories)
+ #t)
+ (let ((third-party-dirs
+ (list "gsm" "ilbc" "speex" "g7221" "srtp"
+ "portaudio" "resample")))
+ (for-each
+ (lambda (dirs)
+ (substitute* "third_party/build/os-linux.mak"
+ (((string-append "DIRS += " dirs)) "")))
+ third-party-dirs))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1ayj6n7zd5wvd1nzj2k9s57fb4ckc2fv92k5sjvhd87yg69k3393"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("portaudio" ,portaudio)))
+ (propagated-inputs
+ ;; These packages are referenced in the Libs field of the pkg-config
+ ;; file that will be installed by pjproject.
+ `(("speex" ,speex)
+ ("libsrtp" ,libsrtp)
+ ("gnutls" ,gnutls)
+ ("resample", resample)
+ ("util-linux" ,util-linux)))
(native-inputs
- `(("SFL-patches" ,(jami-source))
- ,@(package-native-inputs pjproject)))
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("pkg-config" ,pkg-config)
+ ("libtool" ,libtool)
+ ("SFL-patches" ,(jami-source))))
(arguments
`(#:tests? #f
;; See ring-project/daemon/contrib/src/pjproject/rules.mak.
@@ -187,7 +240,11 @@
(substitute* "Makefile"
(("selftest: pjlib-test pjlib-util-test pjnath-test pjmedia-test pjsip-test pjsua-test")
"selftest: pjlib-test pjlib-util-test pjmedia-test"))
- #t)))))))
+ #t)))))
+ (home-page "https://www.pjsip.org")
+ (synopsis "SIP (protocol) stack used by Jami")
+ (description "Pjsip is a C library implementing the SIP protocol. This version is highly modified for use in GNU Jami.")
+ (license license:gpl2+)))
(define-public ffmpeg-jami
(let ((commit "59da9dcd7ef6277e4e04998ced71b05a6083c635")
diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index 59cd06f6f5..b3d2b8bc70 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -644,92 +644,6 @@ phone to IP phone communication or in a network using a SIP proxy to route your
calls and messages")
(license license:gpl2+)))
-(define-public pjproject
- (package
- (name "pjproject")
- (version "2.9")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/pjsip/pjproject.git")
- (commit "5dfa75be7d69047387f9b0436dd9492bbbf03fe4")))
- (modules '((guix build utils)))
- (snippet
- '(begin
- (let ((third-party-directories
- ;; Things we don't need:
- ;; BaseClasses - contains libraries from Windows SDK
- ;; we don't need it, at least not now.
- (list "BaseClasses" "g7221" "ilbc" "milenage"
- "speex" "threademulation" "yuv" "bdsound"
- "gsm" "mp3" "resample" "srtp" "webrtc"
- ;; Keep only resample, build and README.txt.
- "build/baseclasses" "build/g7221" "build/gsm"
- "build/ilbc" "build/milenage" "build/resample"
- "build/samplerate" "build/speex" "build/srtp"
- "build/webrtc" "build/yuv")))
- ;; Keep only Makefiles related to resample.
- (for-each (lambda (directory)
- (delete-file-recursively
- (string-append "third_party/" directory)))
- third-party-directories)
- #t)
- (let ((third-party-dirs
- (list "gsm" "ilbc" "speex" "g7221" "srtp"
- "portaudio" "resample")))
- (for-each
- (lambda (dirs)
- (substitute* "third_party/build/os-linux.mak"
- (((string-append "DIRS += " dirs)) "")))
- third-party-dirs))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1ayj6n7zd5wvd1nzj2k9s57fb4ckc2fv92k5sjvhd87yg69k3393"))))
- (build-system gnu-build-system)
- (inputs
- `(("portaudio" ,portaudio)))
- (propagated-inputs
- ;; These packages are referenced in the Libs field of the pkg-config
- ;; file that will be installed by pjproject.
- `(("speex" ,speex)
- ("libsrtp" ,libsrtp)
- ("gnutls" ,gnutls)
- ("resample", resample)
- ("util-linux" ,util-linux)))
- (native-inputs
- `(("autoconf" ,autoconf)
- ("automake" ,automake)
- ("pkg-config" ,pkg-config)
- ("libtool" ,libtool)))
- (arguments
- `( ;; FIXME make: No rule to make target
- ;; 'pjlib-test-unknown-[something]-gnu'.
- #:tests? #f
- ;; #:test-target "selftest"
- #:phases
- (modify-phases %standard-phases
- (add-before 'build 'build-dep
- (lambda _ (invoke "make" "dep")))
- (add-before 'patch-source-shebangs 'autoconf
- (lambda _
- (invoke "autoconf" "-v" "-f" "-i" "-o"
- "aconfigure" "aconfigure.ac")))
- (add-before 'autoconf 'disable-some-tests
- ;; Three of the six test programs fail due to missing network
- ;; access.
- (lambda _
- (substitute* "Makefile"
- (("selftest: pjlib-test pjlib-util-test pjnath-test pjmedia-test pjsip-test pjsua-test")
- "selftest: pjlib-test pjlib-util-test pjmedia-test"))
- #t)))))
- (home-page "https://www.pjsip.org")
- (synopsis "Session Initiation Protocol (SIP) stack")
- (description "PJProject provides an implementation of the Session
-Initiation Protocol (SIP) and a multimedia framework.")
- (license license:gpl2+)))
-
(define-public libtgvoip
(package
(name "libtgvoip")
--
2.26.1
J
J
Jan Wielkiewicz wrote on 21 Apr 2020 18:10
[PATCH 03/18] gnu: jami.scm: Add and use a generalized procedure for applying patches made by Savoir-faire linux to Jami dependencies.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200421161032.1847-3-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/jami.scm | 82 +++++++++++++++++++++++++------------------
1 file changed, 47 insertions(+), 35 deletions(-)

Toggle diff (114 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 44a57c9bfb..3a50cef18a 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -77,12 +77,31 @@
(base32
"0kw172w2ccyz438kf5xqw14nhfm4xk6a2libnzib9j2wvhlpf4q0"))))
+;; Savoir-Faire Linux modifies many libraries to add features
+;; to Jami. This procedure makes applying patches to a given
+;; package easy.
+(define-public jami-apply-dependency-patches
+ '(lambda* (#:key inputs dep-name patches)
+ (let ((patches-directory "SFL-patches"))
+ (mkdir-p patches-directory)
+ (invoke "tar" "-xvf" (assoc-ref inputs "SFL-patches")
+ "-C" patches-directory
+ "--strip-components=5"
+ (string-append "ring-project/daemon/contrib/src/"
+ dep-name))
+ (for-each
+ (lambda (file)
+ (invoke "patch" "--force" "-p1" "-i"
+ (string-append patches-directory "/"
+ file ".patch")))
+ patches))))
+
(define-public pjproject-jami
(package
(inherit pjproject)
(name "pjproject-jami")
(native-inputs
- `(("savoir-faire-linux-patches" ,(jami-source))
+ `(("SFL-patches" ,(jami-source))
,@(package-native-inputs pjproject)))
(arguments
`(#:tests? #f
@@ -116,6 +135,8 @@
;; making a shared object;
"CFLAGS=-fPIC"
"CXXFLAGS=-fPIC")
+ #:modules ((guix build utils)
+ ,@(@@ (guix build-system gnu) %default-modules))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'make-git-checkout-writable
@@ -124,40 +145,31 @@
#t))
(add-after 'unpack 'apply-patches
(lambda* (#:key inputs #:allow-other-keys)
- (let ((savoir-faire-linux-patches-directory "Savoir-faire Linux patches")
- ;; Comes from
- ;; "ring-project/daemon/contrib/src/pjproject/rules.mak".
- ;; WARNING: These amount for huge changes in pjproject.
- (savoir-faire-linux-patches
- '("fix_turn_alloc_failure"
- "rfc2466"
- "ipv6"
- "multiple_listeners"
- "pj_ice_sess"
- "fix_turn_fallback"
- "fix_ioqueue_ipv6_sendto"
- "add_dtls_transport"
- "rfc6544"
- "ice_config"
- "sip_config"
- "fix_first_packet_turn_tcp"
- "fix_ebusy_turn"
- "ignore_ipv6_on_transport_check"
- "fix_turn_connection_failure"
- ;; "uwp_vs" ; for windows
- "disable_local_resolution")))
- (mkdir-p savoir-faire-linux-patches-directory)
- (invoke "tar" "-xvf" (assoc-ref inputs "savoir-faire-linux-patches")
- "-C" savoir-faire-linux-patches-directory
- "--strip-components=5"
- "ring-project/daemon/contrib/src/pjproject")
- (for-each
- (lambda (file)
- (invoke "patch" "--force" "-p1" "-i"
- (string-append savoir-faire-linux-patches-directory "/"
- file ".patch")))
- savoir-faire-linux-patches))
- #t))
+ (let ((jami-apply-dependency-patches ,jami-apply-dependency-patches))
+ ;; Comes from
+ ;; "ring-project/daemon/contrib/src/pjproject/rules.mak".
+ ;; WARNING: These amount for huge changes in pjproject.
+ (jami-apply-dependency-patches
+ #:inputs inputs
+ #:dep-name "pjproject"
+ #:patches
+ '("fix_turn_alloc_failure"
+ "rfc2466"
+ "ipv6"
+ "multiple_listeners"
+ "pj_ice_sess"
+ "fix_turn_fallback"
+ "fix_ioqueue_ipv6_sendto"
+ "add_dtls_transport"
+ "rfc6544"
+ "ice_config"
+ "sip_config"
+ "fix_first_packet_turn_tcp"
+ "fix_ebusy_turn"
+ "ignore_ipv6_on_transport_check"
+ "fix_turn_connection_failure"
+ "disable_local_resolution"))
+ #t)))
;; TODO: We could use substitute-keyword-arguments instead of
;; repeating the phases from pjproject, but somehow it does
;; not work.
--
2.26.1
J
J
Jan Wielkiewicz wrote on 21 Apr 2020 18:10
[PATCH 16/18] gnu: jami: Bump to 20200401.1.6f090de.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200421161032.1847-16-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/jami.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Toggle diff (24 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 291eb8522c..50bcd63a35 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -59,7 +59,7 @@
#:use-module (guix packages)
#:use-module (guix utils))
-(define %jami-version "20191101.3.67671e7")
+(define %jami-version "20200401.1.6f090de")
(define* (jami-source #:key without-daemon)
(origin
@@ -75,7 +75,7 @@
#f))
(sha256
(base32
- "0kw172w2ccyz438kf5xqw14nhfm4xk6a2libnzib9j2wvhlpf4q0"))))
+ "0lryx9n1jn0jsw7s10pbwivqv0d5m3jdzhdhdyg5n02v72mjvkmh"))))
;; Savoir-Faire Linux modifies many libraries to add features
;; to Jami. This procedure makes applying patches to a given
--
2.26.1
J
J
Jan Wielkiewicz wrote on 21 Apr 2020 18:10
[PATCH 17/18] gnu: jami: Replace gnu-gettext with gettext-minimal, just like on master.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200421161032.1847-17-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/jami.scm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Toggle diff (15 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 50bcd63a35..b441e5e426 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -616,7 +616,7 @@ This package provides a library common to all Jami clients.")
("sqlite" ,sqlite-with-column-metadata)))
(native-inputs
`(("pkg-config" ,pkg-config)
- ("gettext" ,gnu-gettext)
+ ("gettext" ,gettext-minimal)
("glib:bin" ,glib "bin")
("doxygen" ,doxygen)))
(propagated-inputs
--
2.26.1
J
J
Jan Wielkiewicz wrote on 21 Apr 2020 18:10
[PATCH 18/18] gnu: pjproject-jami: Add the missing, linux-only "--enable-epoll" flag.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200421161032.1847-18-tona_kosmicznego_smiecia@interia.pl
---
gnu/packages/jami.scm | 60 ++++++++++++++++++++++++-------------------
1 file changed, 33 insertions(+), 27 deletions(-)

Toggle diff (80 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index b441e5e426..a61b1b6043 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -32,6 +32,7 @@
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
#:use-module (gnu packages gtk)
+ #:use-module (gnu packages hurd)
#:use-module (gnu packages libcanberra)
#:use-module (gnu packages linux)
#:use-module (gnu packages multiprecision)
@@ -161,33 +162,38 @@
;; See ring-project/daemon/contrib/src/pjproject/rules.mak.
#:configure-flags
(list ;;"--disable-oss" ; do we need this?
- "--disable-sound"
- "--disable-video"
- "--enable-ext-sound"
- "--disable-speex-aec"
- "--disable-g711-codec"
- "--disable-l16-codec"
- "--disable-gsm-codec"
- "--disable-g722-codec"
- "--disable-g7221-codec"
- "--disable-speex-codec"
- "--disable-ilbc-codec"
- "--disable-opencore-amr"
- "--disable-silk"
- "--disable-sdl"
- "--disable-ffmpeg"
- "--disable-v4l2"
- "--disable-openh264"
- "--disable-resample"
- "--disable-libwebrtc"
- "--with-gnutls"
- "--with-external-srtp"
- ;; We need -fPIC or else we get the following error when linking
- ;; against pjproject-jami:
- ;; relocation R_X86_64_32S against `.rodata' can not be used when
- ;; making a shared object;
- "CFLAGS=-fPIC"
- "CXXFLAGS=-fPIC")
+ "--disable-sound"
+ "--disable-video"
+ ;; The following flag is linux specific
+ ,@(if (hurd-triplet? (or (%current-system)
+ (%current-target-system)))
+ '("--enable-epoll")
+ '())
+ "--enable-ext-sound"
+ "--disable-speex-aec"
+ "--disable-g711-codec"
+ "--disable-l16-codec"
+ "--disable-gsm-codec"
+ "--disable-g722-codec"
+ "--disable-g7221-codec"
+ "--disable-speex-codec"
+ "--disable-ilbc-codec"
+ "--disable-opencore-amr"
+ "--disable-silk"
+ "--disable-sdl"
+ "--disable-ffmpeg"
+ "--disable-v4l2"
+ "--disable-openh264"
+ "--disable-resample"
+ "--disable-libwebrtc"
+ "--with-gnutls"
+ "--with-external-srtp"
+ ;; We need -fPIC or else we get the following error when linking
+ ;; against pjproject-jami:
+ ;; relocation R_X86_64_32S against `.rodata' can not be used when
+ ;; making a shared object;
+ "CFLAGS=-fPIC"
+ "CXXFLAGS=-fPIC")
#:modules ((guix build utils)
,@(@@ (guix build-system gnu) %default-modules))
#:phases
--
2.26.1
M
M
Mathieu Othacehe wrote on 22 Apr 2020 10:59
Re: [bug#40677] [PATCH 01/18] gnu: jami: Move Jami and its dependencies to jami.scm.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87k127q4jo.fsf@gmail.com
Hello Jan,

Thanks for the updated serie. I see it has shrunk a bit, which is good!
First two general remarks. As explained by Christopher, you need to
make sure that you pass the version of the patchset to git.

You also need to write commit messages respecting this
as I already told you.

Toggle quote (3 lines)
> +;;; GNU Guix --- Functional package management for GNU
> +;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>

Why is Pierre copyright here?

Toggle quote (2 lines)
> +;;; Copyright © 2019, 2020 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>

I'm not sure what's the copyright policy when moving stuff to new
files. Someone?

Thanks,

Mathieu
M
M
Mathieu Othacehe wrote on 22 Apr 2020 11:07
Re: [bug#40677] [PATCH 03/18] gnu: jami.scm: Add and use a generalized procedure for applying patches made by Savoir-faire linux to Jami dependencies.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87ftcvq46a.fsf@gmail.com
Toggle quote (5 lines)
> +;; Savoir-Faire Linux modifies many libraries to add features
> +;; to Jami. This procedure makes applying patches to a given
> +;; package easy.
> +(define-public jami-apply-dependency-patches

This does not need to be public.

Toggle quote (3 lines)
> - `(("savoir-faire-linux-patches" ,(jami-source))
> + `(("SFL-patches" ,(jami-source))

I do prefer the old version without upper case.

Toggle quote (3 lines)
> + #:modules ((guix build utils)
> + ,@(@@ (guix build-system gnu) %default-modules))

pjproject is using the gnu-build-system which should provide all those
modules, so I don't think you need this.

Thanks,

Mathieu
M
M
Mathieu Othacehe wrote on 22 Apr 2020 11:27
Re: [bug#40677] [PATCH 04/18] gnu: Add libnatpmp.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87blnjq392.fsf@gmail.com
Toggle quote (3 lines)
> + (delete 'configure)
> + (delete 'check))

Please add a ;no tests comment.

I guess we are dealing with a raw Makefile here. This is bad news
because it means that cross-compilation is almost always broken.

You can run:

Toggle snippet (3 lines)
guix build --target=aarch64-linux-gnu libnatpmp

to check it. Then, you probably need to do something similar as what is
done in package "iw" (set CC variable at least).


Toggle quote (6 lines)
> + #:make-flags
> + (list (string-append "PREFIX=" (assoc-ref %outputs "out")))))
> + (home-page "http://miniupnp.free.fr/libnatpmp.html")
> + (synopsis "C library implementing NAT-PMP")
> + (description
> + "libnatpmp is a portable and asynchronous implementaiton of
^
@code{libnatpmp} ^
typo
Thanks,

Mathieu
M
M
Mathieu Othacehe wrote on 22 Apr 2020 11:32
Re: [bug#40677] [PATCH 11/18] gnu: pjproject: Fix formatting.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
877dy7q31b.fsf@gmail.com
Toggle quote (4 lines)
> #:tests? #f
> - ;; #:test-target "selftest"
> + ;; #:test-target "selftest"

Indentation seems off here. Maybe you can drop this patch.

Mathieu
M
M
Mathieu Othacehe wrote on 22 Apr 2020 11:39
Re: [bug#40677] [PATCH 13/18] gnu: pjproject, pjproject-jami: Remove broken pjproject package. Make pjproject-jami package stand-alone by moving package code from pjproject into it.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87368vq2ps.fsf@gmail.com
Toggle quote (14 lines)
>
> (define-public pjproject-jami
> (package
> - (inherit pjproject)
> (name "pjproject-jami")
> + (version "2.9")
> + (source
> + (origin
> + (method git-fetch)
> + (uri (git-reference
> + (url "https://github.com/pjsip/pjproject.git")
> + (commit "5dfa75be7d69047387f9b0436dd9492bbbf03fe4")))
> + (modules '((guix build utils)))

pjproject is used by packages such as asterisk (not yet packaged). So I
would prefer to keep pjproject, even if it's currently broken.

WDYT?

Mathieu
M
M
Mathieu Othacehe wrote on 22 Apr 2020 11:40
Re: [bug#40677] [PATCH 14/18] gnu: pjproject-jami: Bump to 2.10, apply new SFL patches.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87y2qnoo2e.fsf@gmail.com
Toggle quote (3 lines)
> - (list "--disable-oss"
> + (list ;;"--disable-oss" ; do we need this?

Do not introduce commented code. If you think we do not need this flag,
you can remove it and explain why in the commit message.

Mathieu
M
M
Mathieu Othacehe wrote on 22 Apr 2020 11:44
Re: [bug#40677] [PATCH 18/18] gnu: pjproject-jami: Add the missing, linux-only "--enable-epoll" flag.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87tv1bonwn.fsf@gmail.com
Toggle quote (6 lines)
> - "--disable-l16-codec"
> - "--disable-gsm-codec"
> - "--disable-g722-codec"
> - "--disable-g7221-codec"
> - "--disable-speex-codec"

You should fix indentation in a separate commit, otherwise its hard to
see get what's going on here.

Toggle quote (6 lines)
> + ;; The following flag is linux specific
> + ,@(if (hurd-triplet? (or (%current-system)
> + (%current-target-system)))
> + '("--enable-epoll")
> + '())

Don't we want to add this flag only on Linux platform? I think you
should transpose the if branches.

Thanks,

Mathieu
J
Re: [bug#40677] [PATCH 01/18] gnu: jami: Move Jami and its dependencies to jami.scm.
(name . Mathieu Othacehe)(address . m.othacehe@gmail.com)(address . 40677@debbugs.gnu.org)
20200422124253.18543e01@kompiuter
On Wed, 22 Apr 2020 10:59:39 +0200
Mathieu Othacehe <m.othacehe@gmail.com> wrote:

Toggle quote (5 lines)
> Hello Jan,
>
> Thanks for the updated serie. I see it has shrunk a bit, which is
> good! First two general remarks. As explained by Christopher, you
> need to make sure that you pass the version of the patchset to git.
I passed the "-v2", didn't it wrok?

Toggle quote (3 lines)
> You also need to write commit messages respecting this
> https://www.gnu.org/prep/standards/html_node/Change-Logs.html#Change-Logs
> as I already told you.
I have to read it one more time then, it's a bit unintuitive and
complicated.

Toggle quote (4 lines)
> > +;;; GNU Guix --- Functional package management for GNU
> > +;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
>
> Why is Pierre copyright here?
As far as I know he was an original author or maintainer of the
packages.
Isn't it required when copying a copyrighted work?

Toggle quote (11 lines)
> > +;;; Copyright © 2019, 2020 Jan Wielkiewicz
> > <tona_kosmicznego_smiecia@interia.pl>
>
> I'm not sure what's the copyright policy when moving stuff to new
> files. Someone?
>
> Thanks,
>
> Mathieu


Jan Wielkiewicz
J
Re: [bug#40677] [PATCH 13/18] gnu: pjproject, pjproject-jami: Remove broken pjproject package. Make pjproject-jami package stand-alone by moving package code from pjproject into it.
(name . Mathieu Othacehe)(address . m.othacehe@gmail.com)(address . 40677@debbugs.gnu.org)
20200422134208.1c7fe35e@kompiuter
On Wed, 22 Apr 2020 11:39:11 +0200
Mathieu Othacehe <m.othacehe@gmail.com> wrote:

Toggle quote (21 lines)
> >
> > (define-public pjproject-jami
> > (package
> > - (inherit pjproject)
> > (name "pjproject-jami")
> > + (version "2.9")
> > + (source
> > + (origin
> > + (method git-fetch)
> > + (uri (git-reference
> > + (url "https://github.com/pjsip/pjproject.git")
> > + (commit "5dfa75be7d69047387f9b0436dd9492bbbf03fe4")))
> > + (modules '((guix build utils)))
>
> pjproject is used by packages such as asterisk (not yet packaged). So
> I would prefer to keep pjproject, even if it's currently broken.
>
> WDYT?
>
> Mathieu

Should I revert the change and make pjproject-jami inherit from it
again? Is inheriting from a dead package even worth it for just two
packages?
Moving the code from pjproject to pjproject-jami actually made it easier
to maintain. If someone packages asteriks, they will have to copy the
code, modify it with configure flags, add missing dependencies and use
a different version, because Jami uses a custom version so patching
work.

We can keep the broken package, but I would like to keep my
pjproject-jami without inheritance as it is after my changes.
It is just easier to maintain this way.

But if I'm wrong, then I can just inherit from pjproject as it was
before. I'm not an experienced contributor after all.


Jan Wielkiewicz
M
M
Mathieu Othacehe wrote on 22 Apr 2020 13:42
Re: [bug#40677] [PATCH 01/18] gnu: jami: Move Jami and its dependencies to jami.scm.
(name . Jan)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87pnbzoifq.fsf@gmail.com
Toggle quote (2 lines)
> I passed the "-v2", didn't it wrok?

No, I would expect the patch subject to look like "[PATCH v2 x/y]". What
I do is to run git format-patch this way:

Toggle snippet (3 lines)
git format-patch -4 --cover-letter --subject-prefix="PATCH v2"

there might better ways though.

Toggle quote (7 lines)
>
>> You also need to write commit messages respecting this
>> https://www.gnu.org/prep/standards/html_node/Change-Logs.html#Change-Logs
>> as I already told you.
> I have to read it one more time then, it's a bit unintuitive and
> complicated.

Yes, you can browse the git log for examples.

Toggle quote (9 lines)
>
>> > +;;; GNU Guix --- Functional package management for GNU
>> > +;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
>>
>> Why is Pierre copyright here?
> As far as I know he was an original author or maintainer of the
> packages.
> Isn't it required when copying a copyrighted work?

Ok, then you might want to add Ludo and Vincent copyrights that appear
to have modified those packages according to git blame.

Thanks,

Mathieu
C
C
Christopher Baines wrote on 22 Apr 2020 18:08
(name . Mathieu Othacehe)(address . m.othacehe@gmail.com)
87mu734i63.fsf@cbaines.net
Mathieu Othacehe <m.othacehe@gmail.com> writes:

Toggle quote (4 lines)
> Thanks for the updated serie. I see it has shrunk a bit, which is good!
> First two general remarks. As explained by Christopher, you need to
> make sure that you pass the version of the patchset to git.

Well, passing the version isn't a very hard requirement. But it can be
helpful when working out what's the latest set of patches.
-----BEGIN PGP SIGNATURE-----

iQKTBAEBCgB9FiEEPonu50WOcg2XVOCyXiijOwuE9XcFAl6gbARfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDNF
ODlFRUU3NDU4RTcyMEQ5NzU0RTBCMjVFMjhBMzNCMEI4NEY1NzcACgkQXiijOwuE
9Xf27Q//fB5Plx6NEEKKS1FKHOG+emTH7RwTAGsWGY1ETrCddM31IUUXt8voewaf
ZFht3OuozE6C68B86TKBC+wTaSGpg5YXOuBwXb3yFv8i7xO8xvnq4KXfJPAybzRZ
5sX/s6wtwIfYvTzWV4uoWaeB7QXbSRORfG4fgLIuriG4tHPBsaKUDVDITwBQxujV
gUl63xNs6gErJwJwB9zA3CRxbVOx76BzOl8hzHxAHvRe8O9nMh8+SgKHwVurPArt
PA4mi7/klwm/0AWZ4gCyWCz1VNTeyXj5+9sywWrnIYzXZjHjp8KEfx6/OTD46xlQ
t+aktWXHWfcJWusmJBs33pnzFLhymHRlarYaqHJoeF0qAWi+u8iO1SR5tUMgkcDx
kkUd+sI+oUWmwepeP6HIsX1EZAtQt63SSx9RdxkMje8HbXCbx1AnuwJqhGv0Mt8p
HvvCnj3DhTUbgIrX5X7B9w6V0HJqjzrdgQSKIYMYDOX0aUNj2mthFuiprIsxpTLN
TUYfjrB4YmVX8VBhft2GLvr41GTIn4yM6ohEJG914q6TBifNmcpLr8qOx8CdiMKx
wkQAlZLXEL36tUPUbVTZXTBq8BmNnfG67HKE40XiPXG9onnnHWYPpyYbcySM74Y2
V3+EUTbEwdLu3mXfLfuuoVmzeE1PEhI2ZhU0Iub3ghYib+hAIG0=
=iVms
-----END PGP SIGNATURE-----

J
Re: [bug#40677] [PATCH 04/18] gnu: Add libnatpmp.
(name . Mathieu Othacehe)(address . m.othacehe@gmail.com)(address . 40677@debbugs.gnu.org)
20200428005500.7114c2b1@kompiuter
On Wed, 22 Apr 2020 11:27:37 +0200
Mathieu Othacehe <m.othacehe@gmail.com> wrote:

Toggle quote (4 lines)
> > + (delete 'configure)
> > + (delete 'check))
>
> Please add a ;no tests comment.
Done.

Toggle quote (9 lines)
> I guess we are dealing with a raw Makefile here. This is bad news
> because it means that cross-compilation is almost always broken.
>
> You can run:
>
> --8<---------------cut here---------------start------------->8---
> guix build --target=aarch64-linux-gnu libnatpmp
> --8<---------------cut here---------------end--------------->8---

It was built successfully, it works then I guess.


Toggle quote (2 lines)
> to check it. Then, you probably need to do something similar as what
> is done in package "iw" (set CC variable at least).
Where can I read about this CC thing more? Is it needed when
cross-compilation works?
Toggle quote (11 lines)
>
> > + #:make-flags
> > + (list (string-append "PREFIX=" (assoc-ref %outputs
> > "out")))))
> > + (home-page "http://miniupnp.free.fr/libnatpmp.html")
> > + (synopsis "C library implementing NAT-PMP")
> > + (description
> > + "libnatpmp is a portable and asynchronous implementaiton of
> ^
> @code{libnatpmp} ^
> typo
Fixed.

Toggle quote (5 lines)
> Thanks,
>
> Mathieu


Jan Wielkiewicz
J
Re: [bug#40677] [PATCH 01/18] gnu: jami: Move Jami and its dependencies to jami.scm.
(name . Mathieu Othacehe)(address . m.othacehe@gmail.com)(address . 40677@debbugs.gnu.org)
20200428011837.3880ecc0@kompiuter
Hello,

one more question about writing these commit messages. Do you want me
to correct just the patch fixing downloading or the whole patch series?
As for the rest, I almost corrected everything.


Jan Wielkiewicz
M
M
Mathieu Othacehe wrote on 28 Apr 2020 09:14
(name . Jan)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
874kt4w07o.fsf@gmail.com
Hello Jan,

Toggle quote (4 lines)
> one more question about writing these commit messages. Do you want me
> to correct just the patch fixing downloading or the whole patch series?
> As for the rest, I almost corrected everything.

No the whole patch serie, you can have a look to the git log for
examples. Good job fixing the rest :)

Thanks,

Mathieu
M
M
Mathieu Othacehe wrote on 28 Apr 2020 09:19
Re: [bug#40677] [PATCH 04/18] gnu: Add libnatpmp.
(name . Jan)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87zhawulga.fsf@gmail.com
Hello,

Toggle quote (12 lines)
>> --8<---------------cut here---------------start------------->8---
>> guix build --target=aarch64-linux-gnu libnatpmp
>> --8<---------------cut here---------------end--------------->8---
>
> It was built successfully, it works then I guess.
>
>
>> to check it. Then, you probably need to do something similar as what
>> is done in package "iw" (set CC variable at least).
> Where can I read about this CC thing more? Is it needed when
> cross-compilation works?

The build may succeed but if the native GCC compiler was picked, then
it's a native build and not a cross-build. You can run the following
command:

Toggle snippet (3 lines)
file the-binary-or-library

and see what it reports. You can also have a look to maradns package
for an example of how to deal with CC variable.

Don't hesitate if you have further questions,

Mathieu
J
(name . Mathieu Othacehe)(address . m.othacehe@gmail.com)(address . 40677@debbugs.gnu.org)
20200430003123.19e8afab@kompiuter
On Tue, 28 Apr 2020 09:19:01 +0200
Mathieu Othacehe <m.othacehe@gmail.com> wrote:

Toggle quote (29 lines)
> Hello,
>
> >> --8<---------------cut here---------------start------------->8---
> >> guix build --target=aarch64-linux-gnu libnatpmp
> >> --8<---------------cut here---------------end--------------->8---
> >
> > It was built successfully, it works then I guess.
> >
> >
> >> to check it. Then, you probably need to do something similar as
> >> what is done in package "iw" (set CC variable at least).
> > Where can I read about this CC thing more? Is it needed when
> > cross-compilation works?
>
> The build may succeed but if the native GCC compiler was picked, then
> it's a native build and not a cross-build. You can run the following
> command:
>
> --8<---------------cut here---------------start------------->8---
> file the-binary-or-library
> --8<---------------cut here---------------end--------------->8---
>
> and see what it reports. You can also have a look to maradns package
> for an example of how to deal with CC variable.
>
> Don't hesitate if you have further questions,
>
> Mathieu

I copied the code from the "iw" package, and the output of file is
now "ARM aarch64" instead of the previous "x86-64". That's success,
right?


Jan Wielkiewicz
M
M
Mathieu Othacehe wrote on 30 Apr 2020 09:04
(name . Jan)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87v9lhwj1i.fsf@gmail.com
Toggle quote (4 lines)
> I copied the code from the "iw" package, and the output of file is
> now "ARM aarch64" instead of the previous "x86-64". That's success,
> right?

Yes it looks good!

Mathieu
J
J
Jan Wielkiewicz wrote on 2 May 2020 03:14
[PATCH V3 05/15] gnu: libring: Add libnatpmp as an optional dependency.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200502011450.2676-6-tona_kosmicznego_smiecia@interia.pl
* gnu/packages/jami.scm (libring)[inputs]: Add libnatpmp.
This library isn't mandatory, but it works better with new
routers than libupnp.
---
gnu/packages/jami.scm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Toggle diff (22 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 2bee3ac143..8d34029918 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -193,7 +193,6 @@
(source (jami-source #:without-daemon #t))
(build-system gnu-build-system)
(inputs
- ;; Missing (optional?) dep: libnatpmp.
`(("alsa-lib" ,alsa-lib)
("boost" ,boost)
("dbus-c++" ,dbus-c++)
@@ -204,6 +203,7 @@
("gsm" ,gsm)
("jack" ,jack-1)
("jsoncpp" ,jsoncpp)
+ ("libnatpmp" ,libnatpmp)
("libogg" ,libogg)
("libva" ,libva)
("opendht" ,opendht)
--
2.26.2
J
J
Jan Wielkiewicz wrote on 2 May 2020 03:14
[PATCH V3 03/15] gnu: jami.scm: Add and use a generalized procedure for applying patches to Jami dependencies.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200502011450.2676-4-tona_kosmicznego_smiecia@interia.pl
* gnu/packages/jami.scm
(jami-apply-dependency-patches): Add procedure.
(pjproject-jami)[arguments]: Use it. Remove the old one.
[native-inputs]: Rename the source to sfl-patches
in order to satisfy the procedure.
---
gnu/packages/jami.scm | 80 ++++++++++++++++++++++++-------------------
1 file changed, 45 insertions(+), 35 deletions(-)

Toggle diff (105 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 44a57c9bfb..2bee3ac143 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -77,12 +77,31 @@
(base32
"0kw172w2ccyz438kf5xqw14nhfm4xk6a2libnzib9j2wvhlpf4q0"))))
+;; Savoir-Faire Linux modifies many libraries to add features
+;; to Jami. This procedure makes applying patches to a given
+;; package easy.
+(define jami-apply-dependency-patches
+ '(lambda* (#:key inputs dep-name patches)
+ (let ((patches-directory "sfl-patches"))
+ (mkdir-p patches-directory)
+ (invoke "tar" "-xvf" (assoc-ref inputs "sfl-patches")
+ "-C" patches-directory
+ "--strip-components=5"
+ (string-append "ring-project/daemon/contrib/src/"
+ dep-name))
+ (for-each
+ (lambda (file)
+ (invoke "patch" "--force" "-p1" "-i"
+ (string-append patches-directory "/"
+ file ".patch")))
+ patches))))
+
(define-public pjproject-jami
(package
(inherit pjproject)
(name "pjproject-jami")
(native-inputs
- `(("savoir-faire-linux-patches" ,(jami-source))
+ `(("sfl-patches" ,(jami-source))
,@(package-native-inputs pjproject)))
(arguments
`(#:tests? #f
@@ -124,40 +143,31 @@
#t))
(add-after 'unpack 'apply-patches
(lambda* (#:key inputs #:allow-other-keys)
- (let ((savoir-faire-linux-patches-directory "Savoir-faire Linux patches")
- ;; Comes from
- ;; "ring-project/daemon/contrib/src/pjproject/rules.mak".
- ;; WARNING: These amount for huge changes in pjproject.
- (savoir-faire-linux-patches
- '("fix_turn_alloc_failure"
- "rfc2466"
- "ipv6"
- "multiple_listeners"
- "pj_ice_sess"
- "fix_turn_fallback"
- "fix_ioqueue_ipv6_sendto"
- "add_dtls_transport"
- "rfc6544"
- "ice_config"
- "sip_config"
- "fix_first_packet_turn_tcp"
- "fix_ebusy_turn"
- "ignore_ipv6_on_transport_check"
- "fix_turn_connection_failure"
- ;; "uwp_vs" ; for windows
- "disable_local_resolution")))
- (mkdir-p savoir-faire-linux-patches-directory)
- (invoke "tar" "-xvf" (assoc-ref inputs "savoir-faire-linux-patches")
- "-C" savoir-faire-linux-patches-directory
- "--strip-components=5"
- "ring-project/daemon/contrib/src/pjproject")
- (for-each
- (lambda (file)
- (invoke "patch" "--force" "-p1" "-i"
- (string-append savoir-faire-linux-patches-directory "/"
- file ".patch")))
- savoir-faire-linux-patches))
- #t))
+ (let ((jami-apply-dependency-patches ,jami-apply-dependency-patches))
+ ;; Comes from
+ ;; "ring-project/daemon/contrib/src/pjproject/rules.mak".
+ ;; WARNING: These amount for huge changes in pjproject.
+ (jami-apply-dependency-patches
+ #:inputs inputs
+ #:dep-name "pjproject"
+ #:patches
+ '("fix_turn_alloc_failure"
+ "rfc2466"
+ "ipv6"
+ "multiple_listeners"
+ "pj_ice_sess"
+ "fix_turn_fallback"
+ "fix_ioqueue_ipv6_sendto"
+ "add_dtls_transport"
+ "rfc6544"
+ "ice_config"
+ "sip_config"
+ "fix_first_packet_turn_tcp"
+ "fix_ebusy_turn"
+ "ignore_ipv6_on_transport_check"
+ "fix_turn_connection_failure"
+ "disable_local_resolution"))
+ #t)))
;; TODO: We could use substitute-keyword-arguments instead of
;; repeating the phases from pjproject, but somehow it does
;; not work.
--
2.26.2
J
J
Jan Wielkiewicz wrote on 2 May 2020 03:14
[PATCH V3 12/15] gnu: jami: Bump to 20200401.1.6f090de.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200502011450.2676-13-tona_kosmicznego_smiecia@interia.pl
* gnu/packages/jami.scm (%jami-version): Change to 20200401.1.6f090de.
(jami-source): Adjust the control sum.
---
gnu/packages/jami.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Toggle diff (24 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 86745e8be1..4b2a553f71 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -59,7 +59,7 @@
#:use-module (guix packages)
#:use-module (guix utils))
-(define %jami-version "20191101.3.67671e7")
+(define %jami-version "20200401.1.6f090de")
(define* (jami-source #:key without-daemon)
(origin
@@ -75,7 +75,7 @@
#f))
(sha256
(base32
- "0kw172w2ccyz438kf5xqw14nhfm4xk6a2libnzib9j2wvhlpf4q0"))))
+ "0lryx9n1jn0jsw7s10pbwivqv0d5m3jdzhdhdyg5n02v72mjvkmh"))))
;; Savoir-Faire Linux modifies many libraries to add features
;; to Jami. This procedure makes applying patches to a given
--
2.26.2
J
J
Jan Wielkiewicz wrote on 2 May 2020 03:14
[PATCH V3 04/15] gnu: Add libnatpmp.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200502011450.2676-5-tona_kosmicznego_smiecia@interia.pl
* gnu/packages/networking.scm (libnatpmp): New variable.
---
gnu/packages/networking.scm | 40 +++++++++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+)

Toggle diff (53 lines)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 94b521584f..603d8b8e3a 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -426,6 +426,46 @@ between different versions of ØMQ.")
files contain direct mappings of the abstractions provided by the ØMQ C API.")
(license license:expat)))
+(define-public libnatpmp
+ (package
+ (name "libnatpmp")
+ (version "20150609")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://miniupnp.free.fr/files/"
+ name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1c1n8n7mp0amsd6vkz32n8zj3vnsckv308bb7na0dg0r8969rap1"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (delete 'check)) ; no tests
+ #:make-flags
+ (let* ((target ,(%current-target-system))
+ (gcc (if target (string-append target "-gcc") "gcc"))
+ (pkg-config (if target
+ (string-append target "-pkg-config")
+ "pkg-config")))
+ (list
+ (string-append "CC=" gcc)
+ (string-append "PKG_CONFIG="
+ (assoc-ref %build-inputs "pkg-config")
+ "/bin/" pkg-config)
+ (string-append "PREFIX=" (assoc-ref %outputs "out"))))))
+ (home-page "http://miniupnp.free.fr/libnatpmp.html")
+ (synopsis "C library implementing NAT-PMP")
+ (description
+ "@code{libnatpmp} is a portable and asynchronous implementation of
+the Network Address Translation - Port Mapping Protocol (NAT-PMP)
+written in the C programming language.")
+ (license license:bsd-3)))
+
(define-public librdkafka
(package
(name "librdkafka")
--
2.26.2
J
J
Jan Wielkiewicz wrote on 2 May 2020 03:14
[PATCH V3 07/15] gnu: Add ffmpeg-jami.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200502011450.2676-8-tona_kosmicznego_smiecia@interia.pl
This package is needed, because Jami uses a modified version
of ffmpeg, which provides GPU hardware acceleration, automatical
adapting of bitrate and extra codecs.

* gnu/packages/jami.scm (ffmpeg-jami): New variable.
---
gnu/packages/jami.scm | 239 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 239 insertions(+)

Toggle diff (252 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 8d34029918..0fc03b6088 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -186,6 +186,245 @@
"selftest: pjlib-test pjlib-util-test pjmedia-test"))
#t)))))))
+(define-public ffmpeg-jami
+ (let ((commit "59da9dcd7ef6277e4e04998ced71b05a6083c635")
+ (revision "0"))
+ (package
+ (inherit ffmpeg)
+ (name "ffmpeg-jami")
+ (version (git-version "4.2.1" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://git.ffmpeg.org/ffmpeg.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0cm58kd06lvslc7knnfajv5p63v4cc6502badjcic5m9izd03lz2"))))
+ (native-inputs
+ `(("SFL-patches" ,(jami-source))
+ ("libiconv" ,libiconv)
+ ,@(package-native-inputs ffmpeg)))
+ (arguments
+ (append
+ '(#:tests? #f)
+ (substitute-keyword-arguments (package-arguments ffmpeg)
+ ((#:configure-flags '())
+ (append '("--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"
+ ;; enable muxers/demuxers
+ "--disable-demuxers"
+ "--disable-muxers"
+ "--enable-muxer=rtp"
+ "--enable-muxer=g722"
+ "--enable-muxer=h263"
+ "--enable-muxer=h264"
+ "--enable-muxer=hevc"
+ "--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"
+ "--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"
+ ;; enable parsers
+ "--enable-parser=h263"
+ "--enable-parser=h264"
+ "--enable-parser=mpeg4video"
+ "--enable-parser=vp8"
+ "--enable-parser=vp9"
+ "--enable-parser=opus"
+ ;; encoders/decoders
+ "--enable-encoder=adpcm_g722"
+ "--enable-decoder=adpcm_g722"
+ "--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"
+ ;; decoders for ringtones and audio streaming
+ "--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"
+ ;; encoders/decoders for images
+ "--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"
+ ;; filters
+ "--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")
+ ;; platform specific options
+ (if (string-contains (%current-system) "linux")
+ '("--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-encoder=h264_vaapi"
+ "--enable-encoder=vp8_vaapi"
+ "--enable-encoder=mjpeg_vaapi"
+ ))
+ (cond ((string?= (%current-system) "i386")
+ '("--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"))
+ ((string?= (%current-system) "x86_64")
+ '("--arch=x86_64"
+ "--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"))
+ ((string?= (%current-system) "aarch64-linux") '("--arch=aarch64"))
+ ((string?= (%current-system) "arm64-linux") '("--arch=aarch64"))
+ ((string?= (%current-system) "arm") '("--arch=arm"))
+ (else '()))))
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (add-after 'unpack 'make-git-checkout-writable
+ (lambda _
+ (for-each make-file-writable (find-files "."))
+ #t))
+ (add-after 'unpack 'apply-patches
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((jami-apply-dependency-patches ,jami-apply-dependency-patches))
+ ;; These patches come from:
+ ;; "ring-project/daemon/contrib/src/ffmpeg/rules.mak".
+ (jami-apply-dependency-patches #:inputs inputs
+ #:dep-name "ffmpeg"
+ #:patches
+ '("remove-mjpeg-log"
+ "change-RTCP-ratio"
+ "rtp_ext_abs_send_time"))
+ #t)))))))))))
+
(define-public libring
(package
(name "libring")
--
2.26.2
J
J
Jan Wielkiewicz wrote on 2 May 2020 03:14
[PATCH V3 09/15] gnu: restinio: Bump to 0.6.1.1.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200502011450.2676-10-tona_kosmicznego_smiecia@interia.pl
* gnu/packages/networking.scm (restinio): Bump to 0.6.1.1.
---
gnu/packages/networking.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Toggle diff (24 lines)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 603d8b8e3a..e3a1b06b4d 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -2673,7 +2673,7 @@ communication over HTTP.")
(define-public restinio
(package
(name "restinio")
- (version "0.6.0.1")
+ (version "0.6.1.1")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -2682,7 +2682,7 @@ communication over HTTP.")
(file-name (git-file-name name version))
(sha256
(base32
- "1c25kpx652nng8m1sqf5an2c3c4g3k6zj85mkkaxzk88iwfzq1s8"))))
+ "141a96hx8zhcdv121g6cs91n46kb47y040v25pnvz5f54964z7f5"))))
(build-system cmake-build-system)
(inputs ; TODO: Need to force-keep references on some inputs, e.g. boost.
`(("zlib" ,zlib)
--
2.26.2
J
J
Jan Wielkiewicz wrote on 2 May 2020 03:14
[PATCH V3 10/15] gnu: jami: Make gettext a native input.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200502011450.2676-11-tona_kosmicznego_smiecia@interia.pl
* gnu/packages/jami.scm (jami): Move gettext from inputs
to native-inputs.
---
gnu/packages/jami.scm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Toggle diff (22 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 0e49b31f84..eb699a5b33 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -548,7 +548,6 @@ This package provides a library common to all Jami clients.")
("libnotify" ,libnotify)
("clutter" ,clutter)
("clutter-gtk" ,clutter-gtk)
- ("gettext" ,gnu-gettext)
("libcanberra" ,libcanberra)
("webkitgtk" ,webkitgtk)
;; TODO: We must wrap ring-client-gnome to force using the
@@ -565,6 +564,7 @@ This package provides a library common to all Jami clients.")
("sqlite" ,sqlite-with-column-metadata)))
(native-inputs
`(("pkg-config" ,pkg-config)
+ ("gettext" ,gnu-gettext)
("glib:bin" ,glib "bin")
("doxygen" ,doxygen)))
(propagated-inputs
--
2.26.2
J
J
Jan Wielkiewicz wrote on 2 May 2020 03:14
[PATCH V3 01/15] gnu: telephony.scm: Move Jami and its dependencies to jami.scm.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200502011450.2676-2-tona_kosmicznego_smiecia@interia.pl
Jami is a massive package and its developers modify many
libraries. Keeping them in a single file makes maintaining
easier.

* gnu/local.mk (GNU_SYSTEM_MODULES): Add jami.scm.

* gnu/packages/jami.scm: Add file.
(%jami-version, jami-source, pjproject-jami,
libring, libringclient, jami, jami-client-gnome):
New variables.

* gnu/packages/telephony.scm:
(%jami-version, jami-source, pjproject-jami,
libring, libringclient, jami, jami-client-gnome):
Remove variables.
---
gnu/local.mk | 2 +
gnu/packages/jami.scm | 351 +++++++++++++++++++++++++++++++++++++
gnu/packages/telephony.scm | 291 ------------------------------
3 files changed, 353 insertions(+), 291 deletions(-)
create mode 100644 gnu/packages/jami.scm

Toggle diff (485 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 26d26ee215..812253b192 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -33,6 +33,7 @@
# Copyright © 2020 Michael Rohleder <mike@rohleder.de>
# Copyright © 2020 Felix Gruber <felgru@posteo.net>
# Copyright © 2020 Ryan Prior <rprior@protonmail.com>
+# Copyright © 2020 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
#
# This file is part of GNU Guix.
#
@@ -278,6 +279,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/ipfs.scm \
%D%/packages/irc.scm \
%D%/packages/iso-codes.scm \
+ %D%/packages/jami.scm \
%D%/packages/java.scm \
%D%/packages/java-compression.scm \
%D%/packages/java-graphics.scm \
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
new file mode 100644
index 0000000000..5c167808f0
--- /dev/null
+++ b/gnu/packages/jami.scm
@@ -0,0 +1,351 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
+;;; Copyright © 2019, 2020 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
+;;;
+;;; 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)
+ #:use-module (gnu packages base)
+ #:use-module (gnu packages boost)
+ #:use-module (gnu packages check)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages crypto)
+ #:use-module (gnu packages documentation)
+ #:use-module (gnu packages gettext)
+ #:use-module (gnu packages glib)
+ #:use-module (gnu packages gnome)
+ #:use-module (gnu packages gtk)
+ #:use-module (gnu packages libcanberra)
+ #:use-module (gnu packages linux)
+ #:use-module (gnu packages multiprecision)
+ #:use-module (gnu packages networking)
+ #:use-module (gnu packages pcre)
+ #: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)
+ #:use-module (gnu packages video)
+ #:use-module (gnu packages webkit)
+ #: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)
+ #:use-module (guix download)
+ #:use-module (guix git-download)
+ #:use-module (guix packages)
+ #:use-module (guix utils))
+
+(define %jami-version "20191101.3.67671e7")
+
+(define* (jami-source #:key without-daemon)
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://dl.jami.net/ring-release/tarballs/ring_"
+ %jami-version
+ ".tar.gz"))
+ (modules '((guix build utils)))
+ (snippet
+ (if without-daemon
+ '(begin
+ (delete-file-recursively "daemon/contrib"))
+ #f))
+ (sha256
+ (base32
+ "0kw172w2ccyz438kf5xqw14nhfm4xk6a2libnzib9j2wvhlpf4q0"))))
+
+(define-public pjproject-jami
+ (package
+ (inherit pjproject)
+ (name "pjproject-jami")
+ (native-inputs
+ `(("savoir-faire-linux-patches" ,(jami-source))
+ ,@(package-native-inputs pjproject)))
+ (arguments
+ `(#:tests? #f
+ ;; See ring-project/daemon/contrib/src/pjproject/rules.mak.
+ #:configure-flags
+ (list "--disable-oss"
+ "--disable-sound"
+ "--disable-video"
+ "--enable-ext-sound"
+ "--disable-speex-aec"
+ "--disable-g711-codec"
+ "--disable-l16-codec"
+ "--disable-gsm-codec"
+ "--disable-g722-codec"
+ "--disable-g7221-codec"
+ "--disable-speex-codec"
+ "--disable-ilbc-codec"
+ "--disable-opencore-amr"
+ "--disable-silk"
+ "--disable-sdl"
+ "--disable-ffmpeg"
+ "--disable-v4l2"
+ "--disable-openh264"
+ "--disable-resample"
+ "--disable-libwebrtc"
+ "--with-gnutls"
+ "--with-external-srtp"
+ ;; We need -fPIC or else we get the following error when linking
+ ;; against pjproject-jami:
+ ;; relocation R_X86_64_32S against `.rodata' can not be used when
+ ;; making a shared object;
+ "CFLAGS=-fPIC"
+ "CXXFLAGS=-fPIC")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'make-git-checkout-writable
+ (lambda _
+ (for-each make-file-writable (find-files "."))
+ #t))
+ (add-after 'unpack 'apply-patches
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((savoir-faire-linux-patches-directory "Savoir-faire Linux patches")
+ ;; Comes from
+ ;; "ring-project/daemon/contrib/src/pjproject/rules.mak".
+ ;; WARNING: These amount for huge changes in pjproject.
+ (savoir-faire-linux-patches
+ '("fix_turn_alloc_failure"
+ "rfc2466"
+ "ipv6"
+ "multiple_listeners"
+ "pj_ice_sess"
+ "fix_turn_fallback"
+ "fix_ioqueue_ipv6_sendto"
+ "add_dtls_transport"
+ "rfc6544"
+ "ice_config"
+ "sip_config"
+ "fix_first_packet_turn_tcp"
+ "fix_ebusy_turn"
+ "ignore_ipv6_on_transport_check"
+ "fix_turn_connection_failure"
+ ;; "uwp_vs" ; for windows
+ "disable_local_resolution")))
+ (mkdir-p savoir-faire-linux-patches-directory)
+ (invoke "tar" "-xvf" (assoc-ref inputs "savoir-faire-linux-patches")
+ "-C" savoir-faire-linux-patches-directory
+ "--strip-components=5"
+ "ring-project/daemon/contrib/src/pjproject")
+ (for-each
+ (lambda (file)
+ (invoke "patch" "--force" "-p1" "-i"
+ (string-append savoir-faire-linux-patches-directory "/"
+ file ".patch")))
+ savoir-faire-linux-patches))
+ #t))
+ ;; TODO: We could use substitute-keyword-arguments instead of
+ ;; repeating the phases from pjproject, but somehow it does
+ ;; not work.
+ (add-before 'build 'build-dep
+ (lambda _ (invoke "make" "dep")))
+ (add-before 'patch-source-shebangs 'autoconf
+ (lambda _
+ (invoke "autoconf" "-v" "-f" "-i" "-o"
+ "aconfigure" "aconfigure.ac")))
+ (add-before 'autoconf 'disable-some-tests
+ ;; Three of the six test programs fail due to missing network
+ ;; access.
+ (lambda _
+ (substitute* "Makefile"
+ (("selftest: pjlib-test pjlib-util-test pjnath-test pjmedia-test pjsip-test pjsua-test")
+ "selftest: pjlib-test pjlib-util-test pjmedia-test"))
+ #t)))))))
+
+(define-public libring
+ (package
+ (name "libring")
+ (version %jami-version)
+ (source (jami-source #:without-daemon #t))
+ (build-system gnu-build-system)
+ (inputs
+ ;; Missing (optional?) dep: libnatpmp.
+ `(("alsa-lib" ,alsa-lib)
+ ("boost" ,boost)
+ ("dbus-c++" ,dbus-c++)
+ ("eudev" ,eudev)
+ ("ffmpeg" ,ffmpeg)
+ ("flac" ,flac)
+ ("gmp" ,gmp)
+ ("gsm" ,gsm)
+ ("jack" ,jack-1)
+ ("jsoncpp" ,jsoncpp)
+ ("libogg" ,libogg)
+ ("libva" ,libva)
+ ("opendht" ,opendht)
+ ("opus" ,opus)
+ ("pcre" ,pcre)
+ ("pulseaudio" ,pulseaudio)
+ ("libsamplerate" ,libsamplerate)
+ ("libsndfile" ,libsndfile)
+ ("speex" ,speex)
+ ("speexdsp" ,speexdsp)
+ ("libupnp" ,libupnp)
+ ("libvorbis" ,libvorbis)
+ ("libx264" ,libx264)
+ ("libvdpau" ,libvdpau)
+ ("yaml-cpp" ,yaml-cpp)
+ ("zlib" ,zlib)
+ ("openssl" ,openssl)
+ ("libsecp256k1" ,libsecp256k1)
+ ("python" ,python)
+ ("python-wrapper" ,python-wrapper)
+ ("restinio" ,restinio)
+ ("libx11" ,libx11)
+ ("asio" ,asio)
+ ;; TODO: Upstream seems to rely on a custom pjproject (a.k.a. pjsip) version.
+ ;; See https://git.jami.net/savoirfairelinux/ring-daemon/issues/24.
+ ("pjproject" ,pjproject-jami)))
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("libtool" ,libtool)
+ ("pkg-config" ,pkg-config)
+ ("which" ,which)
+ ("cppunit" ,cppunit)
+ ("perl" ,perl))) ; Needed for documentation.
+ (arguments
+ `(#:tests? #f ; The tests fail to compile due to missing headers.
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'change-directory
+ (lambda _
+ (chdir "daemon")
+ #t))
+ (add-before 'build 'add-lib-dir
+ (lambda _
+ (mkdir-p "src/lib")
+ #t)))))
+ (synopsis "Distributed multimedia communications platform")
+ (description "Jami (formerly GNU Ring) 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.
+
+This package provides a library and daemon implementing the Jami core
+functionality.")
+ (home-page "https://jami.net/")
+ (license license:gpl3+)))
+
+(define-public libringclient
+ (package
+ (inherit libring)
+ (name "libringclient")
+ (build-system cmake-build-system)
+ (propagated-inputs
+ `(("libring" ,libring) ; For 'dring'.
+ ("qtbase" ,qtbase) ; Qt is included in several installed headers.
+ ("qttools" ,qttools)))
+ (arguments
+ `(#:tests? #f ; There is no testsuite.
+ #:configure-flags
+ (list (string-append "-DRING_BUILD_DIR="
+ (assoc-ref %build-inputs "libring") "/include"))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'change-directory
+ (lambda _
+ (chdir "lrc")
+ #t))
+ (add-before 'configure 'fix-dbus-interfaces-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "CMakeLists.txt"
+ (("\\$\\{CMAKE_INSTALL_PREFIX\\}(/share/dbus-1/interfaces)" _ dbus-interfaces-path-suffix)
+ (string-append (assoc-ref inputs "libring")
+ dbus-interfaces-path-suffix))))))))
+ (synopsis "Distributed multimedia communications platform")
+ (description "Jami (formerly GNU Ring) 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.
+
+This package provides a library common to all Jami clients.")
+ (home-page "https://jami.net")
+ (license license:gpl3+)))
+
+(define-public jami
+ (package
+ (inherit libring)
+ (name "jami")
+ (build-system cmake-build-system)
+ (inputs
+ `(("libringclient" ,libringclient)
+ ("gtk+" ,gtk+)
+ ("qrencode" ,qrencode)
+ ("libnotify" ,libnotify)
+ ("clutter" ,clutter)
+ ("clutter-gtk" ,clutter-gtk)
+ ("gettext" ,gnu-gettext)
+ ("libcanberra" ,libcanberra)
+ ("webkitgtk" ,webkitgtk)
+ ;; TODO: We must wrap ring-client-gnome to force using the
+ ;; `sqlite-with-column-metadata' package instead of `sqlite' or else it
+ ;; fails with:
+ ;;
+ ;; /gnu/store/...-qtbase-5.11.2/lib/qt5/plugins/sqldrivers/libqsqlite.so:
+ ;; undefined symbol: sqlite3_column_table_name16
+ ;;
+ ;; qtbase is built against sqlite-with-column-metadata but somehow
+ ;; jami-client-gnome ends up with both `sqlite' and
+ ;; `sqlite-with-column-metadata' as inputs and it seems that
+ ;; libqsqlite.so gets confused.
+ ("sqlite" ,sqlite-with-column-metadata)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("glib:bin" ,glib "bin")
+ ("doxygen" ,doxygen)))
+ (propagated-inputs
+ `(("libring" ,libring) ; Contains `dring', the daemon, which is automatically by d-bus.
+ ("adwaita-icon-theme" ,adwaita-icon-theme)
+ ("evolution-data-server" ,evolution-data-server)))
+ (arguments
+ `(#:tests? #f ; There is no testsuite.
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'change-directory
+ (lambda _
+ (chdir "client-gnome")
+ #t))
+ (add-after 'install 'wrap
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (path (string-append (assoc-ref inputs "sqlite") "/lib")))
+ (wrap-program (string-append out "/bin/jami-gnome")
+ `("LD_LIBRARY_PATH" ":" prefix (,path))))
+ #t)))))
+ (synopsis "Distributed, privacy-respecting communication program")
+ (description "Jami (formerly GNU Ring) 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.
+
+This package provides the Jami client for the GNOME desktop.")
+ (home-page "https://jami.net")
+ (license license:gpl3+)))
+
+(define-public jami-client-gnome
+ (deprecated-package "jami-client-gnome" jami))
diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index 7b20954120..747b0d75a1 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -734,297 +734,6 @@ calls and messages")
Initiation Protocol (SIP) and a multimedia framework.")
(license license:gpl2+)))
-(define %jami-version "20191101.3.67671e7")
-
-(define* (jami-source #:key without-daemon)
- (origin
- (method url-fetch)
- (uri (string-append "https://dl.jami.net/ring-release/tarballs/ring_"
- %jami-version
- ".tar.gz"))
- (modules '((guix build utils)))
- (snippet
- (if without-daemon
- '(begin
- (delete-file-recursively "daemon/contrib"))
- #f))
- (sha256
- (base32
- "0kw172w2ccyz438kf5xqw14nhfm4xk6a2libnzib9j2wvhlpf4q0"))))
-
-(define-public pjproject-jami
- (package
- (inherit pjproject)
- (name "pjproject-jami")
- (native-inputs
- `(("savoir-faire-linux-patches" ,(jami-source))
- ,@(package-native-inputs pjproject)))
- (arguments
- `(#:tests? #f
- ;; See ring-project/daemon/contrib/src/pjproject/rules.mak.
- #:configure-flags
- (list "--disable-oss"
- "--disable-sound"
- "--disable-video"
- "--enable-ext-sound"
- "--disable-speex-aec"
- "--disable-g711-codec"
- "--disable-l16-codec"
- "--disable-gsm-codec"
- "--disable-g722-codec"
- "--disable-g7221-codec"
- "--disable-speex-codec"
- "--disable-ilbc-codec"
- "--disable-opencore-amr"
- "--disable-silk"
- "--disable-sdl"
- "--disable-ffmpeg"
- "--disable-v4l2"
- "--disable-openh264"
- "--disable-resample"
- "--disable-libwebrtc"
- "--with-gnutls"
- "--with-external-srtp"
- ;; We need -fPIC or else we get the following error when linking
- ;; against pjproject-jami:
- ;; relocation R_X86_64_32S against `.rodata' can not be used when
- ;; making a shared object;
- "CFLAGS=-fPIC"
- "CXXFLAGS=-fPIC")
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'make-git-checkout-writable
- (lambda _
- (for-each make-file-writable (find-files "."))
- #t))
- (add-after 'unpack 'apply-patches
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((savoir-faire-linux-patches-directory "Savoir-faire Linux patches")
- ;; Comes from
- ;; "ring-project/daemon/contrib/src/pjproject/rules.mak".
- ;; WARNING: These amount for huge changes in pjproject.
- (savoir-faire-linux-patches
- '("fix_turn_alloc_failure"
- "rfc2466"
- "ipv6"
- "multiple_listeners"
- "pj_ice_sess"
- "fix_turn_fallback"
- "fix_ioqueue_ipv6_sendto"
- "add_dtls_transport"
- "rfc6544"
- "ice_config"
- "sip_config"
- "fix_first_packet_turn_tcp"
- "fix_ebusy_turn"
- "ignore_ipv6_on_transport_check"
- "fix_turn_connection_failure"
- ;; "uwp_vs" ; for windows
- "disable_local_resolution")))
- (mkdir-p savoir-faire-linux-patches-directory)
- (invoke "tar" "-xvf" (assoc-ref inputs "savoir-faire-linux-patches")
- "-C" savoir-faire-linux-patches-directory
- "--strip-components=5"
- "ring-project/daemon/contrib/src/pjproject")
- (for-each
- (lambda (file)
- (invoke "patch" "--force" "-p1" "-i"
- (string-append savoir-faire-linux-patches-directory "/"
- file ".patch")))
- savoir-faire-linux-patches))
- #t))
-
This message was truncated. Download the full message here.
J
J
Jan Wielkiewicz wrote on 2 May 2020 03:14
[PATCH V3 06/15] gnu: libupnp: Bump to 1.8.6
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200502011450.2676-7-tona_kosmicznego_smiecia@interia.pl
* gnu/packages/upnp.scm (libupnp): Bump to 1.8.6.
Update hash.
[source]: Use git-fetch and the new official repo.
[native-inputs]: Add autoconf, automake, libtool and
pkg-config.
---
gnu/packages/upnp.scm | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)

Toggle diff (49 lines)
diff --git a/gnu/packages/upnp.scm b/gnu/packages/upnp.scm
index 8f3c887a68..768df4a03e 100644
--- a/gnu/packages/upnp.scm
+++ b/gnu/packages/upnp.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2016, 2017, 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Theodoros Foradis <theodoros@foradis.org>
;;; Copyright © 2019 Jens Mølgaard <jens@zete.tk>
+;;; Copyright © 2020 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -28,6 +29,7 @@
#:use-module (gnu packages photo)
#:use-module (gnu packages image)
#:use-module (gnu packages mp3)
+ #:use-module (gnu packages pkg-config)
#:use-module (gnu packages xiph)
#:use-module (gnu packages sqlite)
#:use-module (gnu packages python)
@@ -92,15 +94,21 @@ over IRC, instant messaging, network games, and most server software.")
(define-public libupnp
(package
(name "libupnp")
- (version "1.6.25")
+ (version "1.8.6")
(source
(origin
- (method url-fetch)
- (uri (string-append "mirror://sourceforge/pupnp/pupnp/libUPnP%20"
- version "/" name "-" version ".tar.bz2"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/pupnp/pupnp.git")
+ (commit (string-append "release-" version))))
(sha256
(base32
- "0hzsd7rvfa87b4hxg9yj4xhdfxx9sp09r9sqdl3mqhvmcyw018y5"))))
+ "1jlb6qh47513h2simy0zxia5q61w1c31mnwmjqpr2nf832lmnpk4"))))
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("libtool" ,libtool)
+ ("pkg-config" ,pkg-config)))
(build-system gnu-build-system)
(arguments
;; The tests require a network device capable of multicasting which is
--
2.26.2
J
J
Jan Wielkiewicz wrote on 2 May 2020 03:14
[PATCH V3 02/15] gnu: jami: Fix downloading.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200502011450.2676-3-tona_kosmicznego_smiecia@interia.pl
The package name changed from Ring to Jami.
Package tarballs start now with "jami_" prefix.
The "ring-release" folder is also deprecated, let's use the
"release" folder instead.

* gnu/packages/jami.scm (jami-source)[origin]:
---
gnu/packages/jami.scm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Toggle diff (15 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 5c167808f0..44a57c9bfb 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -64,7 +64,7 @@
(define* (jami-source #:key without-daemon)
(origin
(method url-fetch)
- (uri (string-append "https://dl.jami.net/ring-release/tarballs/ring_"
+ (uri (string-append "https://dl.jami.net/release/tarballs/jami_"
%jami-version
".tar.gz"))
(modules '((guix build utils)))
--
2.26.2
J
J
Jan Wielkiewicz wrote on 2 May 2020 03:14
[PATCH V3 11/15] gnu: pjproject, pjproject-jami: Bump to 2.10, apply new SFL patches.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200502011450.2676-12-tona_kosmicznego_smiecia@interia.pl
* gnu/packages/telephony.scm (pjproject): Bump the version to 2.10.

* gnu/packages/jami.scm (pjproject-jami)[arguments]:
Use the new patches instead of the old.
---
gnu/packages/jami.scm | 27 ++++++++++-----------------
gnu/packages/telephony.scm | 6 +++---
2 files changed, 13 insertions(+), 20 deletions(-)

Toggle diff (76 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index eb699a5b33..86745e8be1 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -107,7 +107,7 @@
`(#:tests? #f
;; See ring-project/daemon/contrib/src/pjproject/rules.mak.
#:configure-flags
- (list "--disable-oss"
+ (list "--disable-oss" ; do we need this?
"--disable-sound"
"--disable-video"
"--enable-ext-sound"
@@ -151,22 +151,15 @@
#:inputs inputs
#:dep-name "pjproject"
#:patches
- '("fix_turn_alloc_failure"
- "rfc2466"
- "ipv6"
- "multiple_listeners"
- "pj_ice_sess"
- "fix_turn_fallback"
- "fix_ioqueue_ipv6_sendto"
- "add_dtls_transport"
- "rfc6544"
- "ice_config"
- "sip_config"
- "fix_first_packet_turn_tcp"
- "fix_ebusy_turn"
- "ignore_ipv6_on_transport_check"
- "fix_turn_connection_failure"
- "disable_local_resolution"))
+ '("0001-rfc6544"
+ "0002-rfc2466"
+ "0003-add-tcp-keep-alive"
+ "0004-multiple_listeners"
+ "0005-fix_ebusy_turn"
+ "0006-ignore_ipv6_on_transport_check"
+ "0007-pj_ice_sess"
+ "0008-fix_ioqueue_ipv6_sendto"
+ "0009-add-config-site"))
#t)))
;; TODO: We could use substitute-keyword-arguments instead of
;; repeating the phases from pjproject, but somehow it does
diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index 747b0d75a1..ba0d96ba93 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -651,13 +651,13 @@ calls and messages")
(define-public pjproject
(package
(name "pjproject")
- (version "2.9")
+ (version "2.10")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/pjsip/pjproject.git")
- (commit "5dfa75be7d69047387f9b0436dd9492bbbf03fe4")))
+ (commit "3e7b75cb2e482baee58c1991bd2fa4fb06774e0d")))
(modules '((guix build utils)))
(snippet
'(begin
@@ -690,7 +690,7 @@ calls and messages")
(file-name (git-file-name name version))
(sha256
(base32
- "1ayj6n7zd5wvd1nzj2k9s57fb4ckc2fv92k5sjvhd87yg69k3393"))))
+ "1aklicpgwc88578k03i5d5cm5h8mfm7hmx8vfprchbmaa2p8f4z0"))))
(build-system gnu-build-system)
(inputs
`(("portaudio" ,portaudio)))
--
2.26.2
J
J
Jan Wielkiewicz wrote on 2 May 2020 03:14
[PATCH V3 15/15] gnu: opendht: Bump to 2.0.0.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200502011450.2676-16-tona_kosmicznego_smiecia@interia.pl
* gnu/packages/networking.scm (opendht): Bump to 2.0.0.
---
gnu/packages/networking.scm | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

Toggle diff (33 lines)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index e3a1b06b4d..28c0d35a7c 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -33,7 +33,7 @@
;;; Copyright © 2019 Brice Waegeneire <brice@waegenei.re>
;;; Copyright © 2019 Tonton <tonton@riseup.net>
;;; Copyright © 2019, 2020 Alex Griffin <a@ajgrf.com>
-;;; Copyright © 2019 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
+;;; Copyright © 2019, 2020 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
;;; Copyright © 2019 Daniel Schaefer <git@danielschaefer.me>
;;; Copyright © 2019 Diego N. Barbato <dnbarbato@posteo.de>
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
@@ -2715,7 +2715,7 @@ and targeted primarily for asynchronous processing of HTTP-requests.")
(define-public opendht
(package
(name "opendht")
- (version "2.0.0beta2")
+ (version "2.0.0")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -2724,7 +2724,7 @@ and targeted primarily for asynchronous processing of HTTP-requests.")
(file-name (git-file-name name version))
(sha256
(base32
- "02ix0rvvyhq22gd5djcq84qz08ji7ln93faf23b27zjzni2klzv5"))))
+ "1q1fwk8wwk9r6bp0indpr60ql668lsk16ykslacyhrh7kg97kvhr"))))
;; Since 2.0, the gnu-build-system does not seem to work anymore, upstream bug?
(build-system cmake-build-system)
(inputs
--
2.26.2
J
J
Jan Wielkiewicz wrote on 2 May 2020 03:14
[PATCH V3 08/15] gnu: libring: Use ffmpeg-jami instead of ffmpeg.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200502011450.2676-9-tona_kosmicznego_smiecia@interia.pl
* gnu/packages/jami.scm (libring)[inputs]: Use ffmpeg-jami instead of ffmpeg.
---
gnu/packages/jami.scm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Toggle diff (15 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 0fc03b6088..0e49b31f84 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -436,7 +436,7 @@
("boost" ,boost)
("dbus-c++" ,dbus-c++)
("eudev" ,eudev)
- ("ffmpeg" ,ffmpeg)
+ ("ffmpeg" ,ffmpeg-jami)
("flac" ,flac)
("gmp" ,gmp)
("gsm" ,gsm)
--
2.26.2
J
J
Jan Wielkiewicz wrote on 2 May 2020 03:14
[PATCH V3 00/15] Jami patches.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200502011450.2676-1-tona_kosmicznego_smiecia@interia.pl
*** BLURB HERE ***

Hello,
I hope my commit messages are good now.
I removed some unnecessary commits.

Jan Wielkiewicz (15):
gnu: telephony.scm: Move Jami and its dependencies to jami.scm.
gnu: jami: Fix downloading.
gnu: jami.scm: Add and use a generalized procedure for applying
patches to Jami dependencies.
gnu: Add libnatpmp.
gnu: libring: Add libnatpmp as an optional dependency.
gnu: libupnp: Bump to 1.8.6
gnu: Add ffmpeg-jami.
gnu: libring: Use ffmpeg-jami instead of ffmpeg.
gnu: restinio: Bump to 0.6.1.1.
gnu: jami: Make gettext a native input.
gnu: pjproject, pjproject-jami: Bump to 2.10, apply new SFL patches.
gnu: jami: Bump to 20200401.1.6f090de.
gnu: jami: Replace gnu-gettext with gettext-minimal, just like on
master.
gnu: pjproject-jami: Add the missing, linux-only "--enable-epoll"
flag.
gnu: opendht: Bump to 2.0.0.

gnu/local.mk | 2 +
gnu/packages/jami.scm | 599 ++++++++++++++++++++++++++++++++++++
gnu/packages/networking.scm | 50 ++-
gnu/packages/telephony.scm | 297 +-----------------
gnu/packages/upnp.scm | 18 +-
5 files changed, 662 insertions(+), 304 deletions(-)
create mode 100644 gnu/packages/jami.scm

--
2.26.2
J
J
Jan Wielkiewicz wrote on 2 May 2020 03:14
[PATCH V3 13/15] gnu: jami: Replace gnu-gettext with gettext-minimal, just like on master.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200502011450.2676-14-tona_kosmicznego_smiecia@interia.pl
* gnu/packages/jami.scm (jami)[native-inputs]:
Replace gettext with gettext-minimal.
---
gnu/packages/jami.scm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Toggle diff (15 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 4b2a553f71..68b3dbcf74 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -557,7 +557,7 @@ This package provides a library common to all Jami clients.")
("sqlite" ,sqlite-with-column-metadata)))
(native-inputs
`(("pkg-config" ,pkg-config)
- ("gettext" ,gnu-gettext)
+ ("gettext" ,gettext-minimal)
("glib:bin" ,glib "bin")
("doxygen" ,doxygen)))
(propagated-inputs
--
2.26.2
J
J
Jan Wielkiewicz wrote on 2 May 2020 03:14
[PATCH V3 14/15] gnu: pjproject-jami: Add the missing, linux-only "--enable-epoll" flag.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200502011450.2676-15-tona_kosmicznego_smiecia@interia.pl
* gnu/packages/jami.scm (pjproject-jami)[arguments]: Add the "--enable-epoll" flag,
if not on the Hurd.
---
gnu/packages/jami.scm | 6 ++++++
1 file changed, 6 insertions(+)

Toggle diff (26 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 68b3dbcf74..54fa6453cf 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -32,6 +32,7 @@
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
#:use-module (gnu packages gtk)
+ #:use-module (gnu packages hurd)
#:use-module (gnu packages libcanberra)
#:use-module (gnu packages linux)
#:use-module (gnu packages multiprecision)
@@ -110,6 +111,11 @@
(list "--disable-oss" ; do we need this?
"--disable-sound"
"--disable-video"
+ ;; The following flag is linux specific
+ ,@(if (hurd-triplet? (or (%current-system)
+ (%current-target-system)))
+ '()
+ '("--enable-epoll"))
"--enable-ext-sound"
"--disable-speex-aec"
"--disable-g711-codec"
--
2.26.2
M
M
Mathieu Othacehe wrote on 2 May 2020 10:22
Re: [bug#40677] [PATCH V3 04/15] gnu: Add libnatpmp.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87tv0y3fvr.fsf@gmail.com
Hello Jan,

Thanks for this v3! I applied this one with the following edits:

Toggle snippet (37 lines)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 603d8b8e3a..431b0fafd4 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -439,8 +439,6 @@ files contain direct mappings of the abstractions provided by the ØMQ C API.")
(base32
"1c1n8n7mp0amsd6vkz32n8zj3vnsckv308bb7na0dg0r8969rap1"))))
(build-system gnu-build-system)
- (native-inputs
- `(("pkg-config" ,pkg-config)))
(arguments
`(#:phases
(modify-phases %standard-phases
@@ -448,16 +446,13 @@ files contain direct mappings of the abstractions provided by the ØMQ C API.")
(delete 'check)) ; no tests
#:make-flags
(let* ((target ,(%current-target-system))
- (gcc (if target (string-append target "-gcc") "gcc"))
- (pkg-config (if target
- (string-append target "-pkg-config")
- "pkg-config")))
+ (gcc (if target
+ (string-append target "-gcc")
+ "gcc")))
(list
(string-append "CC=" gcc)
- (string-append "PKG_CONFIG="
- (assoc-ref %build-inputs "pkg-config")
- "/bin/" pkg-config)
- (string-append "PREFIX=" (assoc-ref %outputs "out"))))))
+ (string-append "INSTALLPREFIX=" (assoc-ref %outputs "out"))
+ (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib")))))
(home-page "http://miniupnp.free.fr/libnatpmp.html")
(synopsis "C library implementing NAT-PMP")
(description

Mathieu
M
M
Mathieu Othacehe wrote on 2 May 2020 10:30
Re: [bug#40677] [PATCH V3 06/15] gnu: libupnp: Bump to 1.8.6
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87mu6q3fir.fsf@gmail.com
Applied with an edited commit message,

Thanks,

Mathieu
M
M
Mathieu Othacehe wrote on 2 May 2020 10:32
Re: [bug#40677] [PATCH V3 09/15] gnu: restinio: Bump to 0.6.1.1.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87imhe3ffb.fsf@gmail.com
Applied with an edited commit message (s/bump/update).

Thanks,

Mathieu
M
M
Mathieu Othacehe wrote on 2 May 2020 10:38
Re: [bug#40677] [PATCH V3 15/15] gnu: opendht: Bump to 2.0.0.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87ees23f4w.fsf@gmail.com
Seems like the 2.1.0 is about to be released. But let's go with 2.0.0
for now. Applied!

Thanks,

Mathieu
M
M
Mathieu Othacehe wrote on 2 May 2020 10:47
Re: [bug#40677] [PATCH V3 02/15] gnu: jami: Fix downloading.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
875zde3eqs.fsf@gmail.com
Applied, thanks!

Mathieu

Toggle quote (25 lines)
> The package name changed from Ring to Jami.
> Package tarballs start now with "jami_" prefix.
> The "ring-release" folder is also deprecated, let's use the
> "release" folder instead.
>
> * gnu/packages/jami.scm (jami-source)[origin]:
> Change the uri from "https://dl.jami.net/ring-release/tarballs/ring_"
> to "https://dl.jami.net/release/tarballs/jami_".
> ---
> gnu/packages/jami.scm | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
> index 5c167808f0..44a57c9bfb 100644
> --- a/gnu/packages/jami.scm
> +++ b/gnu/packages/jami.scm
> @@ -64,7 +64,7 @@
> (define* (jami-source #:key without-daemon)
> (origin
> (method url-fetch)
> - (uri (string-append "https://dl.jami.net/ring-release/tarballs/ring_"
> + (uri (string-append "https://dl.jami.net/release/tarballs/jami_"
> %jami-version
> ".tar.gz"))
> (modules '((guix build utils)))
M
M
Mathieu Othacehe wrote on 2 May 2020 10:54
Re: [bug#40677] [PATCH V3 03/15] gnu: jami.scm: Add and use a generalized procedure for applying patches to Jami dependencies.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
871ro23ef9.fsf@gmail.com
Edited the commit message and applied,

Thanks,

Mathieu
M
M
Mathieu Othacehe wrote on 2 May 2020 10:45
Re: [bug#40677] [PATCH V3 01/15] gnu: telephony.scm: Move Jami and its dependencies to jami.scm.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87a72q3etl.fsf@gmail.com
I added Vicent copyright to jami.scm, edited the commit message and
applied.

Thanks,

Mathieu
M
M
Mathieu Othacehe wrote on 2 May 2020 10:56
Re: [bug#40677] [PATCH V3 05/15] gnu: libring: Add libnatpmp as an optional dependency.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87wo5u1zr4.fsf@gmail.com
Same here, applied!

Thanks
M
M
Mathieu Othacehe wrote on 2 May 2020 10:58
Re: [bug#40677] [PATCH V3 10/15] gnu: jami: Make gettext a native input.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87sggi1znb.fsf@gmail.com
Applied,

Thanks
M
M
Mathieu Othacehe wrote on 2 May 2020 11:14
Re: [bug#40677] [PATCH V3 11/15] gnu: pjproject, pjproject-jami: Bump to 2.10, apply new SFL patches.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87o8r61yxl.fsf@gmail.com
Toggle quote (1 lines)
> * gnu/packages/telephony.scm (pjproject): Bump the version to 2.10.
s/bump/update

Toggle quote (2 lines)
> + (list "--disable-oss" ; do we need this?

If we don't need this you can remove it. Otherwise no need to add a
comment.

You shouldn't hardcode the commit corresponding to the tag. You can do
this instead:

Toggle snippet (5 lines)
(url "https://github.com/pjsip/pjproject.git")
- (commit "3e7b75cb2e482baee58c1991bd2fa4fb06774e0d")))
+ (commit version)))

With this commit, neither pjproject nor pjproject-jami build for
me. Could you check why?

Thanks,

Mathieu
M
M
Mathieu Othacehe wrote on 2 May 2020 11:19
Re: [bug#40677] [PATCH V3 12/15] gnu: jami: Bump to 20200401.1.6f090de.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87k11u1yok.fsf@gmail.com
Toggle quote (3 lines)
> -(define %jami-version "20191101.3.67671e7")
> +(define %jami-version "20200401.1.6f090de")

Turns out this one needs to be applied before the pjproject update.

Mathieu
M
M
Mathieu Othacehe wrote on 2 May 2020 11:25
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87ftci1ye3.fsf@gmail.com
Toggle quote (3 lines)
> -(define %jami-version "20191101.3.67671e7")
> +(define %jami-version "20200401.1.6f090de")

Ok, so I merged this one with the previous one. As you noted pjproject
still fails to build in 2.10. Even if Jami variant is now ok, it would
be great if you could fix pjproject build too.

Thanks,

Mathieu
M
M
Mathieu Othacehe wrote on 2 May 2020 11:28
Re: [bug#40677] [PATCH V3 13/15] gnu: jami: Replace gnu-gettext with gettext-minimal, just like on master.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87bln61y9m.fsf@gmail.com
Applied with an edited commit message,

Thanks,

Mathieu
M
M
Mathieu Othacehe wrote on 2 May 2020 11:32
Re: [bug#40677] [PATCH V3 14/15] gnu: pjproject-jami: Add the missing, linux-only "--enable-epoll" flag.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
877dxu1y2c.fsf@gmail.com
Applied,

Thanks,

Mathieu
M
M
Mathieu Othacehe wrote on 2 May 2020 11:36
Re: [bug#40677] [PATCH V3 07/15] gnu: Add ffmpeg-jami.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87368i1xwh.fsf@gmail.com
Ok, last one! As discussed before I'm not very comfortable with this
very long list of configuration options.

Are the ffmpeg configuration options needed by Jami described somewhere?

Thanks,

Mathieu
M
M
Mathieu Othacehe wrote on 2 May 2020 11:52
Re: [bug#40677] [PATCH V3 00/15] Jami patches.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87y2qazmst.fsf@gmail.com
Hello Jan,

Thanks for this v3, I pushed everything except for the ffmpeg patches.
When trying Jami on Ubuntu, I have the following errors:

Toggle snippet (17 lines)
** (jami-gnome:3720): WARNING **: 11:46:10.955: Error : dring is not available, make sure it is running
Gtk-Message: 11:46:11.008: Failed to load module "canberra-gtk-module"
Gtk-Message: 11:46:11.009: Failed to load module "canberra-gtk-module"

** (jami-gnome:3720): WARNING **: 11:46:11.010: Error : dring is not available, make sure it is running

(jami-gnome:3720): Gtk-WARNING **: 11:46:11.012: Theme parsing error: <data>:1:273: not a number

** (jami-gnome:3720): WARNING **: 11:46:11.116: dring has possibly crashed, or has been killed... will wait 2.5 seconds and try to reconnect

** (jami-gnome:3720): WARNING **: 11:46:13.623: Error : dring is not available, make sure it is running

** (jami-gnome:3720): WARNING **: 11:46:13.623: Error : dring is not available, make sure it is running

** (jami-gnome:3720): WARNING **: 11:46:13.623: could not reconnect to the daemon

The problem is the same with the jami-20191101.3.67671e7 revision. Do
you know why?

Thanks,

Mathieu
J
(name . Mathieu Othacehe)(address . m.othacehe@gmail.com)(address . 40677@debbugs.gnu.org)
20200502132617.308b9658@kompiuter
On Sat, 02 May 2020 11:52:18 +0200
Mathieu Othacehe <m.othacehe@gmail.com> wrote:

Toggle quote (38 lines)
> Hello Jan,
>
> Thanks for this v3, I pushed everything except for the ffmpeg patches.
> When trying Jami on Ubuntu, I have the following errors:
>
> --8<---------------cut here---------------start------------->8---
> ** (jami-gnome:3720): WARNING **: 11:46:10.955: Error : dring is not
> available, make sure it is running Gtk-Message: 11:46:11.008: Failed
> to load module "canberra-gtk-module" Gtk-Message: 11:46:11.009:
> Failed to load module "canberra-gtk-module"
>
> ** (jami-gnome:3720): WARNING **: 11:46:11.010: Error : dring is not
> available, make sure it is running
>
> (jami-gnome:3720): Gtk-WARNING **: 11:46:11.012: Theme parsing error:
> <data>:1:273: not a number
>
> ** (jami-gnome:3720): WARNING **: 11:46:11.116: dring has possibly
> crashed, or has been killed... will wait 2.5 seconds and try to
> reconnect
>
> ** (jami-gnome:3720): WARNING **: 11:46:13.623: Error : dring is not
> available, make sure it is running
>
> ** (jami-gnome:3720): WARNING **: 11:46:13.623: Error : dring is not
> available, make sure it is running
>
> ** (jami-gnome:3720): WARNING **: 11:46:13.623: could not reconnect
> to the daemon --8<---------------cut
> here---------------end--------------->8---
>
> The problem is the same with the jami-20191101.3.67671e7 revision. Do
> you know why?
>
> Thanks,
>
> Mathieu

To be honest, I don't know why this happens. I was too focused on
correcting the commit messages I forgot about testing. Let me test it
now.


Jan Wielkiewicz
J
Re: [bug#40677] [PATCH V3 07/15] gnu: Add ffmpeg-jami.
(name . Mathieu Othacehe)(address . m.othacehe@gmail.com)(address . 40677@debbugs.gnu.org)
20200502133118.72a69372@kompiuter
On Sat, 02 May 2020 11:36:30 +0200
Mathieu Othacehe <m.othacehe@gmail.com> wrote:

Toggle quote (10 lines)
> Ok, last one! As discussed before I'm not very comfortable with this
> very long list of configuration options.
>
> Are the ffmpeg configuration options needed by Jami described
> somewhere?
>
> Thanks,
>
> Mathieu

I copied it from ring-project/daemon/contrib/src/ffmpeg/rules.mak.


Jan Wielkiewicz
J
Re: [bug#40677] [PATCH V3 12/15] gnu: jami: Bump to 20200401.1.6f090de.
(name . Mathieu Othacehe)(address . m.othacehe@gmail.com)(address . 40677@debbugs.gnu.org)
20200502133338.38c2c02c@kompiuter
On Sat, 02 May 2020 11:19:39 +0200
Mathieu Othacehe <m.othacehe@gmail.com> wrote:

Toggle quote (7 lines)
> > -(define %jami-version "20191101.3.67671e7")
> > +(define %jami-version "20200401.1.6f090de")
>
> Turns out this one needs to be applied before the pjproject update.
>
> Mathieu

Yes, this can be the case. Patches are taken from jami-source and if the
version isn't updated it can break.


Jan Wielkiewicz
J
Re: [bug#40677] [PATCH V3 00/15] Jami patches.
(name . Mathieu Othacehe)(address . m.othacehe@gmail.com)(address . 40677@debbugs.gnu.org)
20200502165855.2ff4b856@kompiuter
On Sat, 02 May 2020 11:52:18 +0200
Mathieu Othacehe <m.othacehe@gmail.com> wrote:

Toggle quote (4 lines)
> The problem is the same with the jami-20191101.3.67671e7 revision. Do
> you know why?
>

Okay I know the cause - I forgot to replace one occurrence of
"SFL-patches" in ffmpeg-jami with "sfl-patches". Could you fix it for
me or should I send the corrected version?

It works after changing it.

Jan Wielkiewicz
J
Re: [bug#40677] [PATCH V3 12/15] gnu: jami: Bump to 20200401.1.6f090de.
(name . Mathieu Othacehe)(address . m.othacehe@gmail.com)(address . 40677@debbugs.gnu.org)
20200502170405.650b500f@kompiuter
On Sat, 02 May 2020 11:25:56 +0200
Mathieu Othacehe <m.othacehe@gmail.com> wrote:

Toggle quote (7 lines)
> > -(define %jami-version "20191101.3.67671e7")
> > +(define %jami-version "20200401.1.6f090de")
>
> Ok, so I merged this one with the previous one. As you noted pjproject
> still fails to build in 2.10. Even if Jami variant is now ok, it would
> be great if you could fix pjproject build too.

I can try, but haven't succeeded so far.

Toggle quote (5 lines)
> Thanks,
>
> Mathieu


Jan Wielkiewicz
J
Re: [bug#40677] [PATCH V3 11/15] gnu: pjproject, pjproject-jami: Bump to 2.10, apply new SFL patches.
(name . Mathieu Othacehe)(address . m.othacehe@gmail.com)(address . 40677@debbugs.gnu.org)
20200502171718.447a69c1@kompiuter
On Sat, 02 May 2020 11:14:14 +0200
Mathieu Othacehe <m.othacehe@gmail.com> wrote:

Toggle quote (5 lines)
> > * gnu/packages/telephony.scm (pjproject): Bump the version to
> > 2.10.
> s/bump/update
>
> > + (list "--disable-oss" ; do we need this?
I can remove it then.

Toggle quote (19 lines)
> If we don't need this you can remove it. Otherwise no need to add a
> comment.
>
> You shouldn't hardcode the commit corresponding to the tag. You can do
> this instead:
>
> --8<---------------cut here---------------start------------->8---
> (url "https://github.com/pjsip/pjproject.git")
> - (commit "3e7b75cb2e482baee58c1991bd2fa4fb06774e0d")))
> + (commit version)))
> --8<---------------cut here---------------end--------------->8---
>
> With this commit, neither pjproject nor pjproject-jami build for
> me. Could you check why?
>
> Thanks,
>
> Mathieu

Are you between my commits? My commits are effect of over 6 months of
work and experimenting. The patches for pjproject are from jami source
tarball and change over time. Patching pjproject will only work with if
both version of Jami and pjproject are compliant.
The commit updating Jami should go before pjproject-jami update, then
it should work.
Anyway, everything works on my machine now.


Jan Wielkiewicz
M
M
Mathieu Othacehe wrote on 3 May 2020 09:34
Re: [bug#40677] [PATCH V3 00/15] Jami patches.
(name . Jan)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87k11tzd2d.fsf@gmail.com
Hello,

Toggle quote (4 lines)
> To be honest, I don't know why this happens. I was too focused on
> correcting the commit messages I forgot about testing. Let me test it
> now.

I think the problem is that when starting "jami-gnome", the "dring"
daemon is started by D-Bus. On a foreign distro, this cannot work. So I
tried to start dring manually[1] but I have the following error:

Toggle snippet (31 lines)
/gnu/store/chb71qh7dprrdgn7d3g08d2pbii57v2v-libring-20200401.1.6f090de/lib/ring/dring -cdp
Jami Daemon 9.1.0, by Savoir-faire Linux 2004-2019
https://jami.net/
[Video support enabled]

[1588491116.175|28401|ringbufferpool.cpp:118 ] Ringbuffer created with id 'audiolayer_id'
[1588491116.411|28401|video_device.h :129 ] Default video settings: 800x480, 30 FPS
[1588491116.529|28401|video_device.h :129 ] Default video settings: 960x540, 30 FPS
[1588491116.532|28401|manager.cpp :676 ] Not initialized
[1588491116.532|28401|manager.cpp :676 ] Not initialized
09:31:56.533 os_core_unix.c !pjlib 2.10 for POSIX initialized
[1588491116.534|28401|manager.cpp :738 ] Using PJSIP version 2.10 for x86_64-unknown-linux-gnu
[1588491116.534|28401|manager.cpp :739 ] Using GnuTLS version 3.6.13
[1588491116.534|28401|manager.cpp :740 ] Using OpenDHT version 2.0.0
[1588491116.535|28401|manager.cpp :751 ] Configuration file path: /home/mathieu/.config/jami/dring.yml
[1588491116.537|28401|manager.cpp :2738 ] invalid node; first invalid key: "preferences": Preferences node unserialize error:
[1588491116.538|28401|manager.cpp :452 ] Errors while parsing /home/mathieu/.config/jami/dring.yml
[1588491116.538|28401|manager.cpp :777 ] Restoring last working configuration
[1588491116.540|28401|sipvoiplink.cpp :550 ] Using SIP nameserver: 127.0.0.53
[1588491116.540|28401|siptransport.cpp :188 ] SipTransportBroker@0x125c3d0
[1588491116.541|28401|sipvoiplink.cpp :641 ] SIPVoIPLink@0x1297410
[1588491116.541|28407|sip_utils.cpp :203 ] Registered thread 0x7f132bc5f4d0 (0x6EF1)
[1588491116.541|28401|manager.cpp :2738 ] invalid node; first invalid key: "preferences": Preferences node unserialize error:
[1588491116.541|28401|manager.cpp :452 ] Errors while parsing /home/mathieu/.config/jami/dring.yml
[1588491116.542|28401|sipvoiplink.cpp :646 ] ~SIPVoIPLink@0x1297410
[1588491116.542|28401|siptransport.cpp :193 ] ~SipTransportBroker@0x125c3d0
[1588491116.542|28401|siptransport.cpp :200 ] destroying SipTransportBroker@0x125c3d0
dring: ../src/pj/os_core_unix.c:1325: pj_mutex_unlock: Assertion `mutex->owner == pj_thread_this()' failed.
Aborted (core dumped)

Maybe we should fix it, wrapping jami binary, so that it also starts
this daemon?

WDYT?

Thanks,

Mathieu

J
(name . Mathieu Othacehe)(address . m.othacehe@gmail.com)(address . 40677@debbugs.gnu.org)
20200503163220.1dfb463e@kompiuter
On Sun, 03 May 2020 09:34:50 +0200
Mathieu Othacehe <m.othacehe@gmail.com> wrote:

Toggle quote (51 lines)
> Hello,
>
>
> I think the problem is that when starting "jami-gnome", the "dring"
> daemon is started by D-Bus. On a foreign distro, this cannot work. So
> I tried to start dring manually[1] but I have the following error:
>
> --8<---------------cut here---------------start------------->8---
> /gnu/store/chb71qh7dprrdgn7d3g08d2pbii57v2v-libring-20200401.1.6f090de/lib/ring/dring
> -cdp Jami Daemon 9.1.0, by Savoir-faire Linux 2004-2019
> https://jami.net/
> [Video support enabled]
>
> [1588491116.175|28401|ringbufferpool.cpp:118 ] Ringbuffer created
> with id 'audiolayer_id' [1588491116.411|28401|video_device.h :129
> ] Default video settings: 800x480, 30 FPS
> [1588491116.529|28401|video_device.h :129 ] Default video
> settings: 960x540, 30 FPS
> [1588491116.532|28401|manager.cpp :676 ] Not initialized
> [1588491116.532|28401|manager.cpp :676 ] Not initialized
> 09:31:56.533 os_core_unix.c !pjlib 2.10 for POSIX initialized
> [1588491116.534|28401|manager.cpp :738 ] Using PJSIP version
> 2.10 for x86_64-unknown-linux-gnu
> [1588491116.534|28401|manager.cpp :739 ] Using GnuTLS version
> 3.6.13 [1588491116.534|28401|manager.cpp :740 ] Using OpenDHT
> version 2.0.0 [1588491116.535|28401|manager.cpp :751 ]
> Configuration file path: /home/mathieu/.config/jami/dring.yml
> [1588491116.537|28401|manager.cpp :2738 ] invalid node; first
> invalid key: "preferences": Preferences node unserialize error:
> [1588491116.538|28401|manager.cpp :452 ] Errors while
> parsing /home/mathieu/.config/jami/dring.yml
> [1588491116.538|28401|manager.cpp :777 ] Restoring last
> working configuration [1588491116.540|28401|sipvoiplink.cpp :550 ]
> Using SIP nameserver: 127.0.0.53
> [1588491116.540|28401|siptransport.cpp :188 ]
> SipTransportBroker@0x125c3d0
> [1588491116.541|28401|sipvoiplink.cpp :641 ] SIPVoIPLink@0x1297410
> [1588491116.541|28407|sip_utils.cpp :203 ] Registered thread
> 0x7f132bc5f4d0 (0x6EF1) [1588491116.541|28401|manager.cpp :2738
> ] invalid node; first invalid key: "preferences": Preferences node
> unserialize error: [1588491116.541|28401|manager.cpp :452 ]
> Errors while parsing /home/mathieu/.config/jami/dring.yml
> [1588491116.542|28401|sipvoiplink.cpp :646 ]
> ~SIPVoIPLink@0x1297410 [1588491116.542|28401|siptransport.cpp :193
> ] ~SipTransportBroker@0x125c3d0
> [1588491116.542|28401|siptransport.cpp :200 ] destroying
> SipTransportBroker@0x125c3d0 dring: ../src/pj/os_core_unix.c:1325:
> pj_mutex_unlock: Assertion `mutex->owner == pj_thread_this()' failed.
> Aborted (core dumped) --8<---------------cut
> here---------------end--------------->8---

This error is strange. I get nothing like this on Devuan - Jami just
starts automatically as the system loads.

Toggle quote (3 lines)
> Maybe we should fix it, wrapping jami binary, so that it also starts
> this daemon?

I can try. Is it something similar to what we already have in jami
package - sqlite wrapper or should I just add dbus to propagated inputs?

Toggle quote (8 lines)
> WDYT?
>
> Thanks,
>
> Mathieu
>
> [1]:
> https://git.jami.net/savoirfairelinux/ring-project/wikis/technical/Build-instructions
J
Re: [bug#40677] [PATCH V3 07/15] gnu: Add ffmpeg-jami.
(name . Mathieu Othacehe)(address . m.othacehe@gmail.com)(address . 40677@debbugs.gnu.org)
20200504202631.1ebaf90b@kompiuter
On Sat, 02 May 2020 11:36:30 +0200
Mathieu Othacehe <m.othacehe@gmail.com> wrote:

Toggle quote (10 lines)
> Ok, last one! As discussed before I'm not very comfortable with this
> very long list of configuration options.
>
> Are the ffmpeg configuration options needed by Jami described
> somewhere?
>
> Thanks,
>
> Mathieu

So I compared the list of flags turned off by default with ffmpeg
package currently in guix with ffmpeg-jami package and I managed to
shorten the list from 107 to 95. It isn't worth the effort.

I tried looking for the flags needed in the documentation, but I
couldn't find anything. There's only the rules.mak file in Jami source
code and they use these flags.

There are only few comments:
#disable everything
#enable muxers/demuxers
#enable parsers
#encoders/decoders
#decoders for ringtones and audio streaming
#encoders/decoders for images
#filters
#platform specific options
#Android Linux
#Desktop Linux
...

That's all. I see no point in comparing these flags every release just
for 12 of them I can inherit from the default ffmpeg package.

I prefer just copy the list from rules.mak. What I could do is defining
a separate "ffmpeg-configure-flags" variable somewhere near ffmpeg-jami
and use it, instead of having the bloated list inside the package
definition (if that's even possible).
Correct me if I'm wrong or suggest a reasonable solution, because I have
no idea how to deal with it right now.


Jan Wielkiewicz
M
M
Mathieu Othacehe wrote on 5 May 2020 09:18
(name . Jan)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87d07ietnh.fsf@gmail.com
Hello Jan,

Toggle quote (4 lines)
> So I compared the list of flags turned off by default with ffmpeg
> package currently in guix with ffmpeg-jami package and I managed to
> shorten the list from 107 to 95. It isn't worth the effort.

Oh that's a disappointment indeed. Among those 95 flags I'm pretty sure
most of them match the default, but going through all of them feels like
a burden.

Toggle quote (7 lines)
> I prefer just copy the list from rules.mak. What I could do is defining
> a separate "ffmpeg-configure-flags" variable somewhere near ffmpeg-jami
> and use it, instead of having the bloated list inside the package
> definition (if that's even possible).
> Correct me if I'm wrong or suggest a reasonable solution, because I have
> no idea how to deal with it right now.

Ok, this seems fine. Don't hesitate to add a link to a Web view of the
rules.mak file, so that it's clear where those flags come from.

Another remark on this part,

Toggle quote (5 lines)
> "--enable-encoder=h264_nvenc"
> "--enable-encoder=hevc_nvenc"))
> ((string?= (%current-system) "aarch64-linux") '("--arch=aarch64"))
> ((string?= (%current-system) "arm64-linux") '("--arch=aarch64"))

"arm64-linux" is not a valid system, you can remove it.

Toggle quote (2 lines)
> ((string?= (%current-system) "arm") '("--arch=arm"))

I think the right system here is "armhf-linux". However, you would also
need to support cross-compilation when %current-target-system is set. In
that case, the value looks like "aarch64-linux-gnu" and
"arm-linux-gnueabihf".

If you add support for those plaforms you need to test it by building
ffmpeg-jami with "--system" and "--target" flags. As this is a complex
package with a lot of dependencies (probably failing to cross-compile),
it would be fine with me if you just drop support for other
systems/targets.

Thanks,

Mathieu
J
(name . Mathieu Othacehe)(address . m.othacehe@gmail.com)(address . 40677@debbugs.gnu.org)
20200507022230.71ed5ea6@kompiuter
Hi again!

On Tue, 05 May 2020 09:18:58 +0200
Mathieu Othacehe <m.othacehe@gmail.com> wrote:

Toggle quote (8 lines)
> Hello Jan,
>
> Oh that's a disappointment indeed. Among those 95 flags I'm pretty
> sure most of them match the default, but going through all of them
> feels like a burden.
>
> Ok, this seems fine. Don't hesitate to add a link to a Web view of the
> rules.mak file, so that it's clear where those flags come from.
Done.

Toggle quote (9 lines)
> Another remark on this part,
>
> > "--enable-encoder=h264_nvenc"
> > "--enable-encoder=hevc_nvenc"))
> > ((string?= (%current-system) "aarch64-linux")
> > '("--arch=aarch64")) ((string?= (%current-system) "arm64-linux")
> > '("--arch=aarch64"))
>
> "arm64-linux" is not a valid system, you can remove it.
Done.

Toggle quote (7 lines)
> > ((string?= (%current-system) "arm") '("--arch=arm"))
>
> I think the right system here is "armhf-linux". However, you would
> also need to support cross-compilation when %current-target-system is
> set. In that case, the value looks like "aarch64-linux-gnu" and
> "arm-linux-gnueabihf".

I added "%current-target-system" to support cross-compilation.
Also fixed the drunk "string?=" uses - there's "string=?" actually and
I replaced it with "string-prefix?".

What's the difference between "arm-linux-gnueabihf" and
"aarch64-linux-gnu"? Are they synonyms?
Should it be:
if "arm-linux-gnueabihf" or "aarch64-linux-gnu"
use "--arch=armhf-linux"?

Toggle quote (6 lines)
> If you add support for those plaforms you need to test it by building
> ffmpeg-jami with "--system" and "--target" flags. As this is a complex
> package with a lot of dependencies (probably failing to
> cross-compile), it would be fine with me if you just drop support for
> other systems/targets.

I want to try anyway. Jami supports Raspbian, so it is worth trying.

Toggle quote (5 lines)
> Thanks,
>
> Mathieu


Jan Wielkiewicz
J
(name . Mathieu Othacehe)(address . m.othacehe@gmail.com)(address . 40677@debbugs.gnu.org)
20200507220355.5de8f9e0@kompiuter
Hi,

I tried fixing cross-compilation but there are several problems:

- dav1d fails, because "meson doesn't support cross-compilation"
- perl fails during installation and if I checked correctly, guix
doesn't have support for perl on armhf or aarch64
- glib fails, because "meson doesn't support cross-compilation"
And other possible problems I didn't get to. With dav1d I could just
disable it, because it's just one codec. I also disabled perl, but
disabling glib won't work.

This isn't a good advertisement for this meson build system :P
Should I proudly drop all the support for cross compilation?



Jan Wielkiewicz
M
M
Mathieu Othacehe wrote on 8 May 2020 10:35
(name . Jan)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87h7wqlt7w.fsf@gmail.com
Hello Jan,

Toggle quote (11 lines)
> - dav1d fails, because "meson doesn't support cross-compilation"
> - perl fails during installation and if I checked correctly, guix
> doesn't have support for perl on armhf or aarch64
> - glib fails, because "meson doesn't support cross-compilation"
> And other possible problems I didn't get to. With dav1d I could just
> disable it, because it's just one codec. I also disabled perl, but
> disabling glib won't work.
>
> This isn't a good advertisement for this meson build system :P
> Should I proudly drop all the support for cross compilation?

On core-updates the cross-compilation support is a bit better (perl at
least should be fixed), but it won't get you much further. So yes you
can drop cross compilation. You can still check that native compilation
for armv7 and aarch64 works with "--system armhf-linux" and "--system
aarch64-linux". Note that you will need to setup binfmt.

Thanks,

Mathieu
M
M
Mathieu Othacehe wrote on 8 May 2020 10:43
(name . Jan)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87d07elsui.fsf@gmail.com
Hey,

Toggle quote (3 lines)
> What's the difference between "arm-linux-gnueabihf" and
> "aarch64-linux-gnu"? Are they synonyms?

No, "arm-linux-gnueabihf" is for ARMv7 systems with hardware floating
point support. "aarch64-linux-gnu" is for ARMv8 processors. This is
quite confusing!

Mathieu
J
(name . Mathieu Othacehe)(address . m.othacehe@gmail.com)(address . 40677@debbugs.gnu.org)
20200513165729.518bd858@kompiuter
Hi,

I had a success building ffmpeg-jami on both aarch64-linux and
armhf-linux (through qemu). I have one question regarding the naming
convention of variables. Why do some variables start with "%"? I
couldn't find any explanation in the documentation nor in the source
code. Say I want to add a variable called
"ffmpeg-linux-configure-flags". Should I start it with "%" -
"%fmpeg-linux-configure-flags" or not?


Jan Wielkiewicz
M
M
Mathieu Othacehe wrote on 13 May 2020 17:51
(name . Jan)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
874ksj4yv0.fsf@gmail.com
Hello Jan,

Toggle quote (8 lines)
> I had a success building ffmpeg-jami on both aarch64-linux and
> armhf-linux (through qemu). I have one question regarding the naming
> convention of variables. Why do some variables start with "%"? I
> couldn't find any explanation in the documentation nor in the source
> code. Say I want to add a variable called
> "ffmpeg-linux-configure-flags". Should I start it with "%" -
> "%fmpeg-linux-configure-flags" or not?

Good job! Variables prefixed by '%' often denote parameters (see:

I guess something like:

Toggle snippet (5 lines)
(define %fmpeg-linux-configure-flags
'("--flag-1"
"--flag-2"))

would be fine. But using "ffmpeg-linux-configure-flags" would also be
correct.

Thanks,

Mathieu
J
J
Jan Wielkiewicz wrote on 13 May 2020 20:12
[PATCH v4] gnu: Add ffmpeg-jami.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200513181234.27548-1-tona_kosmicznego_smiecia@interia.pl
This package is needed, because Jami uses a modified version
of ffmpeg, which provides GPU hardware acceleration, automatical
adapting of bitrate and extra codecs. Because of the configure flags
list being long, it is better to keep them separated in variables,
instead of littering the package definition.

* gnu/packages/jami.scm (ffmpeg-jami, %ffmpeg-default-configure-flags,
%ffmpeg-linux-configure-flags, %ffmpeg-linux-x86-configure-flags):
New variables.
(ffmpeg-compose-configure-flags): New procedure.
(libring)[inputs]: Use ffmpeg-jami instead of ffmpeg.
---
gnu/packages/jami.scm | 255 +++++++++++++++++++++++++++++++++++++++++-
1 file changed, 253 insertions(+), 2 deletions(-)

Toggle diff (282 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index dda787b3cd..2cf2f3aa10 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -59,7 +59,8 @@
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix packages)
- #:use-module (guix utils))
+ #:use-module (guix utils)
+ #:use-module (srfi srfi-1))
(define %jami-version "20200401.1.6f090de")
@@ -186,6 +187,256 @@
"selftest: pjlib-test pjlib-util-test pjmedia-test"))
#t)))))))
+;; 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 keep it as close to the official Jami package as
+;; possible to provide all the codecs and extra features that are
+;; the effect of patching ffmpeg.
+;;
+;; Web view of the file:
+;;https://review.jami.net/plugins/gitiles/ring-daemon/+/refs/heads/master/contrib/src/ffmpeg/rules.mak
+(define %ffmpeg-default-configure-flags
+ '(;; disable everything
+ "--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"
+ ;; enable muxers/demuxers
+ "--disable-demuxers"
+ "--disable-muxers"
+ "--enable-muxer=rtp"
+ "--enable-muxer=g722"
+ "--enable-muxer=h263"
+ "--enable-muxer=h264"
+ "--enable-muxer=hevc"
+ "--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"
+ "--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"
+ ;; enable parsers
+ "--enable-parser=h263"
+ "--enable-parser=h264"
+ "--enable-parser=hevc"
+ "--enable-parser=mpeg4video"
+ "--enable-parser=vp8"
+ "--enable-parser=vp9"
+ "--enable-parser=opus"
+ ;; encoders/decoders
+ "--enable-encoder=adpcm_g722"
+ "--enable-decoder=adpcm_g722"
+ "--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"
+ ;; decoders for ringtones and audio streaming
+ "--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"
+ ;; encoders/decoders for images
+ "--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"
+ ;; filters
+ "--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"))
+
+;; ffnvcodec is not supported on ARM then we enable it here for i386 and x86_64
+(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)
+ (let* ((flags %ffmpeg-default-configure-flags)
+ (append-flags (lambda (l)
+ (set! flags (append flags l))))
+ (system=? (lambda (s)
+ (string-prefix? %current-system s))))
+ (if (string-contains %current-system "linux")
+ (begin (append-flags %ffmpeg-linux-configure-flags)
+ (cond ((or (system=? "i686")
+ (system=? "x86_64"))
+ (append-flags %ffmpeg-linux-x86-configure-flags))
+ ((system=? "x86_64")
+ (append-flags '("--arch=x86_64")))
+ ((system=? "aarch64")
+ (append-flags '("--arch=aarch64")))
+ ((system=? "armhf")
+ (append-flags '("--arch=armhf"))))))
+ flags))
+
+(define-public ffmpeg-jami
+ (package
+ (inherit ffmpeg)
+ (name "ffmpeg-jami")
+ (native-inputs
+ `(("sfl-patches" ,(jami-source))
+ ("libiconv" ,libiconv)
+ ,@(package-native-inputs ffmpeg)))
+ (supported-systems '("x86_64-linux" "i686-linux"
+ "aarch64-linux" "armhf-linux"))
+ (arguments
+ (append
+ '(#:tests? #f)
+ (substitute-keyword-arguments (package-arguments ffmpeg)
+ ((#:configure-flags '())
+ (ffmpeg-compose-configure-flags))
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (add-after 'unpack 'make-git-checkout-writable
+ (lambda _
+ (for-each make-file-writable (find-files "."))
+ #t))
+ (add-after 'unpack 'apply-patches
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((jami-apply-dependency-patches ,jami-apply-dependency-patches))
+ ;; These patches come from:
+ ;; "ring-project/daemon/contrib/src/ffmpeg/rules.mak".
+ (jami-apply-dependency-patches #:inputs inputs
+ #:dep-name "ffmpeg"
+ #:patches
+ '("remove-mjpeg-log"
+ "change-RTCP-ratio"
+ "rtp_ext_abs_send_time"))
+ #t))))))))))
+
(define-public libring
(package
(name "libring")
@@ -197,7 +448,7 @@
("boost" ,boost)
("dbus-c++" ,dbus-c++)
("eudev" ,eudev)
- ("ffmpeg" ,ffmpeg)
+ ("ffmpeg" ,ffmpeg-jami)
("flac" ,flac)
("gmp" ,gmp)
("gsm" ,gsm)
--
2.26.2
M
M
Mathieu Othacehe wrote on 14 May 2020 09:05
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87zhab2e00.fsf@gnu.org
Hello Jan,

Toggle quote (6 lines)
> +;; This procedure composes the configure flags list for ffmpeg-jami.
> +(define (ffmpeg-compose-configure-flags)
> + (let* ((flags %ffmpeg-default-configure-flags)
> + (append-flags (lambda (l)
> + (set! flags (append flags l))))

It's better to avoid using "set!".

Toggle quote (3 lines)
> + (system=? (lambda (s)
> + (string-prefix? %current-system s))))

This should be (%current-system), plus I think arguments should be
transposed.

Toggle quote (8 lines)
> + (if (string-contains %current-system "linux")
> + (begin (append-flags %ffmpeg-linux-configure-flags)
> + (cond ((or (system=? "i686")
> + (system=? "x86_64"))
> + (append-flags %ffmpeg-linux-x86-configure-flags))
> + ((system=? "x86_64")
> + (append-flags '("--arch=x86_64")))

If the first branch of the cond succeeds, we will never add this flag.

Plus, it seems than ffmpeg is able to detect the running system. So I
would suggest to do this:

Toggle snippet (15 lines)
;; 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
;; Add Linux specific flags.
,@(if (string-contains %current-system "linux")
%ffmpeg-linux-configure-flags
'())
,@(if (or (system=? "i686") (system=? "x86_64"))
%ffmpeg-linux-x86-configure-flags
'())))

What do you think?

Thanks,

Mathieu
J
(name . Mathieu Othacehe)(address . othacehe@gnu.org)(address . 40677@debbugs.gnu.org)
20200514144324.346f0bc5@kompiuter
On Thu, 14 May 2020 09:05:03 +0200
Mathieu Othacehe <othacehe@gnu.org> wrote:

Toggle quote (5 lines)
> Hello Jan,
>
>
> It's better to avoid using "set!".
>
What should I use instead?

Toggle quote (5 lines)
> > + (system=? (lambda (s)
> > + (string-prefix? %current-system s))))
>
> This should be (%current-system), plus I think arguments should be
> transposed.
Okay

Toggle quote (10 lines)
> > + (if (string-contains %current-system "linux")
> > + (begin (append-flags %ffmpeg-linux-configure-flags)
> > + (cond ((or (system=? "i686")
> > + (system=? "x86_64"))
> > + (append-flags
> > %ffmpeg-linux-x86-configure-flags))
> > + ((system=? "x86_64")
> > + (append-flags '("--arch=x86_64")))
>
> If the first branch of the cond succeeds, we will never add this flag.
That's what happens when you code late in night :)
I should sit down with a cup of coffee and read Guile's manual seriously
this time. Sorry for making your code review harder.

Toggle quote (21 lines)
> Plus, it seems than ffmpeg is able to detect the running system. So I
> would suggest to do this:
>
> --8<---------------cut here---------------start------------->8---
> ;; 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
> ;; Add Linux specific flags.
> ,@(if (string-contains %current-system "linux")
> %ffmpeg-linux-configure-flags
> '())
> ,@(if (or (system=? "i686") (system=? "x86_64"))
> %ffmpeg-linux-x86-configure-flags
> '())))
> --8<---------------cut here---------------end--------------->8---
>
> What do you think?

I think %ffmpeg-linux-x86-configure-flags should be added only if
linux is present, not just when on i686 or x86_64. I called it
"%ffmpeg-linux-x86...", because it was inside of the "ifdef HAVE_LINUX"
condition. But there was also a comment saying "Desktop Linux", which
as always means very little. I'm not sure if it really requires the
Linux kernel there or what.

What about the output of the procedure? Is it okay for the list to be
not proper? It will look something like this:
((flag1 flag2 ... flagN) (flag1 flag2 ... flagN))
Is it okay because everything is treated as a pair in a recursive
manner?

Other than this, it will be good.


Toggle quote (3 lines)
> Thanks,
>
> Mathieu
J
J
Jan Wielkiewicz wrote on 15 May 2020 02:47
[PATCH v5] gnu: Add ffmpeg-jami.
(address . 40677@debbugs.gnu.org)(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)
20200515004705.11286-1-tona_kosmicznego_smiecia@interia.pl
This package is needed, because Jami uses a modified version
of ffmpeg, which provides GPU hardware acceleration, automatical
adapting of bitrate and extra codecs. Because of the configure flags
list being long, it is better to keep them separated in variables,
instead of littering the package definition.

* gnu/packages/jami.scm (ffmpeg-jami, %ffmpeg-default-configure-flags,
%ffmpeg-linux-configure-flags, %ffmpeg-linux-x86-configure-flags):
New variables.
(ffmpeg-compose-configure-flags): New procedure.
(libring)[inputs]: Use ffmpeg-jami instead of ffmpeg.
---
gnu/packages/jami.scm | 248 +++++++++++++++++++++++++++++++++++++++++-
1 file changed, 246 insertions(+), 2 deletions(-)

Toggle diff (275 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index dda787b3cd..dea5e7d3b8 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -59,7 +59,8 @@
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix packages)
- #:use-module (guix utils))
+ #:use-module (guix utils)
+ #:use-module (srfi srfi-1))
(define %jami-version "20200401.1.6f090de")
@@ -186,6 +187,249 @@
"selftest: pjlib-test pjlib-util-test pjmedia-test"))
#t)))))))
+;; 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 keep it as close to the official Jami package as
+;; possible to provide all the codecs and extra features that are
+;; the effect of patching ffmpeg.
+;;
+;; Web view of the file:
+;;https://review.jami.net/plugins/gitiles/ring-daemon/+/refs/heads/master/contrib/src/ffmpeg/rules.mak
+(define %ffmpeg-default-configure-flags
+ '(;; disable everything
+ "--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"
+ ;; enable muxers/demuxers
+ "--disable-demuxers"
+ "--disable-muxers"
+ "--enable-muxer=rtp"
+ "--enable-muxer=g722"
+ "--enable-muxer=h263"
+ "--enable-muxer=h264"
+ "--enable-muxer=hevc"
+ "--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"
+ "--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"
+ ;; enable parsers
+ "--enable-parser=h263"
+ "--enable-parser=h264"
+ "--enable-parser=hevc"
+ "--enable-parser=mpeg4video"
+ "--enable-parser=vp8"
+ "--enable-parser=vp9"
+ "--enable-parser=opus"
+ ;; encoders/decoders
+ "--enable-encoder=adpcm_g722"
+ "--enable-decoder=adpcm_g722"
+ "--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"
+ ;; decoders for ringtones and audio streaming
+ "--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"
+ ;; encoders/decoders for images
+ "--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"
+ ;; filters
+ "--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"))
+
+;; ffnvcodec is not supported on ARM then we enable it here for i386 and x86_64
+(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
+ (package
+ (inherit ffmpeg)
+ (name "ffmpeg-jami")
+ (native-inputs
+ `(("sfl-patches" ,(jami-source))
+ ("libiconv" ,libiconv)
+ ,@(package-native-inputs ffmpeg)))
+ (supported-systems '("x86_64-linux" "i686-linux"
+ "aarch64-linux" "armhf-linux"))
+ (arguments
+ (append
+ '(#:tests? #f)
+ (substitute-keyword-arguments (package-arguments ffmpeg)
+ ((#:configure-flags '())
+ (ffmpeg-compose-configure-flags))
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (add-after 'unpack 'make-git-checkout-writable
+ (lambda _
+ (for-each make-file-writable (find-files "."))
+ #t))
+ (add-after 'unpack 'apply-patches
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((jami-apply-dependency-patches ,jami-apply-dependency-patches))
+ ;; These patches come from:
+ ;; "ring-project/daemon/contrib/src/ffmpeg/rules.mak".
+ (jami-apply-dependency-patches #:inputs inputs
+ #:dep-name "ffmpeg"
+ #:patches
+ '("remove-mjpeg-log"
+ "change-RTCP-ratio"
+ "rtp_ext_abs_send_time"))
+ #t))))))))))
+
(define-public libring
(package
(name "libring")
@@ -197,7 +441,7 @@
("boost" ,boost)
("dbus-c++" ,dbus-c++)
("eudev" ,eudev)
- ("ffmpeg" ,ffmpeg)
+ ("ffmpeg" ,ffmpeg-jami)
("flac" ,flac)
("gmp" ,gmp)
("gsm" ,gsm)
--
2.26.2
M
M
Mathieu Othacehe wrote on 15 May 2020 08:59
Re: [bug#40677] [PATCH v4] gnu: Add ffmpeg-jami.
(name . Jan)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677@debbugs.gnu.org)
87r1vlwun7.fsf@gnu.org
Hey,

Toggle quote (2 lines)
> What should I use instead?

Here you can create the list statically using quasi-quotes.

Toggle quote (5 lines)
>> If the first branch of the cond succeeds, we will never add this flag.
> That's what happens when you code late in night :)
> I should sit down with a cup of coffee and read Guile's manual seriously
> this time. Sorry for making your code review harder.

No worries.

Toggle quote (8 lines)
>
> I think %ffmpeg-linux-x86-configure-flags should be added only if
> linux is present, not just when on i686 or x86_64. I called it
> "%ffmpeg-linux-x86...", because it was inside of the "ifdef HAVE_LINUX"
> condition. But there was also a comment saying "Desktop Linux", which
> as always means very little. I'm not sure if it really requires the
> Linux kernel there or what.

Yes you are right.

Toggle quote (6 lines)
> What about the output of the procedure? Is it okay for the list to be
> not proper? It will look something like this:
> ((flag1 flag2 ... flagN) (flag1 flag2 ... flagN))
> Is it okay because everything is treated as a pair in a recursive
> manner?

M
M
Mathieu Othacehe wrote on 15 May 2020 09:11
Re: [bug#40677] [PATCH v5] gnu: Add ffmpeg-jami.
(name . Jan Wielkiewicz)(address . tona_kosmicznego_smiecia@interia.pl)(address . 40677-done@debbugs.gnu.org)
87mu69wu3x.fsf@gnu.org
Pushed with minor modifications.

Thanks for your work,

Mathieu

Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl> writes:

Toggle quote (288 lines)
> This package is needed, because Jami uses a modified version
> of ffmpeg, which provides GPU hardware acceleration, automatical
> adapting of bitrate and extra codecs. Because of the configure flags
> list being long, it is better to keep them separated in variables,
> instead of littering the package definition.
>
> * gnu/packages/jami.scm (ffmpeg-jami, %ffmpeg-default-configure-flags,
> %ffmpeg-linux-configure-flags, %ffmpeg-linux-x86-configure-flags):
> New variables.
> (ffmpeg-compose-configure-flags): New procedure.
> (libring)[inputs]: Use ffmpeg-jami instead of ffmpeg.
> ---
> gnu/packages/jami.scm | 248 +++++++++++++++++++++++++++++++++++++++++-
> 1 file changed, 246 insertions(+), 2 deletions(-)
>
> diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
> index dda787b3cd..dea5e7d3b8 100644
> --- a/gnu/packages/jami.scm
> +++ b/gnu/packages/jami.scm
> @@ -59,7 +59,8 @@
> #:use-module (guix download)
> #:use-module (guix git-download)
> #:use-module (guix packages)
> - #:use-module (guix utils))
> + #:use-module (guix utils)
> + #:use-module (srfi srfi-1))
>
> (define %jami-version "20200401.1.6f090de")
>
> @@ -186,6 +187,249 @@
> "selftest: pjlib-test pjlib-util-test pjmedia-test"))
> #t)))))))
>
> +;; 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 keep it as close to the official Jami package as
> +;; possible to provide all the codecs and extra features that are
> +;; the effect of patching ffmpeg.
> +;;
> +;; Web view of the file:
> +;;https://review.jami.net/plugins/gitiles/ring-daemon/+/refs/heads/master/contrib/src/ffmpeg/rules.mak
> +(define %ffmpeg-default-configure-flags
> + '(;; disable everything
> + "--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"
> + ;; enable muxers/demuxers
> + "--disable-demuxers"
> + "--disable-muxers"
> + "--enable-muxer=rtp"
> + "--enable-muxer=g722"
> + "--enable-muxer=h263"
> + "--enable-muxer=h264"
> + "--enable-muxer=hevc"
> + "--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"
> + "--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"
> + ;; enable parsers
> + "--enable-parser=h263"
> + "--enable-parser=h264"
> + "--enable-parser=hevc"
> + "--enable-parser=mpeg4video"
> + "--enable-parser=vp8"
> + "--enable-parser=vp9"
> + "--enable-parser=opus"
> + ;; encoders/decoders
> + "--enable-encoder=adpcm_g722"
> + "--enable-decoder=adpcm_g722"
> + "--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"
> + ;; decoders for ringtones and audio streaming
> + "--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"
> + ;; encoders/decoders for images
> + "--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"
> + ;; filters
> + "--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"))
> +
> +;; ffnvcodec is not supported on ARM then we enable it here for i386 and x86_64
> +(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
> + (package
> + (inherit ffmpeg)
> + (name "ffmpeg-jami")
> + (native-inputs
> + `(("sfl-patches" ,(jami-source))
> + ("libiconv" ,libiconv)
> + ,@(package-native-inputs ffmpeg)))
> + (supported-systems '("x86_64-linux" "i686-linux"
> + "aarch64-linux" "armhf-linux"))
> + (arguments
> + (append
> + '(#:tests? #f)
> + (substitute-keyword-arguments (package-arguments ffmpeg)
> + ((#:configure-flags '())
> + (ffmpeg-compose-configure-flags))
> + ((#:phases phases)
> + `(modify-phases ,phases
> + (add-after 'unpack 'make-git-checkout-writable
> + (lambda _
> + (for-each make-file-writable (find-files "."))
> + #t))
> + (add-after 'unpack 'apply-patches
> + (lambda* (#:key inputs #:allow-other-keys)
> + (let ((jami-apply-dependency-patches ,jami-apply-dependency-patches))
> + ;; These patches come from:
> + ;; "ring-project/daemon/contrib/src/ffmpeg/rules.mak".
> + (jami-apply-dependency-patches #:inputs inputs
> + #:dep-name "ffmpeg"
> + #:patches
> + '("remove-mjpeg-log"
> + "change-RTCP-ratio"
> + "rtp_ext_abs_send_time"))
> + #t))))))))))
> +
> (define-public libring
> (package
> (name "libring")
> @@ -197,7 +441,7 @@
> ("boost" ,boost)
> ("dbus-c++" ,dbus-c++)
> ("eudev" ,eudev)
> - ("ffmpeg" ,ffmpeg)
> + ("ffmpeg" ,ffmpeg-jami)
> ("flac" ,flac)
> ("gmp" ,gmp)
> ("gsm" ,gsm)
Closed
?