From 7b32240e4d8183bcf79907377bdbdca16c0da2cc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Blin?=
 <sebastien.blin@savoirfairelinux.com>
Date: Thu, 19 Aug 2021 13:33:05 -0400
Subject: [PATCH] rpm: always build our qt version

This give us more controls about bugs and anyway, we're going to
use Qt 6.2 for macOS support.

Change-Id: I78c17a9984248b4dad08ab2091532159335d4c97
---
 docker/Dockerfile_fedora_33             | 30 ++++++++++++++++++-------
 docker/Dockerfile_fedora_34             | 30 ++++++++++++++++++-------
 packaging/rules/rpm/jami-libclient.spec |  2 --
 packaging/rules/rpm/jami-libqt.spec     | 10 +++++++++
 packaging/rules/rpm/jami-qt.spec        | 13 -----------
 scripts/build-package-rpm.sh            | 11 +++++----
 6 files changed, 61 insertions(+), 35 deletions(-)

diff --git a/docker/Dockerfile_fedora_33 b/docker/Dockerfile_fedora_33
index 633b855b..6a918fc2 100644
--- a/docker/Dockerfile_fedora_33
+++ b/docker/Dockerfile_fedora_33
@@ -5,6 +5,8 @@ RUN dnf clean all
 RUN dnf install -y dnf-command\(builddep\) rpmdevtools && \
     dnf install -y mock
 
+RUN dnf groupinstall -y "X Software Development"
+
 RUN dnf install -y \
         git \
         rpm-build \
@@ -63,15 +65,27 @@ RUN dnf install -y \
         libnotify-devel \
         libupnp-devel \
         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 \
         libargon2-devel \
+        libsndfile-devel \
+        libdrm \
+        gperf \
+        clang \
+        clang-devel \
+        nodejs \
+        bison \
+        flex \
+        nss-devel \
+        libxcb* \
+        libxkb* \
+        libXrender-devel \
+        xcb-util-* \
+        libX11-devel \
+        python2.7 \
+        xz \
+        xkeyboard-config \
+        libnotify \
+        wget \
+        libstdc++-static \
         sqlite-devel
 
 ADD scripts/build-package-rpm.sh /opt/build-package-rpm.sh
diff --git a/docker/Dockerfile_fedora_34 b/docker/Dockerfile_fedora_34
index 23a0ccf3..b2529035 100644
--- a/docker/Dockerfile_fedora_34
+++ b/docker/Dockerfile_fedora_34
@@ -5,6 +5,8 @@ RUN dnf clean all
 RUN dnf install -y dnf-command\(builddep\) rpmdevtools && \
     dnf install -y mock
 
+RUN dnf groupinstall -y "X Software Development"
+
 RUN dnf install -y \
         git \
         rpm-build \
@@ -63,15 +65,27 @@ RUN dnf install -y \
         libnotify-devel \
         libupnp-devel \
         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 \
         libargon2-devel \
+        libsndfile-devel \
+        libdrm \
+        gperf \
+        bison \
+        clang \
+        clang-devel \
+        nodejs \
+        flex \
+        nss-devel \
+        libxcb* \
+        libxkb* \
+        libX11-devel \
+        libXrender-devel \
+        xcb-util-* \
+        python2.7 \
+        xz \
+        xkeyboard-config \
+        libnotify \
+        wget \
+        libstdc++-static \
         sqlite-devel
 
 ADD scripts/build-package-rpm.sh /opt/build-package-rpm.sh
diff --git a/packaging/rules/rpm/jami-libclient.spec b/packaging/rules/rpm/jami-libclient.spec
index aa54c06f..55556bc3 100644
--- a/packaging/rules/rpm/jami-libclient.spec
+++ b/packaging/rules/rpm/jami-libclient.spec
@@ -20,8 +20,6 @@ BuildRequires: jami-daemon-devel = %{version}
 BuildRequires: make
 %if 0%{?fedora} >= 32
 BuildRequires: NetworkManager-libnm-devel
-BuildRequires: qt5-qtbase-devel
-BuildRequires: qt5-qttools-devel
 %endif
 
 %description
