From cc05a3889c77c1dbbb92322bb31e1357c5b2b7f5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Blin?=
 <sebastien.blin@savoirfairelinux.com>
Date: Thu, 24 Feb 2022 10:58:57 -0500
Subject: [PATCH] qt: enable ffmpeg backend for Qt Multimedia

Change-Id: I34fc48ac880a6673579f88b700b0baa5bd8cd585
---
 Jenkinsfile                             |  2 +-
 docker/Dockerfile_fedora_33             |  4 ++++
 docker/Dockerfile_fedora_34             |  4 ++++
 docker/Dockerfile_fedora_35             |  4 ++++
 docker/Dockerfile_opensuse-leap_15.3    |  1 +
 packaging/rules/rpm/jami-daemon.spec    |  2 --
 packaging/rules/rpm/jami-gnome.spec     |  1 -
 packaging/rules/rpm/jami-libclient.spec |  2 --
 packaging/rules/rpm/jami-libqt.spec     | 18 ++++++++++++++++--
 packaging/rules/rpm/jami-qt.spec        |  2 --
 scripts/build-package-rpm.sh            | 13 +++++++------
 11 files changed, 37 insertions(+), 16 deletions(-)

diff --git a/Jenkinsfile b/Jenkinsfile
index 888bb7a9..5db8a85b 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -1,4 +1,4 @@
-// Copyright (C) 2021 Savoir-faire Linux Inc.
+// Copyright (C) 2021-2022 Savoir-faire Linux Inc.
 //
 // Author: Maxim Cournoyer <maxim.cournoyer@savoirfairelinux.com>
 //
diff --git a/docker/Dockerfile_fedora_33 b/docker/Dockerfile_fedora_33
index 83c4080c..03a641bd 100644
--- a/docker/Dockerfile_fedora_33
+++ b/docker/Dockerfile_fedora_33
@@ -75,6 +75,10 @@ RUN dnf install -y \
         nodejs \
         bison \
         flex \
+        gstreamer1 gstreamer1-devel \
+        gstreamer1-plugins-base-devel \
+        gstreamer1-plugins-good \
+        gstreamer1-plugins-bad-free-devel \
         nss-devel \
         libxcb* \
         libxkb* \
diff --git a/docker/Dockerfile_fedora_34 b/docker/Dockerfile_fedora_34
index f0587d14..316834af 100644
--- a/docker/Dockerfile_fedora_34
+++ b/docker/Dockerfile_fedora_34
@@ -75,6 +75,10 @@ RUN dnf install -y \
         llvm-devel \
         nodejs \
         flex \
+        gstreamer1 gstreamer1-devel \
+        gstreamer1-plugins-base-devel \
+        gstreamer1-plugins-good \
+        gstreamer1-plugins-bad-free-devel \
         nss-devel \
         libxcb* \
         libxkb* \
diff --git a/docker/Dockerfile_fedora_35 b/docker/Dockerfile_fedora_35
index 1d0e9d73..f22812e5 100644
--- a/docker/Dockerfile_fedora_35
+++ b/docker/Dockerfile_fedora_35
@@ -75,6 +75,10 @@ RUN dnf install -y \
         llvm-devel \
         nodejs \
         flex \
+        gstreamer1 gstreamer1-devel \
+        gstreamer1-plugins-base-devel \
+        gstreamer1-plugins-good \
+        gstreamer1-plugins-bad-free-devel \
         nss-devel \
         libxcb* \
         libxkb* \
diff --git a/docker/Dockerfile_opensuse-leap_15.3 b/docker/Dockerfile_opensuse-leap_15.3
index c8e0d267..03c2586b 100644
--- a/docker/Dockerfile_opensuse-leap_15.3
+++ b/docker/Dockerfile_opensuse-leap_15.3
@@ -66,6 +66,7 @@ RUN zypper --non-interactive install -y \
         gperf \
         bison \
         flex \
+        ffmpeg ffmpeg-devel \
         nodejs12 \
         mozilla-nss-devel \
         python-xml \
diff --git a/packaging/rules/rpm/jami-daemon.spec b/packaging/rules/rpm/jami-daemon.spec
index 1e92ae2a..f28fd2b0 100644
--- a/packaging/rules/rpm/jami-daemon.spec
+++ b/packaging/rules/rpm/jami-daemon.spec
@@ -79,14 +79,12 @@ cd %{_builddir}/jami-project/daemon/contrib/native && \
     make fetch && \
     make %{_smp_mflags} V=1 && \
     make %{_smp_mflags} V=1 .ffmpeg
