From 5515e1c5a1910db5ccca773c0512a15009a7bff0 Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer <maxim.cournoyer@savoirfairelinux.com>
Date: Wed, 17 Mar 2021 16:51:36 -0400
Subject: [PATCH] packaging/fedora: Add a jami-qt package.

A new spec file is added, and the Fedora Docker images are augmented
with the required Qt dependencies.  The client-qt submodule is now
also included in the release tarball.

GitLab: #264
Change-Id: I2f25fdc3270a7fed13b9b0714d01feb37f270077
---
 docker/Dockerfile_fedora_32         | 19 +++++---
 docker/Dockerfile_fedora_33         | 19 +++++---
 docker/Dockerfile_fedora_34         | 19 +++++---
 packaging/rules/fedora/jami-qt.spec | 69 +++++++++++++++++++++++++++++
 scripts/build-package-fedora.sh     |  4 +-
 5 files changed, 107 insertions(+), 23 deletions(-)
 create mode 100644 packaging/rules/fedora/jami-qt.spec

diff --git a/docker/Dockerfile_fedora_32 b/docker/Dockerfile_fedora_32
index 71d59e5f..26abf528 100644
--- a/docker/Dockerfile_fedora_32
+++ b/docker/Dockerfile_fedora_32
@@ -1,13 +1,11 @@
 FROM fedora:32
 
 RUN dnf clean all
-RUN dnf install -y dnf-command\(builddep\) rpmdevtools
 
-RUN dnf clean all
-RUN dnf upgrade -y && \
-    dnf install -y mesa-libgbm-devel mesa-dri-drivers && \
-    dnf install -y libinput-devel && \
-    dnf install -y \
+RUN dnf install -y dnf-command\(builddep\) rpmdevtools && \
+    dnf install -y mock
+
+RUN dnf install -y \
         git \
         rpm-build \
         tar \
@@ -21,11 +19,12 @@ RUN dnf upgrade -y && \
         libcanberra-devel \
         libcurl-devel \
         libtool \
+        mesa-libgbm-devel \
+        mesa-dri-drivers \
         dbus-devel \
         expat-devel \
         pcre-devel \
         yaml-cpp-devel \
-        boost-devel \
         dbus-c++-devel \
         dbus-devel \
         libXext-devel \
@@ -66,6 +65,12 @@ RUN dnf upgrade -y && \
         qrencode-devel \
         qt5-qtbase-devel \
         qt5-qttools-devel \
+        qt5-qtdeclarative-devel \
+        qt5-qtquickcontrols \
+        qt5-qtquickcontrols2-devel \
+        qt5-qtmultimedia-devel \
+        qt5-qtsvg-devel \
+        qt5-qtwebengine-devel \
         sqlite-devel
 
 ADD scripts/build-package-fedora.sh /opt/build-package-fedora.sh
diff --git a/docker/Dockerfile_fedora_33 b/docker/Dockerfile_fedora_33
index 0cb5e777..364e04a7 100644
--- a/docker/Dockerfile_fedora_33
+++ b/docker/Dockerfile_fedora_33
@@ -1,13 +1,11 @@
 FROM fedora:33
 
 RUN dnf clean all
-RUN dnf install -y dnf-command\(builddep\) rpmdevtools
 
-RUN dnf clean all
-RUN dnf upgrade -y && \
-    dnf install -y mesa-libgbm-devel mesa-dri-drivers && \
-    dnf install -y libinput-devel && \
-    dnf install -y \
+RUN dnf install -y dnf-command\(builddep\) rpmdevtools && \
+    dnf install -y mock
+
+RUN dnf install -y \
         git \
         rpm-build \
         tar \
@@ -21,11 +19,12 @@ RUN dnf upgrade -y && \
         libcanberra-devel \
         libcurl-devel \
         libtool \
+        mesa-libgbm-devel \
+        mesa-dri-drivers \
         dbus-devel \
         expat-devel \
         pcre-devel \
         yaml-cpp-devel \
-        boost-devel \
         dbus-c++-devel \
         dbus-devel \
         libXext-devel \
@@ -66,6 +65,12 @@ RUN dnf upgrade -y && \
         qrencode-devel \
         qt5-qtbase-devel \
         qt5-qttools-devel \
+        qt5-qtdeclarative-devel \
+        qt5-qtquickcontrols \
+        qt5-qtquickcontrols2-devel \
+        qt5-qtmultimedia-devel \
+        qt5-qtsvg-devel \
+        qt5-qtwebengine-devel \
         sqlite-devel
 
 ADD scripts/build-package-fedora.sh /opt/build-package-fedora.sh
diff --git a/docker/Dockerfile_fedora_34 b/docker/Dockerfile_fedora_34
index 578d05fc..9f2576b5 100644
--- a/docker/Dockerfile_fedora_34
+++ b/docker/Dockerfile_fedora_34
@@ -1,13 +1,11 @@
 FROM fedora:34
 
 RUN dnf clean all
-RUN dnf install -y dnf-command\(builddep\) rpmdevtools
 