diff --git a/packaging/rules/rpm/jami-libqt.spec b/packaging/rules/rpm/jami-libqt.spec
index dc7aca83..0bd11578 100644
--- a/packaging/rules/rpm/jami-libqt.spec
+++ b/packaging/rules/rpm/jami-libqt.spec
@@ -47,6 +47,15 @@ This package contains Qt libraries for Jami.
 
 %build
 echo "Building Qt using %{job_count} parallel jobs"
+# https://bugs.gentoo.org/768261 (Qt 5.15)
+sed -i 's,#include "absl/base/internal/spinlock.h"1,#include "absl/base/internal/spinlock.h"1\n#include <limits>,g' qtwebengine/src/3rdparty/chromium/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc
+sed -i 's,#include <stdint.h>,#include <stdint.h>\n#include <limits>,g' qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/containers/string_pool.h
+# https://bugreports.qt.io/browse/QTBUG-93452 (Qt 5.15)
+sed -i 's,#  include <utility>,#  include <utility>\n#  include <limits>,g' qtbase/src/corelib/global/qglobal.h
+sed -i 's,#include <string.h>,#include <string.h>\n#include <limits>,g' qtbase/src/corelib/global/qendian.h
+cat qtbase/src/corelib/global/qendian.h
+sed -i 's,#include <string.h>,#include <string.h>\n#include <limits>,g' qtbase/src/corelib/global/qfloat16.h
+sed -i 's,#include <QtCore/qbytearray.h>,#include <QtCore/qbytearray.h>\n#include <limits>,g' qtbase/src/corelib/text/qbytearraymatcher.h
 ./configure \
   -opensource \
   -confirm-license \
@@ -54,6 +63,7 @@ echo "Building Qt using %{job_count} parallel jobs"
   -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.
 make -j%{job_count} V=1 NINJAFLAGS="-j%{job_count}"
 
diff --git a/packaging/rules/rpm/jami-qt.spec b/packaging/rules/rpm/jami-qt.spec
index 92f5d471..b8d9fd06 100644
--- a/packaging/rules/rpm/jami-qt.spec
+++ b/packaging/rules/rpm/jami-qt.spec
@@ -22,19 +22,6 @@ BuildRequires: make
 
 # Build and runtime dependencies.
 BuildRequires: qrencode-devel
-%if 0%{?fedora} >= 32
-BuildRequires: qt5-qttools-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
-%endif
 
 %description
 This package contains the Qt desktop client of Jami. Jami is a free
diff --git a/scripts/build-package-rpm.sh b/scripts/build-package-rpm.sh
index 3197fcfa..fd8226a7 100755
--- a/scripts/build-package-rpm.sh
+++ b/scripts/build-package-rpm.sh
@@ -55,8 +55,7 @@ QT_TARBALL_SHA256="3a530d1b243b5dec00bc54937455471aaa3e56849d2593edb8ded07228202
 QT_TARBALL_FILE_NAME=$(basename "$QT_TARBALL_URL")
 CACHED_QT_TARBALL=$TARBALLS/$QT_TARBALL_FILE_NAME
 
-if [[ "${DISTRIBUTION:0:4}" == "rhel" \
-   || "${DISTRIBUTION:0:13}" == "opensuse-leap" ]]; then
+if [[ "${DISTRIBUTION}" != "opensuse-tumbleweed" ]]; then
 
     mkdir -p "$TARBALLS/$DISTRIBUTION"
     RPM_PATH=$TARBALLS/$DISTRIBUTION/jami-libqt-$QT_MAJOR_MINOR_PATCH-1.x86_64.rpm
@@ -103,9 +102,13 @@ if [[ "${DISTRIBUTION:0:4}" == "rhel" \
 
             # Cache the built Qt RPM package.
             if [[ "${DISTRIBUTION:0:4}" == "rhel" ]]; then
-                mv "/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-1.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}"
+            elif [[ "${DISTRIBUTION}" == "fedora_34" ]]; then
+                cp "/root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-1.fc34.x86_64.rpm" "${RPM_PATH}"
             else
-                mv /root/rpmbuild/RPMS/x86_64/jami-libqt-*.rpm "${RPM_PATH}"
+                cp /root/rpmbuild/RPMS/x86_64/jami-libqt-*.rpm "${RPM_PATH}"
             fi
         ) 9>"${RPM_PATH}.lock"
     fi
-- 
GitLab