-
 # Configure the daemon.
 cd %{_builddir}/jami-project/daemon && \
     ./autogen.sh && \
     ./configure \
         --prefix=%{_prefix} \
         --libdir=%{_libdir}
-
 # Build the daemon.
 make -C %{_builddir}/jami-project/daemon %{_smp_mflags} V=1
 pod2man %{_builddir}/jami-project/daemon/man/jamid.pod \
diff --git a/packaging/rules/rpm/jami-gnome.spec b/packaging/rules/rpm/jami-gnome.spec
index 62bd9079..b7b3f8c1 100644
--- a/packaging/rules/rpm/jami-gnome.spec
+++ b/packaging/rules/rpm/jami-gnome.spec
@@ -48,7 +48,6 @@ cd %{_builddir}/jami-project/client-gnome && \
           -DCMAKE_BUILD_TYPE=Debug \
           -DGSETTINGS_LOCALCOMPILE=OFF \
           ..
-
 make -C %{_builddir}/jami-project/client-gnome/build \
     LDFLAGS="-lpthread" %{_smp_mflags} V=1
 
diff --git a/packaging/rules/rpm/jami-libclient.spec b/packaging/rules/rpm/jami-libclient.spec
index 3ba79794..5826c10e 100644
--- a/packaging/rules/rpm/jami-libclient.spec
+++ b/packaging/rules/rpm/jami-libclient.spec
@@ -32,7 +32,6 @@ users.
 %setup -n jami-project
 
 %build
-
 # Qt-related variables
 cd %{_builddir}/jami-project/lrc && \
     mkdir build && cd build && \
@@ -42,7 +41,6 @@ cd %{_builddir}/jami-project/lrc && \
           -DCMAKE_INSTALL_LIBDIR=%{_libdir} \
           -DCMAKE_BUILD_TYPE=Release \
           ..
-
 make -C %{_builddir}/jami-project/lrc/build %{_smp_mflags} V=1
 
 %install
diff --git a/packaging/rules/rpm/jami-libqt.spec b/packaging/rules/rpm/jami-libqt.spec
index 717248e4..a66a5bac 100644
--- a/packaging/rules/rpm/jami-libqt.spec
+++ b/packaging/rules/rpm/jami-libqt.spec
@@ -1,6 +1,6 @@
 %define name        jami-libqt
 %define version     RELEASE_VERSION
-%define release     0
+%define release     2
 
 # qtwebengine (aka chromium) takes a ton of memory per build process,
 # up to 2.3 GiB.  Cap the number of jobs based on the amount of
@@ -27,6 +27,11 @@ Vendor:        Savoir-faire Linux
 URL:           https://jami.net/
 Source:        jami-qtlib_%{version}.tar.xz
 
+%global gst 0.10
+%if 0%{?fedora} || 0%{?rhel} > 7
+%global gst 1.0
+%endif
+
 # Build dependencies
 BuildRequires: autoconf
 BuildRequires: make
@@ -36,8 +41,18 @@ BuildRequires: gperf
 BuildRequires: flex
 BuildRequires: vulkan-devel
 %if %{defined suse_version}
+BuildRequires: ffmpeg-devel
+BuildRequires: ffmpeg
 BuildRequires: python-xml
 BuildRequires: mozilla-nss-devel
+%else
+BuildRequires: pkgconfig(gstreamer-%{gst})
+BuildRequires: pkgconfig(gstreamer-app-%{gst})
+BuildRequires: pkgconfig(gstreamer-audio-%{gst})
+BuildRequires: pkgconfig(gstreamer-base-%{gst})
+BuildRequires: pkgconfig(gstreamer-pbutils-%{gst})
+BuildRequires: pkgconfig(gstreamer-plugins-bad-%{gst})
+BuildRequires: pkgconfig(gstreamer-video-%{gst})
 %endif
 
 %description
@@ -68,7 +83,6 @@ sed -i 's,#include <QtCore/qbytearray.h>,#include <QtCore/qbytearray.h>\n#includ
   -nomake tests \
   -prefix "%{_libdir}/qt-jami"
 sed -i 's,bin/python,bin/env python3,g' qtbase/mkspecs/features/uikit/devices.py