-RUN dnf clean all
-RUN dnf upgrade -y && \
-    dnf install -y mesa-libgbm-devel mesa-dri-drivers && \
-    dnf install -y libinput-devel && \
-    dnf install -y \
+RUN dnf install -y dnf-command\(builddep\) rpmdevtools && \
+    dnf install -y mock
+
+RUN dnf install -y \
         git \
         rpm-build \
         tar \
@@ -21,11 +19,12 @@ RUN dnf upgrade -y && \
         libcanberra-devel \
         libcurl-devel \
         libtool \
+        mesa-libgbm-devel \
+        mesa-dri-drivers \
         dbus-devel \
         expat-devel \
         pcre-devel \
         yaml-cpp-devel \
-        boost-devel \
         dbus-c++-devel \
         dbus-devel \
         libXext-devel \
@@ -66,6 +65,12 @@ RUN dnf upgrade -y && \
         qrencode-devel \
         qt5-qtbase-devel \
         qt5-qttools-devel \
+        qt5-qtdeclarative-devel \
+        qt5-qtquickcontrols \
+        qt5-qtquickcontrols2-devel \
+        qt5-qtmultimedia-devel \
+        qt5-qtsvg-devel \
+        qt5-qtwebengine-devel \
         sqlite-devel
 
 ADD scripts/build-package-fedora.sh /opt/build-package-fedora.sh
diff --git a/packaging/rules/fedora/jami-qt.spec b/packaging/rules/fedora/jami-qt.spec
new file mode 100644
index 00000000..3ecc8b85
--- /dev/null
+++ b/packaging/rules/fedora/jami-qt.spec
@@ -0,0 +1,69 @@
+%define name        jami-qt
+%define version     RELEASE_VERSION
+%define release     0
+
+Name:          %{name}
+Version:       %{version}
+Release:       %{release}%{?dist}
+Summary:       Qt client for Jami
+Group:         Applications/Internet
+License:       GPLv3+
+Vendor:        Savoir-faire Linux
+URL:           https://jami.net/
+Source:        jami_%{version}.tar.gz
+Requires:      jami-libclient = %{version}
+Provides:      jami
+Obsoletes:     jami < %{version}-%{release}
+
+# Build dependencies.
+BuildRequires: cmake
+BuildRequires: gcc-c++
+BuildRequires: make
+BuildRequires: qt5-qttools-devel
+
+# Build and runtime dependencies.
+BuildRequires: qrencode-devel
+BuildRequires: qt5-qtbase-devel
+BuildRequires: qt5-qtdeclarative-devel
+BuildRequires: qt5-qtmultimedia-devel
+BuildRequires: qt5-qtquickcontrols
+BuildRequires: qt5-qtquickcontrols2-devel
+BuildRequires: qt5-qtsvg-devel
+BuildRequires: qt5-qtwebengine-devel
+
+# Runtime dependencies not automatically registered by RPM.
+Requires: qt5-qtquickcontrols
+Requires: qt5-qtgraphicaleffects
+
+%description
+This package contains the Qt desktop client of Jami. Jami is a free
+software for universal communication which respects freedoms and
+privacy of its users.
+
+%prep
+%setup -n ring-project
+
+%build
+cd %{_builddir}/ring-project/client-qt && \
+    mkdir build && cd build && \
+    cmake -DCMAKE_INSTALL_PREFIX=%{_prefix} \
+          -DCMAKE_INSTALL_LIBDIR=%{_libdir} \
+          -DCMAKE_BUILD_TYPE=Debug \
+          ..
+
+make -C %{_builddir}/ring-project/client-qt/build %{_smp_mflags} V=1
+
+%install
+DESTDIR=%{buildroot} make -C %{_builddir}/ring-project/client-qt/build install
+
+%files
+%defattr(-,root,root,-)
+%{_bindir}/jami
+%{_bindir}/jami-qt
+%{_datadir}/applications/jami-qt.desktop
+%{_datadir}/jami-qt/jami-qt.desktop
+%{_datadir}/icons/hicolor/scalable/apps/jami.svg
+%{_datadir}/icons/hicolor/48x48/apps/jami.png
+%{_datadir}/pixmaps/jami.xpm
+%{_datadir}/metainfo/jami-qt.appdata.xml
+%{_datadir}/ring/translations/*
diff --git a/scripts/build-package-fedora.sh b/scripts/build-package-fedora.sh
index 17cb3c90..64242a81 100755
--- a/scripts/build-package-fedora.sh
+++ b/scripts/build-package-fedora.sh
@@ -52,8 +52,8 @@ rpm --install /root/rpmbuild/RPMS/x86_64/jami-daemon-*
 rpmbuild -ba jami-libclient.spec
 rpm --install /root/rpmbuild/RPMS/x86_64/jami-libclient-*
 
-# Build the GNOME client.
-rpmbuild -ba jami-gnome.spec
+# Build the GNOME and Qt clients.
+rpmbuild -ba jami-gnome.spec jami-qt.spec
 
 # Move the built packages to the output directory.
 mv /root/rpmbuild/RPMS/*/* /opt/output
-- 
GitLab