-
 # Chromium is built using Ninja, which doesn't honor MAKEFLAGS.
 cmake --build . --parallel
 
diff --git a/packaging/rules/rpm/jami-qt.spec b/packaging/rules/rpm/jami-qt.spec
index c46ade17..4af924b3 100644
--- a/packaging/rules/rpm/jami-qt.spec
+++ b/packaging/rules/rpm/jami-qt.spec
@@ -38,7 +38,6 @@ privacy of its users.
 %setup -n jami-project
 
 %build
-
 # Qt-related variables
 cd %{_builddir}/jami-project/client-qt && \
     mkdir build && cd build && \
@@ -46,7 +45,6 @@ cd %{_builddir}/jami-project/client-qt && \
           -DCMAKE_INSTALL_LIBDIR=%{_libdir} \
           -DCMAKE_BUILD_TYPE=Release \
           ..
-
 make -C %{_builddir}/jami-project/client-qt/build %{_smp_mflags} V=1
 
 %install
diff --git a/scripts/build-package-rpm.sh b/scripts/build-package-rpm.sh
index 97d00208..e4212289 100755
--- a/scripts/build-package-rpm.sh
+++ b/scripts/build-package-rpm.sh
@@ -44,6 +44,7 @@ CMAKE_PREFIX_PATH="${QT_JAMI_PREFIX}/lib/cmake:${CMAKE_PREFIX_PATH}"
 QT_MAJOR=6
 QT_MINOR=2
 QT_PATCH=3
+QT_RELEASE_PATCH=3
 
 QT_MAJOR_MINOR=${QT_MAJOR}.${QT_MINOR}
 QT_MAJOR_MINOR_PATCH=${QT_MAJOR}.${QT_MINOR}.${QT_PATCH}
@@ -56,9 +57,9 @@ QT_TARBALL_FILE_NAME=$(basename "$QT_TARBALL_URL")
 CACHED_QT_TARBALL=$TARBALLS/$QT_TARBALL_FILE_NAME
 
 mkdir -p "$TARBALLS/$DISTRIBUTION"
-RPM_PATH=$TARBALLS/$DISTRIBUTION/jami-libqt-$QT_MAJOR_MINOR_PATCH-1.x86_64.rpm
+RPM_PATH=$TARBALLS/$DISTRIBUTION/jami-libqt-$QT_MAJOR_MINOR_PATCH-${QT_RELEASE_PATCH}.x86_64.rpm
 if [[ "${DISTRIBUTION:0:4}" == "rhel" ]]; then
-    RPM_PATH=$TARBALLS/${DISTRIBUTION}/jami-libqt-$QT_MAJOR_MINOR_PATCH-1.el8.x86_64.rpm
+    RPM_PATH=$TARBALLS/${DISTRIBUTION}/jami-libqt-$QT_MAJOR_MINOR_PATCH-${QT_RELEASE_PATCH}.el8.x86_64.rpm
 fi
 
 if [ ! -f "${RPM_PATH}" ]; then
@@ -101,13 +102,13 @@ if [ ! -f "${RPM_PATH}" ]; then
 
         # Cache the built Qt RPM package.
         if [[ "${DISTRIBUTION:0:4}" == "rhel" ]]; then
-            cp "/root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-1.el8.x86_64.rpm" "${RPM_PATH}"
+            cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.el8.x86_64.rpm "${RPM_PATH}"
         elif [[ "${DISTRIBUTION}" == "fedora_33" ]]; then
-            cp "/root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-1.fc33.x86_64.rpm" "${RPM_PATH}"
+            cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc33.x86_64.rpm "${RPM_PATH}"
         elif [[ "${DISTRIBUTION}" == "fedora_34" ]]; then
-            cp "/root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-1.fc34.x86_64.rpm" "${RPM_PATH}"
+            cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc34.x86_64.rpm "${RPM_PATH}"
         elif [[ "${DISTRIBUTION}" == "fedora_35" ]]; then
-            cp "/root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-1.fc35.x86_64.rpm" "${RPM_PATH}"
+            cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc35.x86_64.rpm "${RPM_PATH}"
         else
             cp /root/rpmbuild/RPMS/x86_64/jami-libqt-*.rpm "${RPM_PATH}"
         fi
-- 
GitLab