diff --git a/CMakeLists.txt b/CMakeLists.txt
index accb300a7bedac98153af43dcc3310fb68c145b8..d20a7faf789e169a7fe56181e33c19b497c5e293 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -92,9 +92,10 @@ if(WIN32)
   list(APPEND QWINDOWKIT_OPTIONS QWINDOWKIT_ENABLE_WINDOWS_SYSTEM_BORDERS OFF)
 endif()
 
-# qmsetup uses the wrong package dir on Fedora at least.
-check_redhat_based(IS_REDHAT_BASED)
-if(IS_REDHAT_BASED)
+# qmsetup uses the wrong package dir on some distributions
+# (including Fedora and openSUSE Leap at least)
+check_distro_needs_qmsetup_patch(DISTRO_NEEDS_QMSETUP_PATCH)
+if(DISTRO_NEEDS_QMSETUP_PATCH)
   list(APPEND QWINDOWKIT_PATCHES ${EXTRA_PATCHES_DIR}/0001-fix-fedora-fc-build.patch)
   set(qmsetup_cmake_path ${CMAKE_BINARY_DIR}/_install/lib64/cmake/qmsetup)
 endif()
@@ -131,7 +132,7 @@ set(TESTS_DIR ${PROJECT_SOURCE_DIR}/tests)
 # Here we let find_package(<PackageName>...) try to find Qt 6,
 # If it is found, find_package will succeed, and the CMake variable
 # QT_VERSION_MAJOR will be defined 6.
-set(QT6_MINVER_MINOR 5)
+set(QT6_MINVER_MINOR 6)
 if(QT6_VER AND QT6_PATH)
   find_package(QT NAMES Qt6 REQUIRED
     PATHS ${QT6_PATH} NO_DEFAULT_PATH)
@@ -140,10 +141,10 @@ else()
   find_package(QT NAMES Qt6 REQUIRED)
 endif()
 if (${QT_VERSION_MINOR} GREATER_EQUAL ${QT6_MINVER_MINOR})
-  # Qt version is 6.5 or higher
+  # Qt version is 6.6 or higher
   message(STATUS "Found a suitable Qt version ${QT_VERSION}")
 else()
-  message(FATAL_ERROR "Qt 6.5 or higher is required. Found ${QT_VERSION}")
+  message(FATAL_ERROR "Qt 6.6 or higher is required. Found ${QT_VERSION}")
 endif()
 
 # libjamiclient
diff --git a/INSTALL.md b/INSTALL.md
index 4a10f49bbc1f309f2425965aa14eee7cdd07ca04..ca6c58facf4757d0a6d9820b912f9237ad59749f 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -7,9 +7,9 @@ There are essentially two ways to build `client-qt`:
 
 ## Disclaimer
 
-Because the client-qt is multi-platforms and supporting macOS, we need a recent version of Qt to do rendering with Metal. So, Qt 6.5 is necessary.
+Because the client-qt is multi-platforms and supporting macOS, we need a recent version of Qt to do rendering with Metal. So, Qt 6.6 is necessary.
 This version is generally not packaged on a lot of platforms, and to control available plugins and such, we have our own Qt packaged (available on https://jami.net on the distributions we support).
-So, you will need to get Qt 6.5 first. For this, there is 3 methods:
+So, you will need to get Qt 6.6 first. For this, there is 3 methods:
 
 ### Qt from our repo (recommended)
 
@@ -49,7 +49,7 @@ sudo dnf update && sudo dnf install jami-libqt
 
 ### Qt from your distribution
 
-If Qt 6.5 is available, you can use the packages from your distribution:
+If Qt 6.6 is available, you can use the packages from your distribution:
 
 It should be (For now qt5 only is packaged by distributions, so names can change).
 
@@ -118,7 +118,7 @@ Then, you can build daemon and the client using:
 
 If you use a Qt version that is not system-wide installed, you need to
 specify its path using the `--qt` flag, e.g.
-`./build.py --install --qt=/home/<username>/Qt/6.5.1/gcc_64`.
+`./build.py --install --qt=/home/<username>/Qt/6.6.1/gcc_64`.
 
 Now you will have the daemon in `daemon/bin/dbus/jamid` and the client in
 `build/jami`. You can now run Jami using:
@@ -134,7 +134,7 @@ Notes:
 
 ## Build only the client
 
-In order to use the Qt Client it is necessary to have the Qt version 6.5 or higher. If your system does not have it you can install it [from sources or download the binary installer](https://www.qt.io/download).
+In order to use the Qt Client it is necessary to have the Qt version 6.6 or higher. If your system does not have it you can install it [from sources or download the binary installer](https://www.qt.io/download).
 
 ## Build only this repository
 
@@ -184,7 +184,7 @@ Only 64-bit MSVC build can be compiled.
 
 - Download [Qt (Open Source)](https://www.qt.io/download-open-source?hsCtaTracking=9f6a2170-a938-42df-a8e2-a9f0b1d6cdce%7C6cb0de4f-9bb5-4778-ab02-bfb62735f3e5)
 
-- Using the online installer, install the following Qt 6.5.3 components:
+- Using the online installer, install the following Qt 6.6.1 components:
 
   - Git 2.10.2
   - MSVC 2019 64-bit
@@ -203,11 +203,11 @@ Only 64-bit MSVC build can be compiled.
   | ------------ | ------------ | --------------------------------------------------- | ---------------- |
   | Requirement: | 10.0.18362.0 | V142 (VisualStudio 2019) / V143 (VisualStudio 2022) | matching Toolset |
 
-- Install Qt Vs Tools under extensions, and configure msvc2017*64 path under Qt Options. \_See the Qt notes below.*
+- Install Qt Vs Tools under extensions, and configure msvc2019\_64 path under Qt Options. *See the Qt notes below.*
 
   |                      | Qt Version |
   | -------------------- | ---------- |
-  | Minimum requirement: | 6.5.3      |
+  | Minimum requirement: | 6.6.1      |
 
 - Install [Python3](https://www.python.org/downloads/) for Windows
 
@@ -233,7 +233,7 @@ Only 64-bit MSVC build can be compiled.
 - Using a new **Non-Elevated Command Prompt**
 
 ```bash
-    python build.py --install --qt <path-to-qt-bin-folder> (e.g. C:/Qt/6.5.3/msvc2019_64)
+    python build.py --install --qt <path-to-qt-bin-folder> (e.g. C:/Qt/6.6.1/msvc2019_64)
 ```
 
 > **SDK** Note:
@@ -276,7 +276,7 @@ Once the build has finished, you should then be able to use the Visual Studio So
 
 ```
     python extras\scripts\build-windows.py --init
-    python extras\scripts\build-windows.py --qt <path-to-qt-bin-folder> (e.g. C:/Qt/6.5.3/msvc2019_64)
+    python extras\scripts\build-windows.py --qt <path-to-qt-bin-folder> (e.g. C:/Qt/6.6.1/msvc2019_64)
 ```
 
 ## Building On MacOS
@@ -286,9 +286,9 @@ Once the build has finished, you should then be able to use the Visual Studio So
 - macOS minimum version 10.15
 - install python3
 - download xcode
-- install Qt 6.5
+- install Qt 6.6
 
-Qt 6.5 can be installed via brew
+Qt 6.6 can be installed via brew
 
 ```bash
 brew install qt
diff --git a/build.py b/build.py
index 8e1118178c19c503b03335e91c6faa65ade81139..3e68c2f41e8563aa6984ec2e31bf7dfc8b55f55c 100755
--- a/build.py
+++ b/build.py
@@ -99,7 +99,7 @@ ZYPPER_DEPENDENCIES = [
     # daemon
     'speexdsp-devel', 'speex-devel', 'libdbus-c++-devel', 'jsoncpp-devel', 'yaml-cpp-devel',
     'yasm', 'libuuid-devel', 'libnettle-devel', 'libopus-devel', 'libexpat-devel',
-    'libgnutls-devel', 'msgpack-devel', 'libavcodec-devel', 'libavdevice-devel', 'pcre-devel',
+    'libgnutls-devel', 'msgpack-c-devel', 'msgpack-cxx-devel', 'libavcodec-devel', 'libavdevice-devel', 'pcre-devel',
     'alsa-devel', 'libpulse-devel', 'libudev-devel', 'libva-devel', 'libvdpau-devel',
     'libopenssl-devel', 'libavutil-devel',
 ]
@@ -108,8 +108,10 @@ ZYPPER_CLIENT_DEPENDENCIES = [
     # lrc
     'qt6-core-devel', 'qt6-dbus-devel', 'qt6-linguist-devel',
     # client-qt
-    'qt6-svg-devel', 'qt6-multimedia-devel', 'qt6-declarative-devel',
-    'qt6-quickcontrols2-devel',
+    'qt6-concurrent-devel', 'qt6-qt5compat-devel', 'qt6-qt5compat-imports',
+    'qt6-svg-devel', 'qt6-multimedia-devel', 'qt6-multimedia-imports',
+    'qt6-declarative-devel', 'qt6-qmlcompiler-private-devel',
+    'qt6-quickcontrols2-devel', 'qt6-shadertools-devel',
     'qrencode-devel', 'NetworkManager-devel'
 ]
 
@@ -244,8 +246,8 @@ def run_dependencies(args):
 
     elif args.distribution in DNF_BASED_DISTROS:
         if args.assume_yes:
-            for i, _ in enumerate(DNF_INSTALL_SCRIPT):
-                DNF_INSTALL_SCRIPT[i] += ASSUME_YES_FLAG
+            for i, _ in enumerate(RPM_INSTALL_SCRIPT):
+                RPM_INSTALL_SCRIPT[i] += ASSUME_YES_FLAG
         execute_script(
             RPM_INSTALL_SCRIPT,
             {"packages": ' '.join(map(shlex.quote, DNF_DEPENDENCIES))})
diff --git a/daemon b/daemon
index 205904ed4dd736b8a0ea6c913ecb91d637b79867..609188283ae12988c7f72459d6f19518cd2b8f2f 160000
--- a/daemon
+++ b/daemon
@@ -1 +1 @@
-Subproject commit 205904ed4dd736b8a0ea6c913ecb91d637b79867
+Subproject commit 609188283ae12988c7f72459d6f19518cd2b8f2f
diff --git a/extras/build/cmake/contrib_tools.cmake b/extras/build/cmake/contrib_tools.cmake
index 863c6f26f1993c145318e4d534bcd4dae7e12490..1496d0523b54e87b3f1d80bf23c99456026d9508 100644
--- a/extras/build/cmake/contrib_tools.cmake
+++ b/extras/build/cmake/contrib_tools.cmake
@@ -17,20 +17,26 @@
 include(FetchContent)
 include(CMakeParseArguments)
 
-# Helper function to check if the current distribution is Red Hat-based
-function(check_redhat_based IS_REDHAT_BASED)
-  set(${IS_REDHAT_BASED} FALSE PARENT_SCOPE)
+# Helper function to check if we're on a distribution that requires us
+# to apply a patch in order for qmsetup to use the right package directory
+function(check_distro_needs_qmsetup_patch DISTRO_NEEDS_QMSETUP_PATCH)
+  set(${DISTRO_NEEDS_QMSETUP_PATCH} FALSE PARENT_SCOPE)
   # Check for the existence of /etc/os-release
   if(EXISTS "/etc/os-release")
     # Read the content of the file
     file(READ "/etc/os-release" OS_RELEASE_CONTENT)
       # Check if the distribution is Fedora or Red Hat-based
-      string(REGEX MATCH "ID=fedora|ID_LIKE=\"rhel fedora\"" MATCH_RESULT "${OS_RELEASE_CONTENT}")
-      if(MATCH_RESULT)
-        set(${IS_REDHAT_BASED} TRUE PARENT_SCOPE)
+      string(REGEX MATCH "ID=fedora|ID_LIKE=\"rhel fedora\"|ID_LIKE=\"rhel centos fedora\"" RED_HAT_BASED "${OS_RELEASE_CONTENT}")
+      # Check if the distribution is openSUSE Leap
+      string(REGEX MATCH "ID=\"opensuse-leap\"" OPENSUSE_LEAP "${OS_RELEASE_CONTENT}")
+      if(RED_HAT_BASED)
+        set(${DISTRO_NEEDS_QMSETUP_PATCH} TRUE PARENT_SCOPE)
         message(STATUS "Running on a Red Hat-based distribution (Fedora, RHEL, CentOS, etc.)")
+      elseif(OPENSUSE_LEAP)
+        set(${DISTRO_NEEDS_QMSETUP_PATCH} TRUE PARENT_SCOPE)
+        message(STATUS "Running on openSUSE Leap")
       else()
-        message(STATUS "Not a Red Hat-based distribution")
+        message(STATUS "Distribution is not openSUSE Leap or Red Hat-based")
       endif()
   else()
     message(STATUS "Cannot determine the distribution type: /etc/os-release not found")
diff --git a/extras/packaging/gnu-linux/Makefile b/extras/packaging/gnu-linux/Makefile
index 2dbd55dd9f82d3bfaac7d9f550625196699daf34..560d8af8b55278a3e54e0b3a826be18dd62c087c 100644
--- a/extras/packaging/gnu-linux/Makefile
+++ b/extras/packaging/gnu-linux/Makefile
@@ -46,10 +46,10 @@ DEBIAN_DSC_FILENAME := jami_$(DEBIAN_VERSION).dsc
 
 # Qt versions
 QT_MAJOR := 6
-QT_MINOR := 5
-QT_PATCH := 3
-QT_TARBALL_CHECKSUM := 7cda4d119aad27a3887329cfc285f2aba5da85601212bcb0aea27bd6b7b544cb
-DEBIAN_QT_VERSION := $(QT_MAJOR).$(QT_MINOR).$(QT_PATCH)-1
+QT_MINOR := 6
+QT_PATCH := 1
+QT_TARBALL_CHECKSUM := dd3668f65645fe270bc615d748bd4dc048bd17b9dc297025106e6ecc419ab95d
+DEBIAN_QT_VERSION := $(QT_MAJOR).$(QT_MINOR).$(QT_PATCH)-0
 DEBIAN_QT_DSC_FILENAME := libqt-jami_$(DEBIAN_QT_VERSION).dsc
 QT_JAMI_PREFIX := /usr/lib/libqt-jami
 
diff --git a/extras/packaging/gnu-linux/docker/Dockerfile_debian_11 b/extras/packaging/gnu-linux/docker/Dockerfile_debian_11
index 8b1831a2029efe585b13e9af6670e0dceaebd109..324ca3055992e359210e3bb284104b2588585710 100644
--- a/extras/packaging/gnu-linux/docker/Dockerfile_debian_11
+++ b/extras/packaging/gnu-linux/docker/Dockerfile_debian_11
@@ -8,7 +8,12 @@ RUN apt-get update && \
         devscripts \
         equivs \
         python-is-python3 \
-        wget
+        wget \
+        curl
+
+# nodejs
+RUN curl -sL https://deb.nodesource.com/setup_20.x | bash -
+RUN apt install nodejs -y
 
 ADD extras/packaging/gnu-linux/scripts/prebuild-package-debian.sh /opt/prebuild-package-debian.sh
 
@@ -18,7 +23,7 @@ RUN /opt/prebuild-package-debian.sh qt-deps
 COPY extras/packaging/gnu-linux/rules/debian/control /tmp/builddeps/debian/control
 RUN /opt/prebuild-package-debian.sh jami-deps
 
-# Install CMake 3.20 for Qt 6
+# Install CMake 3.21 for Qt 6
 ADD extras/packaging/gnu-linux/scripts/install-cmake.sh /opt/install-cmake.sh
 RUN /opt/install-cmake.sh
 
diff --git a/extras/packaging/gnu-linux/docker/Dockerfile_debian_testing b/extras/packaging/gnu-linux/docker/Dockerfile_debian_testing
index 327d9d445424d0caaea1415270ba85150449f6dd..16baa193ac0e1dd55db1761fcb264ce03465ae6b 100644
--- a/extras/packaging/gnu-linux/docker/Dockerfile_debian_testing
+++ b/extras/packaging/gnu-linux/docker/Dockerfile_debian_testing
@@ -11,6 +11,14 @@ RUN apt-get update --allow-releaseinfo-change && \
         wget \
         nasm
 
+# As of January 2024, the default compiler on Debian testing is GCC 13.2.0, which
+# can't build one of Qt 6.6.1's dependencies, see:
+# https://github.com/qt/qtquick3d-assimp/commit/253f8bfa621a9fa6cd2c36291cdaa8c60c99322c
+# The linked commit above fixes the problem and is included in more recent versions of Qt.
+# For now, we use GCC 12 as a temporary workaround:
+ADD extras/packaging/gnu-linux/scripts/install-gcc-debian.sh /opt/install-gcc-debian.sh
+RUN /opt/install-gcc-debian.sh 12
+
 ADD extras/packaging/gnu-linux/scripts/prebuild-package-debian.sh /opt/prebuild-package-debian.sh
 
 COPY extras/packaging/gnu-linux/rules/debian-qt/control /tmp/builddeps/debian/control
@@ -19,7 +27,7 @@ RUN /opt/prebuild-package-debian.sh qt-deps
 COPY extras/packaging/gnu-linux/rules/debian/control /tmp/builddeps/debian/control
 RUN /opt/prebuild-package-debian.sh jami-deps
 
-# Install CMake 3.19 for Qt 6
+# Install CMake 3.21 for Qt 6
 ADD extras/packaging/gnu-linux/scripts/install-cmake.sh /opt/install-cmake.sh
 RUN /opt/install-cmake.sh
 
diff --git a/extras/packaging/gnu-linux/docker/Dockerfile_debian_unstable b/extras/packaging/gnu-linux/docker/Dockerfile_debian_unstable
index f156d81d47923b8cfb9a2a2a570e92e4093e7013..5d88be80f286c7a82157637690ab6ed1ff81b8c6 100644
--- a/extras/packaging/gnu-linux/docker/Dockerfile_debian_unstable
+++ b/extras/packaging/gnu-linux/docker/Dockerfile_debian_unstable
@@ -11,6 +11,14 @@ RUN apt-get update && \
         libdbus-1-dev \
         wget
 
+# As of January 2024, the default compiler on Debian unstable is GCC 13.2.0, which
+# can't build one of Qt 6.6.1's dependencies, see:
+# https://github.com/qt/qtquick3d-assimp/commit/253f8bfa621a9fa6cd2c36291cdaa8c60c99322c
+# The linked commit above fixes the problem and is included in more recent versions of Qt.
+# For now, we use GCC 12 as a temporary workaround:
+ADD extras/packaging/gnu-linux/scripts/install-gcc-debian.sh /opt/install-gcc-debian.sh
+RUN /opt/install-gcc-debian.sh 12
+
 ADD extras/packaging/gnu-linux/scripts/prebuild-package-debian.sh /opt/prebuild-package-debian.sh
 
 COPY extras/packaging/gnu-linux/rules/debian-qt/control /tmp/builddeps/debian/control
@@ -19,7 +27,7 @@ RUN /opt/prebuild-package-debian.sh qt-deps
 COPY extras/packaging/gnu-linux/rules/debian/control /tmp/builddeps/debian/control
 RUN /opt/prebuild-package-debian.sh jami-deps
 
-# Install CMake 3.19 for Qt 6
+# Install CMake 3.21 for Qt 6
 ADD extras/packaging/gnu-linux/scripts/install-cmake.sh /opt/install-cmake.sh
 RUN /opt/install-cmake.sh
 
diff --git a/extras/packaging/gnu-linux/docker/Dockerfile_opensuse-leap_15.4 b/extras/packaging/gnu-linux/docker/Dockerfile_opensuse-leap_15.4
index f413b1d50eb3c514cac1beec2461b86553faf2bf..086848b0dbe52d0a6436bfa00573cea585f1075f 100644
--- a/extras/packaging/gnu-linux/docker/Dockerfile_opensuse-leap_15.4
+++ b/extras/packaging/gnu-linux/docker/Dockerfile_opensuse-leap_15.4
@@ -59,6 +59,7 @@ RUN zypper --non-interactive install -y \
         ffmpeg-4-libavutil-devel \
         gtk3-devel\
         qrencode-devel \
+        python310 \
         python3-python-dateutil \
         python3-html5lib \
         libsndfile-devel \
@@ -67,7 +68,7 @@ RUN zypper --non-interactive install -y \
         bison \
         flex \
         ffmpeg ffmpeg-devel \
-        nodejs12 \
+        nodejs18 \
         mozilla-nss-devel \
         python-xml \
         python3-six \
@@ -100,6 +101,10 @@ RUN zypper --non-interactive install -y \
         cmake \
         wget
 
+# openSUSE Leap 15.4 comes with Python 3.6 by default,
+# but we need at least 3.7 to compile Qt 6.6.1
+RUN rm /usr/bin/python3 && ln -s /usr/bin/python3.10 /usr/bin/python3
+
 RUN update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 50
 RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 50
 
diff --git a/extras/packaging/gnu-linux/docker/Dockerfile_opensuse-leap_15.5 b/extras/packaging/gnu-linux/docker/Dockerfile_opensuse-leap_15.5
index d8e1533ec3f655ce06617665a42375ec94938a7a..5da01417ae21392ff53600cb14b887305e553626 100644
--- a/extras/packaging/gnu-linux/docker/Dockerfile_opensuse-leap_15.5
+++ b/extras/packaging/gnu-linux/docker/Dockerfile_opensuse-leap_15.5
@@ -60,6 +60,7 @@ RUN zypper --non-interactive install -y \
         ffmpeg-4-libavutil-devel \
         gtk3-devel\
         qrencode-devel \
+        python310 \
         python3-python-dateutil \
         python3-html5lib \
         libsndfile-devel \
@@ -101,6 +102,10 @@ RUN zypper --non-interactive install -y \
         cmake \
         wget
 
+# openSUSE Leap 15.5 comes with Python 3.6 by default,
+# but we need at least 3.7 to compile Qt 6.6.1
+RUN rm /usr/bin/python3 && ln -s /usr/bin/python3.10 /usr/bin/python3
+
 RUN update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 50
 RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 50
 
diff --git a/extras/packaging/gnu-linux/docker/Dockerfile_ubuntu_20.04 b/extras/packaging/gnu-linux/docker/Dockerfile_ubuntu_20.04
index 7c488680d13420773be055ad6ed78bafb20271d1..12219e0c92fc3b689ebbd6d1fe409505936b654c 100644
--- a/extras/packaging/gnu-linux/docker/Dockerfile_ubuntu_20.04
+++ b/extras/packaging/gnu-linux/docker/Dockerfile_ubuntu_20.04
@@ -11,8 +11,13 @@ RUN apt-get update && \
         wget \
         curl
 
+# Installing GCC 10 because GCC 9 (the default on Ubuntu 20.04) doesn't support
+# the --std=gnu++20 option, which is used by one of Qt 6.6.1's dependencies
+ADD extras/packaging/gnu-linux/scripts/install-gcc-debian.sh /opt/install-gcc-debian.sh
+RUN /opt/install-gcc-debian.sh 10
+
 # nodejs
-RUN curl -sL https://deb.nodesource.com/setup_14.x | bash -
+RUN curl -sL https://deb.nodesource.com/setup_20.x | bash -
 RUN apt install nodejs -y
 
 ADD extras/packaging/gnu-linux/scripts/prebuild-package-debian.sh /opt/prebuild-package-debian.sh
@@ -23,7 +28,7 @@ RUN /opt/prebuild-package-debian.sh qt-deps
 COPY extras/packaging/gnu-linux/rules/debian/control /tmp/builddeps/debian/control
 RUN /opt/prebuild-package-debian.sh jami-deps
 
-# Install CMake 3.19 for Qt 6
+# Install CMake 3.21 for Qt 6
 ADD extras/packaging/gnu-linux/scripts/install-cmake.sh /opt/install-cmake.sh
 RUN /opt/install-cmake.sh
 
diff --git a/extras/packaging/gnu-linux/docker/Dockerfile_ubuntu_22.04 b/extras/packaging/gnu-linux/docker/Dockerfile_ubuntu_22.04
index dbff097d9360f25a3951568f53d09344bada9b73..19c903ae07f23d218518a181531df1d061fe26b2 100644
--- a/extras/packaging/gnu-linux/docker/Dockerfile_ubuntu_22.04
+++ b/extras/packaging/gnu-linux/docker/Dockerfile_ubuntu_22.04
@@ -8,7 +8,12 @@ RUN apt-get update && \
         devscripts \
         equivs \
         python-is-python3 \
-        wget
+        wget \
+        curl
+
+# nodejs
+RUN curl -sL https://deb.nodesource.com/setup_20.x | bash -
+RUN apt install nodejs -y
 
 ADD extras/packaging/gnu-linux/scripts/prebuild-package-debian.sh /opt/prebuild-package-debian.sh
 
diff --git a/extras/packaging/gnu-linux/docker/Dockerfile_ubuntu_23.10 b/extras/packaging/gnu-linux/docker/Dockerfile_ubuntu_23.10
index 1bcfd262eaca9dee2b30216df866f432706939f5..673a9a1ee4ac04657a9e00c07aecbd8d336b6b0f 100644
--- a/extras/packaging/gnu-linux/docker/Dockerfile_ubuntu_23.10
+++ b/extras/packaging/gnu-linux/docker/Dockerfile_ubuntu_23.10
@@ -10,6 +10,14 @@ RUN apt-get update && \
         python-is-python3 \
         wget
 
+# The default compiler on Ubuntu 23.10, GCC 13.2.0, can't build one of Qt 6.6.1's
+# dependencies, see:
+# https://github.com/qt/qtquick3d-assimp/commit/253f8bfa621a9fa6cd2c36291cdaa8c60c99322c
+# The linked commit above fixes the problem and is included in more recent versions of Qt.
+# For now, we use GCC 12 as a temporary workaround:
+ADD extras/packaging/gnu-linux/scripts/install-gcc-debian.sh /opt/install-gcc-debian.sh
+RUN /opt/install-gcc-debian.sh 12
+
 ADD extras/packaging/gnu-linux/scripts/prebuild-package-debian.sh /opt/prebuild-package-debian.sh
 
 COPY extras/packaging/gnu-linux/rules/debian-qt/control /tmp/builddeps/debian/control
diff --git a/extras/packaging/gnu-linux/rules/debian-qt/control b/extras/packaging/gnu-linux/rules/debian-qt/control
index 397e009e22cfa1bac6a7b163c7466ddae3f1c2c0..b2a302397689f73fabab19f22fcbde11c9b66cee 100644
--- a/extras/packaging/gnu-linux/rules/debian-qt/control
+++ b/extras/packaging/gnu-linux/rules/debian-qt/control
@@ -314,7 +314,7 @@ Build-Depends: debhelper (>= 9),
                libxtst-dev,
                mesa-common-dev,
                ninja-build,
-               nodejs (>= 10.19),
+               nodejs (>= 14.21),
 # pkg-config,
 # pkg-kde-tools,
                protobuf-compiler,
diff --git a/extras/packaging/gnu-linux/rules/debian-qt/patches/0001-fix-mathops.patch b/extras/packaging/gnu-linux/rules/debian-qt/patches/0001-fix-mathops.patch
deleted file mode 100644
index 8ed8490992258dc0e63a8578b0a6804045a20950..0000000000000000000000000000000000000000
--- a/extras/packaging/gnu-linux/rules/debian-qt/patches/0001-fix-mathops.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From ecae5d93b0a89e2b8c16a2227b2d176f58579d04 Mon Sep 17 00:00:00 2001
-From: Rémi Denis-Courmont <remi@remlab.net>
-Date: Sun, 16 Jul 2023 18:18:02 +0300
-Subject: [PATCH] Fix ffmpeg assembly with newer binutil
-
-avcodec/x86/mathops: clip constants used with shift instructions within inline assembly
-
-Fixes assembling with binutil as >= 2.41
-
-FFmpeg commit effadce6c756247ea8bae32dc13bb3e6f464f0eb.
-
-Deals with: "Error: operand type mismatch for `shr'"
-
-Fixes: QTBUG-116649
-Change-Id: I094e8c23fed4a61fba3f1e3a9c73c016d129d830
-Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/495990
-Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
-(cherry picked from commit 29354c7c7def7bdc66bcd25d401677fd9421f657)
-Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/509219
-Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
----
-
-diff --git a/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h b/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
-index 6298f5e..ca7e2df 100644
---- a/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
-+++ b/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
-@@ -35,12 +35,20 @@
- static av_always_inline av_const int MULL(int a, int b, unsigned shift)
- {
-     int rt, dummy;
-+    if (__builtin_constant_p(shift))
-     __asm__ (
-         "imull %3               \n\t"
-         "shrdl %4, %%edx, %%eax \n\t"
-         :"=a"(rt), "=d"(dummy)
--        :"a"(a), "rm"(b), "ci"((uint8_t)shift)
-+        :"a"(a), "rm"(b), "i"(shift & 0x1F)
-     );
-+    else
-+        __asm__ (
-+            "imull %3               \n\t"
-+            "shrdl %4, %%edx, %%eax \n\t"
-+            :"=a"(rt), "=d"(dummy)
-+            :"a"(a), "rm"(b), "c"((uint8_t)shift)
-+        );
-     return rt;
- }
-
-@@ -113,19 +121,31 @@
- // avoid +32 for shift optimization (gcc should do that ...)
- #define NEG_SSR32 NEG_SSR32
- static inline  int32_t NEG_SSR32( int32_t a, int8_t s){
-+    if (__builtin_constant_p(s))
-     __asm__ ("sarl %1, %0\n\t"
-          : "+r" (a)
--         : "ic" ((uint8_t)(-s))
-+         : "i" (-s & 0x1F)
-     );
-+    else
-+        __asm__ ("sarl %1, %0\n\t"
-+               : "+r" (a)
-+               : "c" ((uint8_t)(-s))
-+        );
-     return a;
- }
-
- #define NEG_USR32 NEG_USR32
- static inline uint32_t NEG_USR32(uint32_t a, int8_t s){
-+    if (__builtin_constant_p(s))
-     __asm__ ("shrl %1, %0\n\t"
-          : "+r" (a)
--         : "ic" ((uint8_t)(-s))
-+         : "i" (-s & 0x1F)
-     );
-+    else
-+        __asm__ ("shrl %1, %0\n\t"
-+               : "+r" (a)
-+               : "c" ((uint8_t)(-s))
-+        );
-     return a;
- }
diff --git a/extras/packaging/gnu-linux/rules/debian-qt/patches/0002-fix-binary-tokenizer.patch b/extras/packaging/gnu-linux/rules/debian-qt/patches/0002-fix-binary-tokenizer.patch
deleted file mode 100644
index 31a12b1fa4a8da82930a8515b2ba6465138764eb..0000000000000000000000000000000000000000
--- a/extras/packaging/gnu-linux/rules/debian-qt/patches/0002-fix-binary-tokenizer.patch
+++ /dev/null
@@ -1,16 +0,0 @@
- qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp b/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
-index 3488120..120e47a 100644
---- a/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
-+++ b/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
-@@ -472,7 +472,7 @@ void TokenizeBinary(TokenList& output_tokens, const char* input, size_t length)
-     }
-     catch (const DeadlyImportError& e)
-     {
--        if (!is64bits && (length > std::numeric_limits<std::uint32_t>::max())) {
-+        if (!is64bits && (length > std::numeric_limits<uint32_t>::max())) {
-             throw DeadlyImportError("The FBX file is invalid. This may be because the content is too big for this older version (", ai_to_string(version), ") of the FBX format. (", e.what(), ")");
-         }
-         throw;
diff --git a/extras/packaging/gnu-linux/rules/debian-qt/patches/0003-fix-mathops.patch b/extras/packaging/gnu-linux/rules/debian-qt/patches/0003-fix-mathops.patch
deleted file mode 100644
index 8ed8490992258dc0e63a8578b0a6804045a20950..0000000000000000000000000000000000000000
--- a/extras/packaging/gnu-linux/rules/debian-qt/patches/0003-fix-mathops.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From ecae5d93b0a89e2b8c16a2227b2d176f58579d04 Mon Sep 17 00:00:00 2001
-From: Rémi Denis-Courmont <remi@remlab.net>
-Date: Sun, 16 Jul 2023 18:18:02 +0300
-Subject: [PATCH] Fix ffmpeg assembly with newer binutil
-
-avcodec/x86/mathops: clip constants used with shift instructions within inline assembly
-
-Fixes assembling with binutil as >= 2.41
-
-FFmpeg commit effadce6c756247ea8bae32dc13bb3e6f464f0eb.
-
-Deals with: "Error: operand type mismatch for `shr'"
-
-Fixes: QTBUG-116649
-Change-Id: I094e8c23fed4a61fba3f1e3a9c73c016d129d830
-Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/495990
-Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
-(cherry picked from commit 29354c7c7def7bdc66bcd25d401677fd9421f657)
-Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/509219
-Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
----
-
-diff --git a/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h b/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
-index 6298f5e..ca7e2df 100644
---- a/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
-+++ b/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
-@@ -35,12 +35,20 @@
- static av_always_inline av_const int MULL(int a, int b, unsigned shift)
- {
-     int rt, dummy;
-+    if (__builtin_constant_p(shift))
-     __asm__ (
-         "imull %3               \n\t"
-         "shrdl %4, %%edx, %%eax \n\t"
-         :"=a"(rt), "=d"(dummy)
--        :"a"(a), "rm"(b), "ci"((uint8_t)shift)
-+        :"a"(a), "rm"(b), "i"(shift & 0x1F)
-     );
-+    else
-+        __asm__ (
-+            "imull %3               \n\t"
-+            "shrdl %4, %%edx, %%eax \n\t"
-+            :"=a"(rt), "=d"(dummy)
-+            :"a"(a), "rm"(b), "c"((uint8_t)shift)
-+        );
-     return rt;
- }
-
-@@ -113,19 +121,31 @@
- // avoid +32 for shift optimization (gcc should do that ...)
- #define NEG_SSR32 NEG_SSR32
- static inline  int32_t NEG_SSR32( int32_t a, int8_t s){
-+    if (__builtin_constant_p(s))
-     __asm__ ("sarl %1, %0\n\t"
-          : "+r" (a)
--         : "ic" ((uint8_t)(-s))
-+         : "i" (-s & 0x1F)
-     );
-+    else
-+        __asm__ ("sarl %1, %0\n\t"
-+               : "+r" (a)
-+               : "c" ((uint8_t)(-s))
-+        );
-     return a;
- }
-
- #define NEG_USR32 NEG_USR32
- static inline uint32_t NEG_USR32(uint32_t a, int8_t s){
-+    if (__builtin_constant_p(s))
-     __asm__ ("shrl %1, %0\n\t"
-          : "+r" (a)
--         : "ic" ((uint8_t)(-s))
-+         : "i" (-s & 0x1F)
-     );
-+    else
-+        __asm__ ("shrl %1, %0\n\t"
-+               : "+r" (a)
-+               : "c" ((uint8_t)(-s))
-+        );
-     return a;
- }
diff --git a/extras/packaging/gnu-linux/rules/debian-qt/patches/0004-fix-binary-tokenizer.patch b/extras/packaging/gnu-linux/rules/debian-qt/patches/0004-fix-binary-tokenizer.patch
deleted file mode 100644
index 31a12b1fa4a8da82930a8515b2ba6465138764eb..0000000000000000000000000000000000000000
--- a/extras/packaging/gnu-linux/rules/debian-qt/patches/0004-fix-binary-tokenizer.patch
+++ /dev/null
@@ -1,16 +0,0 @@
- qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp b/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
-index 3488120..120e47a 100644
---- a/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
-+++ b/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
-@@ -472,7 +472,7 @@ void TokenizeBinary(TokenList& output_tokens, const char* input, size_t length)
-     }
-     catch (const DeadlyImportError& e)
-     {
--        if (!is64bits && (length > std::numeric_limits<std::uint32_t>::max())) {
-+        if (!is64bits && (length > std::numeric_limits<uint32_t>::max())) {
-             throw DeadlyImportError("The FBX file is invalid. This may be because the content is too big for this older version (", ai_to_string(version), ") of the FBX format. (", e.what(), ")");
-         }
-         throw;
diff --git a/extras/packaging/gnu-linux/rules/debian-qt/patches/0005-importlib.patch b/extras/packaging/gnu-linux/rules/debian-qt/patches/0005-importlib.patch
deleted file mode 100644
index 59c8861d908bd3590a396211d5dcf531c32523fa..0000000000000000000000000000000000000000
--- a/extras/packaging/gnu-linux/rules/debian-qt/patches/0005-importlib.patch
+++ /dev/null
@@ -1,433 +0,0 @@
- qtbase/src/corelib/debug_script.py                                                                            | 2 +-
- qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/parseTestRecord.py                       | 2 +-
- qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/test/test_monkeyYaml.py                  | 2 +-
- qtwebengine/src/3rdparty/chromium/chrome/browser/resources/PRESUBMIT_test.py                                  | 2 +-
- qtwebengine/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py                    | 2 +-
- qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil.py                                   | 2 +-
- qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil_unittest.py                          | 2 +-
- qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator_unittest.py                | 2 +-
- qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/translate_unittest.py                | 2 +-
- qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/ast_unittest.py                         | 2 +-
- qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/conditional_features_unittest.py        | 2 +-
- qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer.py                                | 2 +-
- qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer_unittest.py                       | 2 +-
- qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/parser_unittest.py                      | 2 +-
- qtwebengine/src/3rdparty/chromium/third_party/angle/scripts/angle_presubmit_utils_unittest.py                 | 2 +-
- qtwebengine/src/3rdparty/chromium/third_party/blink/PRESUBMIT.py                                              | 2 +-
- qtwebengine/src/3rdparty/chromium/third_party/flatbuffers/src/python/flatbuffers/compat.py                    | 2 +-
- qtwebengine/src/3rdparty/chromium/third_party/jinja2/environment.py                                           | 2 +-
- qtwebengine/src/3rdparty/chromium/third_party/mako/mako/compat.py                                             | 2 +-
- .../src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/converters/call_trees_test.py    | 2 +-
- qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_test.py   | 2 +-
- .../src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_testing.py        | 2 +-
- qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/api_test.py         | 2 +-
- qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/conversion_test.py  | 2 +-
- .../src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/inspect_utils_test.py       | 2 +-
- qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/templates_test.py   | 2 +-
- .../3rdparty/chromium/third_party/tflite/src/tensorflow/python/tools/api/generator/create_python_api_test.py  | 2 +-
- qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/products.py             | 2 +-
- qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/stability.py            | 2 +-
- qtwebengine/src/3rdparty/chromium/tools/sublime/ninja_options_script.py                                       | 2 +-
- qtwebengine/src/3rdparty/chromium/v8/third_party/test262-harness/src/parseTestRecord.py                       | 2 +-
- 31 files changed, 31 insertions(+), 31 deletions(-)
-
-diff --git a/qtbase/src/corelib/debug_script.py b/qtbase/src/corelib/debug_script.py
-index f6207c6104..663c8e0ac1 100644
---- a/qtbase/src/corelib/debug_script.py
-+++ b/qtbase/src/corelib/debug_script.py
-@@ -3,7 +3,7 @@
-
- import os
- import sys
--import imp
-+import importlib
-
- from distutils.version import LooseVersion
-
-diff --git a/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/parseTestRecord.py b/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/parseTestRecord.py
-index 681039d34b..a1fe56fa05 100644
---- a/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/parseTestRecord.py
-+++ b/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/parseTestRecord.py
-@@ -16,7 +16,7 @@ import subprocess
- import sys
- import tempfile
- import time
--import imp
-+import importlib
-
- # from TestCasePackagerConfig import *
-
-diff --git a/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/test/test_monkeyYaml.py b/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/test/test_monkeyYaml.py
-index 92d4e6139b..7a18e12ced 100644
---- a/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/test/test_monkeyYaml.py
-+++ b/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/test/test_monkeyYaml.py
-@@ -7,7 +7,7 @@ import unittest
-
- import os
- import yaml
--import imp
-+import importlib
-
- # add parent dir to search path
- import sys
-diff --git a/qtwebengine/src/3rdparty/chromium/chrome/browser/resources/PRESUBMIT_test.py b/qtwebengine/src/3rdparty/chromium/chrome/browser/resources/PRESUBMIT_test.py
-index c7412927c8..ad2caff318 100755
---- a/qtwebengine/src/3rdparty/chromium/chrome/browser/resources/PRESUBMIT_test.py
-+++ b/qtwebengine/src/3rdparty/chromium/chrome/browser/resources/PRESUBMIT_test.py
-@@ -5,7 +5,7 @@
-
- import os
- import sys
--import imp
-+import importlib
- import tempfile
- import unittest
- import PRESUBMIT
-diff --git a/qtwebengine/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py b/qtwebengine/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py
-index 5daee773ba..2d6b124162 100755
---- a/qtwebengine/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py
-+++ b/qtwebengine/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py
-@@ -9,7 +9,7 @@
- """
- from __future__ import print_function
- import abc
--import imp
-+import importlib
- import optparse
- import os
- import re
-diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil.py
-index bf626f5479..3fae129aaa 100644
---- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil.py
-+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil.py
-@@ -3,7 +3,7 @@
- # found in the LICENSE file.
-
- import errno
--import imp
-+import importlib
- import os.path
- import sys
-
-diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil_unittest.py
-index ff5753a291..04fc34f742 100644
---- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil_unittest.py
-+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil_unittest.py
-@@ -2,7 +2,7 @@
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-
--import imp
-+import importlib
- import os.path
- import shutil
- import sys
-diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator_unittest.py
-index 32c884a8c0..e761faa54c 100644
---- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator_unittest.py
-+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator_unittest.py
-@@ -2,7 +2,7 @@
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-
--import imp
-+import importlib
- import os.path
- import sys
- import unittest
-diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/translate_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/translate_unittest.py
-index 95a916db08..4331e2fbfa 100644
---- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/translate_unittest.py
-+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/translate_unittest.py
-@@ -2,7 +2,7 @@
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-
--import imp
-+import importlib
- import os.path
- import sys
- import unittest
-diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/ast_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/ast_unittest.py
-index 62798631db..28e9dbf705 100644
---- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/ast_unittest.py
-+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/ast_unittest.py
-@@ -2,7 +2,7 @@
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-
--import imp
-+import importlib
- import os.path
- import sys
- import unittest
-diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/conditional_features_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/conditional_features_unittest.py
-index cba249b0f3..5a4051827a 100644
---- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/conditional_features_unittest.py
-+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/conditional_features_unittest.py
-@@ -2,7 +2,7 @@
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-
--import imp
-+import importlib
- import os
- import sys
- import unittest
-diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer.py
-index 4a2fefc712..11a9879cb7 100644
---- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer.py
-+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer.py
-@@ -2,7 +2,7 @@
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-
--import imp
-+import importlib
- import os.path
- import sys
-
-diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer_unittest.py
-index cc17ae0253..bcc944f06b 100644
---- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer_unittest.py
-+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer_unittest.py
-@@ -2,7 +2,7 @@
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-
--import imp
-+import importlib
- import os.path
- import sys
- import unittest
-diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/parser_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/parser_unittest.py
-index bd72830e54..f2fdc9ae28 100644
---- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/parser_unittest.py
-+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/parser_unittest.py
-@@ -2,7 +2,7 @@
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-
--import imp
-+import importlib
- import os.path
- import sys
- import unittest
-diff --git a/qtwebengine/src/3rdparty/chromium/third_party/angle/scripts/angle_presubmit_utils_unittest.py b/qtwebengine/src/3rdparty/chromium/third_party/angle/scripts/angle_presubmit_utils_unittest.py
-index 1feb303a48..8428de61bb 100644
---- a/qtwebengine/src/3rdparty/chromium/third_party/angle/scripts/angle_presubmit_utils_unittest.py
-+++ b/qtwebengine/src/3rdparty/chromium/third_party/angle/scripts/angle_presubmit_utils_unittest.py
-@@ -6,7 +6,7 @@
- angle_presubmit_utils_unittest.py: Top-level unittest script for ANGLE presubmit checks.
- """
-
--import imp
-+import importlib
- import os
- import unittest
- from angle_presubmit_utils import *
-diff --git a/qtwebengine/src/3rdparty/chromium/third_party/blink/PRESUBMIT.py b/qtwebengine/src/3rdparty/chromium/third_party/blink/PRESUBMIT.py
-index ed4f38c67b..cac734cefa 100644
---- a/qtwebengine/src/3rdparty/chromium/third_party/blink/PRESUBMIT.py
-+++ b/qtwebengine/src/3rdparty/chromium/third_party/blink/PRESUBMIT.py
-@@ -7,7 +7,7 @@ See https://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts
- for more details about the presubmit API built into gcl.
- """
-
--import imp
-+import importlib
- import inspect
- import os
- import re
-diff --git a/qtwebengine/src/3rdparty/chromium/third_party/flatbuffers/src/python/flatbuffers/compat.py b/qtwebengine/src/3rdparty/chromium/third_party/flatbuffers/src/python/flatbuffers/compat.py
-index 0244c9787e..f535afe99c 100644
---- a/qtwebengine/src/3rdparty/chromium/third_party/flatbuffers/src/python/flatbuffers/compat.py
-+++ b/qtwebengine/src/3rdparty/chromium/third_party/flatbuffers/src/python/flatbuffers/compat.py
-@@ -32,7 +32,7 @@ if PY3:
-     memoryview_type = memoryview
-     struct_bool_decl = "?"
- else:
--    import imp
-+    import importlib
-     string_types = (unicode,)
-     if PY26 or PY27:
-         binary_types = (str,bytearray)
-diff --git a/qtwebengine/src/3rdparty/chromium/third_party/jinja2/environment.py b/qtwebengine/src/3rdparty/chromium/third_party/jinja2/environment.py
-index 8430390eea..29212205bc 100644
---- a/qtwebengine/src/3rdparty/chromium/third_party/jinja2/environment.py
-+++ b/qtwebengine/src/3rdparty/chromium/third_party/jinja2/environment.py
-@@ -732,7 +732,7 @@ class Environment(object):
-                 )
-                 py_compile = False
-             else:
--                import imp
-+                import importlib
-                 import marshal
-
-                 py_header = imp.get_magic() + u"\xff\xff\xff\xff".encode("iso-8859-15")
-diff --git a/qtwebengine/src/3rdparty/chromium/third_party/mako/mako/compat.py b/qtwebengine/src/3rdparty/chromium/third_party/mako/mako/compat.py
-index 06bb8d99f5..05089dc982 100644
---- a/qtwebengine/src/3rdparty/chromium/third_party/mako/mako/compat.py
-+++ b/qtwebengine/src/3rdparty/chromium/third_party/mako/mako/compat.py
-@@ -115,7 +115,7 @@ if py3k:
-             return module
-
- else:
--    import imp
-+    import importlib
-
-     def load_module(module_id, path):
-         fp = open(path, "rb")
-diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/converters/call_trees_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/converters/call_trees_test.py
-index a7dc683365..68b6804c78 100644
---- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/converters/call_trees_test.py
-+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/converters/call_trees_test.py
-@@ -14,7 +14,7 @@
- # ==============================================================================
- """Tests for call_trees module."""
-
--import imp
-+import importlib
-
- from tensorflow.python.autograph.converters import call_trees
- from tensorflow.python.autograph.converters import functions
-diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_test.py
-index 81a7fde808..1370f900fd 100644
---- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_test.py
-+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_test.py
-@@ -14,7 +14,7 @@
- # ==============================================================================
- """Tests for converter module."""
-
--import imp
-+import importlib
-
- from tensorflow.python.autograph.core import converter
- from tensorflow.python.autograph.core import converter_testing
-diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_testing.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_testing.py
-index b93cbb627b..452ec71f5b 100644
---- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_testing.py
-+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_testing.py
-@@ -15,7 +15,7 @@
- """Base class for tests in this module."""
-
- import contextlib
--import imp
-+import importlib
- import inspect
- import sys
-
-diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/api_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/api_test.py
-index 9a62d7c0d2..7ec4fa6dca 100644
---- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/api_test.py
-+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/api_test.py
-@@ -19,7 +19,7 @@ import collections
- import contextlib
- import functools
- import gc
--import imp
-+import importlib
- import inspect
- import os
- import re
-diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/conversion_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/conversion_test.py
-index 852af3efe7..6456c50446 100644
---- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/conversion_test.py
-+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/conversion_test.py
-@@ -14,7 +14,7 @@
- # ==============================================================================
- """Tests for conversion module."""
-
--import imp
-+import importlib
- import sys
- import types
- import weakref
-diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/inspect_utils_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/inspect_utils_test.py
-index a50a64534a..ba0f31afa2 100644
---- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/inspect_utils_test.py
-+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/inspect_utils_test.py
-@@ -17,7 +17,7 @@
- import abc
- import collections
- import functools
--import imp
-+import importlib
- import textwrap
-
- import six
-diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/templates_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/templates_test.py
-index 29f38d853a..7ca88fa371 100644
---- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/templates_test.py
-+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/templates_test.py
-@@ -14,7 +14,7 @@
- # ==============================================================================
- """Tests for templates module."""
-
--import imp
-+import importlib
-
- from absl.testing import parameterized
- import gast
-diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/tools/api/generator/create_python_api_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/tools/api/generator/create_python_api_test.py
-index e46460574b..a40fea6568 100644
---- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/tools/api/generator/create_python_api_test.py
-+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/tools/api/generator/create_python_api_test.py
-@@ -14,7 +14,7 @@
- # =============================================================================
- """Tests for create_python_api."""
-
--import imp
-+import importlib
- import sys
-
- from tensorflow.python.platform import test
-diff --git a/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/products.py b/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/products.py
-index 73d1742714..ea77dd7647 100644
---- a/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/products.py
-+++ b/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/products.py
-@@ -1,5 +1,5 @@
- import importlib
--import imp
-+import importlib
-
- from .browsers import product_list
-
-diff --git a/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/stability.py b/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/stability.py
-index 6a744472b5..9175cb5d34 100644
---- a/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/stability.py
-+++ b/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/stability.py
-@@ -1,6 +1,6 @@
- import copy
- import functools
--import imp
-+import importlib
- import io
- import os
- from collections import OrderedDict, defaultdict
-diff --git a/qtwebengine/src/3rdparty/chromium/tools/sublime/ninja_options_script.py b/qtwebengine/src/3rdparty/chromium/tools/sublime/ninja_options_script.py
-index 6912b6f3c0..7d851f7f76 100755
---- a/qtwebengine/src/3rdparty/chromium/tools/sublime/ninja_options_script.py
-+++ b/qtwebengine/src/3rdparty/chromium/tools/sublime/ninja_options_script.py
-@@ -16,7 +16,7 @@
-
- from __future__ import print_function
-
--import imp
-+import importlib
- import optparse
- import os
- import pipes
-diff --git a/qtwebengine/src/3rdparty/chromium/v8/third_party/test262-harness/src/parseTestRecord.py b/qtwebengine/src/3rdparty/chromium/v8/third_party/test262-harness/src/parseTestRecord.py
-index 1c2aba80af..55260d697e 100644
---- a/qtwebengine/src/3rdparty/chromium/v8/third_party/test262-harness/src/parseTestRecord.py
-+++ b/qtwebengine/src/3rdparty/chromium/v8/third_party/test262-harness/src/parseTestRecord.py
-@@ -10,7 +10,7 @@ from __future__ import print_function
-
- import os
- import re
--import imp
-+import importlib
-
- from _monkeyYaml import load as yamlLoad
-
diff --git a/extras/packaging/gnu-linux/rules/debian-qt/patches/0015-remove-deleted-xkb-keys.patch b/extras/packaging/gnu-linux/rules/debian-qt/patches/0015-remove-deleted-xkb-keys.patch
deleted file mode 100644
index a3ef5b389a5debc50a1f35a5aa351ced16fc7d3e..0000000000000000000000000000000000000000
--- a/extras/packaging/gnu-linux/rules/debian-qt/patches/0015-remove-deleted-xkb-keys.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-diff --git a/qtbase/src/corelib/global/qnamespace.h b/qtbase/src/corelib/global/qnamespace.h
-index 8a2769a3ed..584d3620c9 100644
---- a/qtbase/src/corelib/global/qnamespace.h
-+++ b/qtbase/src/corelib/global/qnamespace.h
-@@ -832,10 +832,6 @@ namespace Qt {
-         Key_Dead_Small_Schwa    = 0x0100128a,
-         Key_Dead_Capital_Schwa  = 0x0100128b,
-         Key_Dead_Greek          = 0x0100128c,
--        Key_Dead_Lowline        = 0x01001290,
--        Key_Dead_Aboveverticalline = 0x01001291,
--        Key_Dead_Belowverticalline = 0x01001292,
--        Key_Dead_Longsolidusoverlay = 0x01001293,
-
-         // multimedia/internet keys - ignored by default - see QKeyEvent c'tor
-         Key_Back  = 0x01000061,
-diff --git a/qtbase/src/corelib/global/qnamespace.qdoc b/qtbase/src/corelib/global/qnamespace.qdoc
-index 78c69176d8..1623517b5a 100644
---- a/qtbase/src/corelib/global/qnamespace.qdoc
-+++ b/qtbase/src/corelib/global/qnamespace.qdoc
-@@ -1654,10 +1654,6 @@
-     \value Key_Dead_Small_Schwa
-     \value Key_Dead_Capital_Schwa
-     \value Key_Dead_Greek
--    \value Key_Dead_Lowline
--    \value Key_Dead_Aboveverticalline
--    \value Key_Dead_Belowverticalline
--    \value Key_Dead_Longsolidusoverlay
-     \value Key_Back
-     \value Key_Forward
-     \value Key_Stop
-diff --git a/qtbase/src/gui/platform/unix/qxkbcommon.cpp b/qtbase/src/gui/platform/unix/qxkbcommon.cpp
-index fc014b38e2..af1cbbd42a 100644
---- a/qtbase/src/gui/platform/unix/qxkbcommon.cpp
-+++ b/qtbase/src/gui/platform/unix/qxkbcommon.cpp
-@@ -239,10 +239,6 @@ static constexpr const auto KeyTbl = qMakeArray(
-         Xkb2Qt<XKB_KEY_dead_small_schwa,        Qt::Key_Dead_Small_Schwa>,
-         Xkb2Qt<XKB_KEY_dead_capital_schwa,      Qt::Key_Dead_Capital_Schwa>,
-         Xkb2Qt<XKB_KEY_dead_greek,              Qt::Key_Dead_Greek>,
--        Xkb2Qt<XKB_KEY_dead_lowline,            Qt::Key_Dead_Lowline>,
--        Xkb2Qt<XKB_KEY_dead_aboveverticalline,  Qt::Key_Dead_Aboveverticalline>,
--        Xkb2Qt<XKB_KEY_dead_belowverticalline,  Qt::Key_Dead_Belowverticalline>,
--        Xkb2Qt<XKB_KEY_dead_longsolidusoverlay, Qt::Key_Dead_Longsolidusoverlay>,
-
-         // Special keys from X.org - This include multimedia keys,
-         // wireless/bluetooth/uwb keys, special launcher keys, etc.
diff --git a/extras/packaging/gnu-linux/rules/debian-qt/patches/0016-fix-vaapi.patch b/extras/packaging/gnu-linux/rules/debian-qt/patches/0016-fix-vaapi.patch
deleted file mode 100644
index 9690c4cd3daa1842a13161358aba464e53d987f2..0000000000000000000000000000000000000000
--- a/extras/packaging/gnu-linux/rules/debian-qt/patches/0016-fix-vaapi.patch
+++ /dev/null
@@ -1,29 +0,0 @@
- qtmultimedia/src/plugins/multimedia/ffmpeg/qffmpegvaapisymbols.cpp | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/qtmultimedia/src/plugins/multimedia/ffmpeg/qffmpegvaapisymbols.cpp b/qtmultimedia/src/plugins/multimedia/ffmpeg/qffmpegvaapisymbols.cpp
-index ec212f5a35..58bf4dce7d 100644
---- a/qtmultimedia/src/plugins/multimedia/ffmpeg/qffmpegvaapisymbols.cpp
-+++ b/qtmultimedia/src/plugins/multimedia/ffmpeg/qffmpegvaapisymbols.cpp
-@@ -37,7 +37,10 @@ static Libs loadLibs()
-     return {};
- }
- 
--constexpr size_t symbolsCount = 39
-+constexpr size_t symbolsCount = 38
-+#if VA_CHECK_VERSION(1, 9, 0)
-+        + 1
-+#endif
- #ifdef DYNAMIC_RESOLVE_VA_DRM_SYMBOLS
-         + 1
- #endif
-@@ -79,7 +82,9 @@ DEFINE_FUNC(vaEndPicture, 2, VA_STATUS_ERROR_OPERATION_FAILED);
- DEFINE_FUNC(vaCreateBuffer, 7, VA_STATUS_ERROR_OPERATION_FAILED);
- DEFINE_FUNC(vaMapBuffer, 3, VA_STATUS_ERROR_OPERATION_FAILED);
- DEFINE_FUNC(vaUnmapBuffer, 2, VA_STATUS_ERROR_OPERATION_FAILED);
-+#if VA_CHECK_VERSION(1, 9, 0)
- DEFINE_FUNC(vaSyncBuffer, 3, VA_STATUS_ERROR_OPERATION_FAILED);
-+#endif
- DEFINE_FUNC(vaDestroyBuffer, 2, VA_STATUS_ERROR_OPERATION_FAILED);
- 
- DEFINE_FUNC(vaCreateSurfaces, 8, VA_STATUS_ERROR_OPERATION_FAILED);
diff --git a/extras/packaging/gnu-linux/rules/debian-qt/patches/series b/extras/packaging/gnu-linux/rules/debian-qt/patches/series
index 705cea850c88e74a6fb2b10f45de0df4ac32adfa..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
--- a/extras/packaging/gnu-linux/rules/debian-qt/patches/series
+++ b/extras/packaging/gnu-linux/rules/debian-qt/patches/series
@@ -1,4 +0,0 @@
-0001-fix-mathops.patch
-0002-fix-binary-tokenizer.patch
-0015-remove-deleted-xkb-keys.patch
-0016-fix-vaapi.patch
\ No newline at end of file
diff --git a/extras/packaging/gnu-linux/rules/debian/control b/extras/packaging/gnu-linux/rules/debian/control
index 86d17d1170c90d3adb41f549b5df9b3c58428862..239bac963917f4031287ff78e9eaa495306d328a 100644
--- a/extras/packaging/gnu-linux/rules/debian/control
+++ b/extras/packaging/gnu-linux/rules/debian/control
@@ -68,7 +68,7 @@ Depends: gnupg,
 Replaces: jami,
           jami-libclient,
           jami-daemon,
-          libqt-jami (>= 6.5.3),
+          libqt-jami (>= 6.6.1),
 Conflicts: jami,
            jami-libclient,
            jami-libclient-gnome,
@@ -84,7 +84,7 @@ Architecture: any
 Depends: ${shlibs:Depends},
          ${misc:Depends},
          jami-daemon (=${binary:Version}),
-         libqt-jami (>= 6.5.3)
+         libqt-jami (>= 6.6.1)
 Provides: jami-qt
 Replaces: jami-all,
           jami-libclient (<= 20220516.0214.9b42ad3~dfsg1-1)
diff --git a/extras/packaging/gnu-linux/rules/rpm/jami-libqt.spec b/extras/packaging/gnu-linux/rules/rpm/jami-libqt.spec
index 0cc87e1e3a7b4c54f294945fae929eb343044f90..125b108cbf594983d8ceddbdd175d0c8bd21383e 100644
--- a/extras/packaging/gnu-linux/rules/rpm/jami-libqt.spec
+++ b/extras/packaging/gnu-linux/rules/rpm/jami-libqt.spec
@@ -26,10 +26,6 @@ License:       GPLv3+
 Vendor:        Savoir-faire Linux Inc.
 URL:           https://jami.net/
 Source:        jami-libqt-%{version}.tar.xz
-Patch0:        0001-fix-mathops.patch
-Patch1:        0002-fix-binary-tokenizer.patch
-Patch2:        0015-remove-deleted-xkb-keys.patch
-Patch3:        0016-fix-vaapi.patch
 
 %global gst 0.10
 %if 0%{?fedora} || 0%{?rhel} > 7
@@ -65,10 +61,6 @@ This package contains Qt libraries for Jami.
 
 %prep
 %setup -n qt-everywhere-src-%{version}
-%patch0 -p1
-%patch1 -p1
-%patch2 -p1
-%patch3 -p1
 
 %build
 echo "Building Qt using %{job_count} parallel jobs"
diff --git a/extras/packaging/gnu-linux/rules/rpm/patches/0001-fix-mathops.patch b/extras/packaging/gnu-linux/rules/rpm/patches/0001-fix-mathops.patch
deleted file mode 100644
index 8ed8490992258dc0e63a8578b0a6804045a20950..0000000000000000000000000000000000000000
--- a/extras/packaging/gnu-linux/rules/rpm/patches/0001-fix-mathops.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From ecae5d93b0a89e2b8c16a2227b2d176f58579d04 Mon Sep 17 00:00:00 2001
-From: Rémi Denis-Courmont <remi@remlab.net>
-Date: Sun, 16 Jul 2023 18:18:02 +0300
-Subject: [PATCH] Fix ffmpeg assembly with newer binutil
-
-avcodec/x86/mathops: clip constants used with shift instructions within inline assembly
-
-Fixes assembling with binutil as >= 2.41
-
-FFmpeg commit effadce6c756247ea8bae32dc13bb3e6f464f0eb.
-
-Deals with: "Error: operand type mismatch for `shr'"
-
-Fixes: QTBUG-116649
-Change-Id: I094e8c23fed4a61fba3f1e3a9c73c016d129d830
-Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/495990
-Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
-(cherry picked from commit 29354c7c7def7bdc66bcd25d401677fd9421f657)
-Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/509219
-Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
----
-
-diff --git a/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h b/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
-index 6298f5e..ca7e2df 100644
---- a/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
-+++ b/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
-@@ -35,12 +35,20 @@
- static av_always_inline av_const int MULL(int a, int b, unsigned shift)
- {
-     int rt, dummy;
-+    if (__builtin_constant_p(shift))
-     __asm__ (
-         "imull %3               \n\t"
-         "shrdl %4, %%edx, %%eax \n\t"
-         :"=a"(rt), "=d"(dummy)
--        :"a"(a), "rm"(b), "ci"((uint8_t)shift)
-+        :"a"(a), "rm"(b), "i"(shift & 0x1F)
-     );
-+    else
-+        __asm__ (
-+            "imull %3               \n\t"
-+            "shrdl %4, %%edx, %%eax \n\t"
-+            :"=a"(rt), "=d"(dummy)
-+            :"a"(a), "rm"(b), "c"((uint8_t)shift)
-+        );
-     return rt;
- }
-
-@@ -113,19 +121,31 @@
- // avoid +32 for shift optimization (gcc should do that ...)
- #define NEG_SSR32 NEG_SSR32
- static inline  int32_t NEG_SSR32( int32_t a, int8_t s){
-+    if (__builtin_constant_p(s))
-     __asm__ ("sarl %1, %0\n\t"
-          : "+r" (a)
--         : "ic" ((uint8_t)(-s))
-+         : "i" (-s & 0x1F)
-     );
-+    else
-+        __asm__ ("sarl %1, %0\n\t"
-+               : "+r" (a)
-+               : "c" ((uint8_t)(-s))
-+        );
-     return a;
- }
-
- #define NEG_USR32 NEG_USR32
- static inline uint32_t NEG_USR32(uint32_t a, int8_t s){
-+    if (__builtin_constant_p(s))
-     __asm__ ("shrl %1, %0\n\t"
-          : "+r" (a)
--         : "ic" ((uint8_t)(-s))
-+         : "i" (-s & 0x1F)
-     );
-+    else
-+        __asm__ ("shrl %1, %0\n\t"
-+               : "+r" (a)
-+               : "c" ((uint8_t)(-s))
-+        );
-     return a;
- }
diff --git a/extras/packaging/gnu-linux/rules/rpm/patches/0002-fix-binary-tokenizer.patch b/extras/packaging/gnu-linux/rules/rpm/patches/0002-fix-binary-tokenizer.patch
deleted file mode 100644
index 31a12b1fa4a8da82930a8515b2ba6465138764eb..0000000000000000000000000000000000000000
--- a/extras/packaging/gnu-linux/rules/rpm/patches/0002-fix-binary-tokenizer.patch
+++ /dev/null
@@ -1,16 +0,0 @@
- qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp b/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
-index 3488120..120e47a 100644
---- a/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
-+++ b/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
-@@ -472,7 +472,7 @@ void TokenizeBinary(TokenList& output_tokens, const char* input, size_t length)
-     }
-     catch (const DeadlyImportError& e)
-     {
--        if (!is64bits && (length > std::numeric_limits<std::uint32_t>::max())) {
-+        if (!is64bits && (length > std::numeric_limits<uint32_t>::max())) {
-             throw DeadlyImportError("The FBX file is invalid. This may be because the content is too big for this older version (", ai_to_string(version), ") of the FBX format. (", e.what(), ")");
-         }
-         throw;
diff --git a/extras/packaging/gnu-linux/rules/rpm/patches/0003-fix-mathops.patch b/extras/packaging/gnu-linux/rules/rpm/patches/0003-fix-mathops.patch
deleted file mode 100644
index 8ed8490992258dc0e63a8578b0a6804045a20950..0000000000000000000000000000000000000000
--- a/extras/packaging/gnu-linux/rules/rpm/patches/0003-fix-mathops.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From ecae5d93b0a89e2b8c16a2227b2d176f58579d04 Mon Sep 17 00:00:00 2001
-From: Rémi Denis-Courmont <remi@remlab.net>
-Date: Sun, 16 Jul 2023 18:18:02 +0300
-Subject: [PATCH] Fix ffmpeg assembly with newer binutil
-
-avcodec/x86/mathops: clip constants used with shift instructions within inline assembly
-
-Fixes assembling with binutil as >= 2.41
-
-FFmpeg commit effadce6c756247ea8bae32dc13bb3e6f464f0eb.
-
-Deals with: "Error: operand type mismatch for `shr'"
-
-Fixes: QTBUG-116649
-Change-Id: I094e8c23fed4a61fba3f1e3a9c73c016d129d830
-Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/495990
-Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
-(cherry picked from commit 29354c7c7def7bdc66bcd25d401677fd9421f657)
-Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/509219
-Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
----
-
-diff --git a/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h b/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
-index 6298f5e..ca7e2df 100644
---- a/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
-+++ b/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
-@@ -35,12 +35,20 @@
- static av_always_inline av_const int MULL(int a, int b, unsigned shift)
- {
-     int rt, dummy;
-+    if (__builtin_constant_p(shift))
-     __asm__ (
-         "imull %3               \n\t"
-         "shrdl %4, %%edx, %%eax \n\t"
-         :"=a"(rt), "=d"(dummy)
--        :"a"(a), "rm"(b), "ci"((uint8_t)shift)
-+        :"a"(a), "rm"(b), "i"(shift & 0x1F)
-     );
-+    else
-+        __asm__ (
-+            "imull %3               \n\t"
-+            "shrdl %4, %%edx, %%eax \n\t"
-+            :"=a"(rt), "=d"(dummy)
-+            :"a"(a), "rm"(b), "c"((uint8_t)shift)
-+        );
-     return rt;
- }
-
-@@ -113,19 +121,31 @@
- // avoid +32 for shift optimization (gcc should do that ...)
- #define NEG_SSR32 NEG_SSR32
- static inline  int32_t NEG_SSR32( int32_t a, int8_t s){
-+    if (__builtin_constant_p(s))
-     __asm__ ("sarl %1, %0\n\t"
-          : "+r" (a)
--         : "ic" ((uint8_t)(-s))
-+         : "i" (-s & 0x1F)
-     );
-+    else
-+        __asm__ ("sarl %1, %0\n\t"
-+               : "+r" (a)
-+               : "c" ((uint8_t)(-s))
-+        );
-     return a;
- }
-
- #define NEG_USR32 NEG_USR32
- static inline uint32_t NEG_USR32(uint32_t a, int8_t s){
-+    if (__builtin_constant_p(s))
-     __asm__ ("shrl %1, %0\n\t"
-          : "+r" (a)
--         : "ic" ((uint8_t)(-s))
-+         : "i" (-s & 0x1F)
-     );
-+    else
-+        __asm__ ("shrl %1, %0\n\t"
-+               : "+r" (a)
-+               : "c" ((uint8_t)(-s))
-+        );
-     return a;
- }
diff --git a/extras/packaging/gnu-linux/rules/rpm/patches/0004-fix-binary-tokenizer.patch b/extras/packaging/gnu-linux/rules/rpm/patches/0004-fix-binary-tokenizer.patch
deleted file mode 100644
index 31a12b1fa4a8da82930a8515b2ba6465138764eb..0000000000000000000000000000000000000000
--- a/extras/packaging/gnu-linux/rules/rpm/patches/0004-fix-binary-tokenizer.patch
+++ /dev/null
@@ -1,16 +0,0 @@
- qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp b/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
-index 3488120..120e47a 100644
---- a/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
-+++ b/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
-@@ -472,7 +472,7 @@ void TokenizeBinary(TokenList& output_tokens, const char* input, size_t length)
-     }
-     catch (const DeadlyImportError& e)
-     {
--        if (!is64bits && (length > std::numeric_limits<std::uint32_t>::max())) {
-+        if (!is64bits && (length > std::numeric_limits<uint32_t>::max())) {
-             throw DeadlyImportError("The FBX file is invalid. This may be because the content is too big for this older version (", ai_to_string(version), ") of the FBX format. (", e.what(), ")");
-         }
-         throw;
diff --git a/extras/packaging/gnu-linux/rules/rpm/patches/0005-importlib.patch b/extras/packaging/gnu-linux/rules/rpm/patches/0005-importlib.patch
deleted file mode 100644
index 59c8861d908bd3590a396211d5dcf531c32523fa..0000000000000000000000000000000000000000
--- a/extras/packaging/gnu-linux/rules/rpm/patches/0005-importlib.patch
+++ /dev/null
@@ -1,433 +0,0 @@
- qtbase/src/corelib/debug_script.py                                                                            | 2 +-
- qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/parseTestRecord.py                       | 2 +-
- qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/test/test_monkeyYaml.py                  | 2 +-
- qtwebengine/src/3rdparty/chromium/chrome/browser/resources/PRESUBMIT_test.py                                  | 2 +-
- qtwebengine/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py                    | 2 +-
- qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil.py                                   | 2 +-
- qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil_unittest.py                          | 2 +-
- qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator_unittest.py                | 2 +-
- qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/translate_unittest.py                | 2 +-
- qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/ast_unittest.py                         | 2 +-
- qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/conditional_features_unittest.py        | 2 +-
- qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer.py                                | 2 +-
- qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer_unittest.py                       | 2 +-
- qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/parser_unittest.py                      | 2 +-
- qtwebengine/src/3rdparty/chromium/third_party/angle/scripts/angle_presubmit_utils_unittest.py                 | 2 +-
- qtwebengine/src/3rdparty/chromium/third_party/blink/PRESUBMIT.py                                              | 2 +-
- qtwebengine/src/3rdparty/chromium/third_party/flatbuffers/src/python/flatbuffers/compat.py                    | 2 +-
- qtwebengine/src/3rdparty/chromium/third_party/jinja2/environment.py                                           | 2 +-
- qtwebengine/src/3rdparty/chromium/third_party/mako/mako/compat.py                                             | 2 +-
- .../src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/converters/call_trees_test.py    | 2 +-
- qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_test.py   | 2 +-
- .../src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_testing.py        | 2 +-
- qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/api_test.py         | 2 +-
- qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/conversion_test.py  | 2 +-
- .../src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/inspect_utils_test.py       | 2 +-
- qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/templates_test.py   | 2 +-
- .../3rdparty/chromium/third_party/tflite/src/tensorflow/python/tools/api/generator/create_python_api_test.py  | 2 +-
- qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/products.py             | 2 +-
- qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/stability.py            | 2 +-
- qtwebengine/src/3rdparty/chromium/tools/sublime/ninja_options_script.py                                       | 2 +-
- qtwebengine/src/3rdparty/chromium/v8/third_party/test262-harness/src/parseTestRecord.py                       | 2 +-
- 31 files changed, 31 insertions(+), 31 deletions(-)
-
-diff --git a/qtbase/src/corelib/debug_script.py b/qtbase/src/corelib/debug_script.py
-index f6207c6104..663c8e0ac1 100644
---- a/qtbase/src/corelib/debug_script.py
-+++ b/qtbase/src/corelib/debug_script.py
-@@ -3,7 +3,7 @@
-
- import os
- import sys
--import imp
-+import importlib
-
- from distutils.version import LooseVersion
-
-diff --git a/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/parseTestRecord.py b/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/parseTestRecord.py
-index 681039d34b..a1fe56fa05 100644
---- a/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/parseTestRecord.py
-+++ b/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/parseTestRecord.py
-@@ -16,7 +16,7 @@ import subprocess
- import sys
- import tempfile
- import time
--import imp
-+import importlib
-
- # from TestCasePackagerConfig import *
-
-diff --git a/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/test/test_monkeyYaml.py b/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/test/test_monkeyYaml.py
-index 92d4e6139b..7a18e12ced 100644
---- a/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/test/test_monkeyYaml.py
-+++ b/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/test/test_monkeyYaml.py
-@@ -7,7 +7,7 @@ import unittest
-
- import os
- import yaml
--import imp
-+import importlib
-
- # add parent dir to search path
- import sys
-diff --git a/qtwebengine/src/3rdparty/chromium/chrome/browser/resources/PRESUBMIT_test.py b/qtwebengine/src/3rdparty/chromium/chrome/browser/resources/PRESUBMIT_test.py
-index c7412927c8..ad2caff318 100755
---- a/qtwebengine/src/3rdparty/chromium/chrome/browser/resources/PRESUBMIT_test.py
-+++ b/qtwebengine/src/3rdparty/chromium/chrome/browser/resources/PRESUBMIT_test.py
-@@ -5,7 +5,7 @@
-
- import os
- import sys
--import imp
-+import importlib
- import tempfile
- import unittest
- import PRESUBMIT
-diff --git a/qtwebengine/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py b/qtwebengine/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py
-index 5daee773ba..2d6b124162 100755
---- a/qtwebengine/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py
-+++ b/qtwebengine/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py
-@@ -9,7 +9,7 @@
- """
- from __future__ import print_function
- import abc
--import imp
-+import importlib
- import optparse
- import os
- import re
-diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil.py
-index bf626f5479..3fae129aaa 100644
---- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil.py
-+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil.py
-@@ -3,7 +3,7 @@
- # found in the LICENSE file.
-
- import errno
--import imp
-+import importlib
- import os.path
- import sys
-
-diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil_unittest.py
-index ff5753a291..04fc34f742 100644
---- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil_unittest.py
-+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil_unittest.py
-@@ -2,7 +2,7 @@
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-
--import imp
-+import importlib
- import os.path
- import shutil
- import sys
-diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator_unittest.py
-index 32c884a8c0..e761faa54c 100644
---- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator_unittest.py
-+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator_unittest.py
-@@ -2,7 +2,7 @@
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-
--import imp
-+import importlib
- import os.path
- import sys
- import unittest
-diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/translate_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/translate_unittest.py
-index 95a916db08..4331e2fbfa 100644
---- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/translate_unittest.py
-+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/translate_unittest.py
-@@ -2,7 +2,7 @@
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-
--import imp
-+import importlib
- import os.path
- import sys
- import unittest
-diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/ast_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/ast_unittest.py
-index 62798631db..28e9dbf705 100644
---- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/ast_unittest.py
-+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/ast_unittest.py
-@@ -2,7 +2,7 @@
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-
--import imp
-+import importlib
- import os.path
- import sys
- import unittest
-diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/conditional_features_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/conditional_features_unittest.py
-index cba249b0f3..5a4051827a 100644
---- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/conditional_features_unittest.py
-+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/conditional_features_unittest.py
-@@ -2,7 +2,7 @@
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-
--import imp
-+import importlib
- import os
- import sys
- import unittest
-diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer.py
-index 4a2fefc712..11a9879cb7 100644
---- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer.py
-+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer.py
-@@ -2,7 +2,7 @@
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-
--import imp
-+import importlib
- import os.path
- import sys
-
-diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer_unittest.py
-index cc17ae0253..bcc944f06b 100644
---- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer_unittest.py
-+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer_unittest.py
-@@ -2,7 +2,7 @@
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-
--import imp
-+import importlib
- import os.path
- import sys
- import unittest
-diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/parser_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/parser_unittest.py
-index bd72830e54..f2fdc9ae28 100644
---- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/parser_unittest.py
-+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/parser_unittest.py
-@@ -2,7 +2,7 @@
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-
--import imp
-+import importlib
- import os.path
- import sys
- import unittest
-diff --git a/qtwebengine/src/3rdparty/chromium/third_party/angle/scripts/angle_presubmit_utils_unittest.py b/qtwebengine/src/3rdparty/chromium/third_party/angle/scripts/angle_presubmit_utils_unittest.py
-index 1feb303a48..8428de61bb 100644
---- a/qtwebengine/src/3rdparty/chromium/third_party/angle/scripts/angle_presubmit_utils_unittest.py
-+++ b/qtwebengine/src/3rdparty/chromium/third_party/angle/scripts/angle_presubmit_utils_unittest.py
-@@ -6,7 +6,7 @@
- angle_presubmit_utils_unittest.py: Top-level unittest script for ANGLE presubmit checks.
- """
-
--import imp
-+import importlib
- import os
- import unittest
- from angle_presubmit_utils import *
-diff --git a/qtwebengine/src/3rdparty/chromium/third_party/blink/PRESUBMIT.py b/qtwebengine/src/3rdparty/chromium/third_party/blink/PRESUBMIT.py
-index ed4f38c67b..cac734cefa 100644
---- a/qtwebengine/src/3rdparty/chromium/third_party/blink/PRESUBMIT.py
-+++ b/qtwebengine/src/3rdparty/chromium/third_party/blink/PRESUBMIT.py
-@@ -7,7 +7,7 @@ See https://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts
- for more details about the presubmit API built into gcl.
- """
-
--import imp
-+import importlib
- import inspect
- import os
- import re
-diff --git a/qtwebengine/src/3rdparty/chromium/third_party/flatbuffers/src/python/flatbuffers/compat.py b/qtwebengine/src/3rdparty/chromium/third_party/flatbuffers/src/python/flatbuffers/compat.py
-index 0244c9787e..f535afe99c 100644
---- a/qtwebengine/src/3rdparty/chromium/third_party/flatbuffers/src/python/flatbuffers/compat.py
-+++ b/qtwebengine/src/3rdparty/chromium/third_party/flatbuffers/src/python/flatbuffers/compat.py
-@@ -32,7 +32,7 @@ if PY3:
-     memoryview_type = memoryview
-     struct_bool_decl = "?"
- else:
--    import imp
-+    import importlib
-     string_types = (unicode,)
-     if PY26 or PY27:
-         binary_types = (str,bytearray)
-diff --git a/qtwebengine/src/3rdparty/chromium/third_party/jinja2/environment.py b/qtwebengine/src/3rdparty/chromium/third_party/jinja2/environment.py
-index 8430390eea..29212205bc 100644
---- a/qtwebengine/src/3rdparty/chromium/third_party/jinja2/environment.py
-+++ b/qtwebengine/src/3rdparty/chromium/third_party/jinja2/environment.py
-@@ -732,7 +732,7 @@ class Environment(object):
-                 )
-                 py_compile = False
-             else:
--                import imp
-+                import importlib
-                 import marshal
-
-                 py_header = imp.get_magic() + u"\xff\xff\xff\xff".encode("iso-8859-15")
-diff --git a/qtwebengine/src/3rdparty/chromium/third_party/mako/mako/compat.py b/qtwebengine/src/3rdparty/chromium/third_party/mako/mako/compat.py
-index 06bb8d99f5..05089dc982 100644
---- a/qtwebengine/src/3rdparty/chromium/third_party/mako/mako/compat.py
-+++ b/qtwebengine/src/3rdparty/chromium/third_party/mako/mako/compat.py
-@@ -115,7 +115,7 @@ if py3k:
-             return module
-
- else:
--    import imp
-+    import importlib
-
-     def load_module(module_id, path):
-         fp = open(path, "rb")
-diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/converters/call_trees_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/converters/call_trees_test.py
-index a7dc683365..68b6804c78 100644
---- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/converters/call_trees_test.py
-+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/converters/call_trees_test.py
-@@ -14,7 +14,7 @@
- # ==============================================================================
- """Tests for call_trees module."""
-
--import imp
-+import importlib
-
- from tensorflow.python.autograph.converters import call_trees
- from tensorflow.python.autograph.converters import functions
-diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_test.py
-index 81a7fde808..1370f900fd 100644
---- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_test.py
-+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_test.py
-@@ -14,7 +14,7 @@
- # ==============================================================================
- """Tests for converter module."""
-
--import imp
-+import importlib
-
- from tensorflow.python.autograph.core import converter
- from tensorflow.python.autograph.core import converter_testing
-diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_testing.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_testing.py
-index b93cbb627b..452ec71f5b 100644
---- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_testing.py
-+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_testing.py
-@@ -15,7 +15,7 @@
- """Base class for tests in this module."""
-
- import contextlib
--import imp
-+import importlib
- import inspect
- import sys
-
-diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/api_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/api_test.py
-index 9a62d7c0d2..7ec4fa6dca 100644
---- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/api_test.py
-+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/api_test.py
-@@ -19,7 +19,7 @@ import collections
- import contextlib
- import functools
- import gc
--import imp
-+import importlib
- import inspect
- import os
- import re
-diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/conversion_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/conversion_test.py
-index 852af3efe7..6456c50446 100644
---- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/conversion_test.py
-+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/conversion_test.py
-@@ -14,7 +14,7 @@
- # ==============================================================================
- """Tests for conversion module."""
-
--import imp
-+import importlib
- import sys
- import types
- import weakref
-diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/inspect_utils_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/inspect_utils_test.py
-index a50a64534a..ba0f31afa2 100644
---- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/inspect_utils_test.py
-+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/inspect_utils_test.py
-@@ -17,7 +17,7 @@
- import abc
- import collections
- import functools
--import imp
-+import importlib
- import textwrap
-
- import six
-diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/templates_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/templates_test.py
-index 29f38d853a..7ca88fa371 100644
---- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/templates_test.py
-+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/templates_test.py
-@@ -14,7 +14,7 @@
- # ==============================================================================
- """Tests for templates module."""
-
--import imp
-+import importlib
-
- from absl.testing import parameterized
- import gast
-diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/tools/api/generator/create_python_api_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/tools/api/generator/create_python_api_test.py
-index e46460574b..a40fea6568 100644
---- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/tools/api/generator/create_python_api_test.py
-+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/tools/api/generator/create_python_api_test.py
-@@ -14,7 +14,7 @@
- # =============================================================================
- """Tests for create_python_api."""
-
--import imp
-+import importlib
- import sys
-
- from tensorflow.python.platform import test
-diff --git a/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/products.py b/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/products.py
-index 73d1742714..ea77dd7647 100644
---- a/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/products.py
-+++ b/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/products.py
-@@ -1,5 +1,5 @@
- import importlib
--import imp
-+import importlib
-
- from .browsers import product_list
-
-diff --git a/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/stability.py b/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/stability.py
-index 6a744472b5..9175cb5d34 100644
---- a/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/stability.py
-+++ b/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/stability.py
-@@ -1,6 +1,6 @@
- import copy
- import functools
--import imp
-+import importlib
- import io
- import os
- from collections import OrderedDict, defaultdict
-diff --git a/qtwebengine/src/3rdparty/chromium/tools/sublime/ninja_options_script.py b/qtwebengine/src/3rdparty/chromium/tools/sublime/ninja_options_script.py
-index 6912b6f3c0..7d851f7f76 100755
---- a/qtwebengine/src/3rdparty/chromium/tools/sublime/ninja_options_script.py
-+++ b/qtwebengine/src/3rdparty/chromium/tools/sublime/ninja_options_script.py
-@@ -16,7 +16,7 @@
-
- from __future__ import print_function
-
--import imp
-+import importlib
- import optparse
- import os
- import pipes
-diff --git a/qtwebengine/src/3rdparty/chromium/v8/third_party/test262-harness/src/parseTestRecord.py b/qtwebengine/src/3rdparty/chromium/v8/third_party/test262-harness/src/parseTestRecord.py
-index 1c2aba80af..55260d697e 100644
---- a/qtwebengine/src/3rdparty/chromium/v8/third_party/test262-harness/src/parseTestRecord.py
-+++ b/qtwebengine/src/3rdparty/chromium/v8/third_party/test262-harness/src/parseTestRecord.py
-@@ -10,7 +10,7 @@ from __future__ import print_function
-
- import os
- import re
--import imp
-+import importlib
-
- from _monkeyYaml import load as yamlLoad
-
diff --git a/extras/packaging/gnu-linux/rules/rpm/patches/0015-remove-deleted-xkb-keys.patch b/extras/packaging/gnu-linux/rules/rpm/patches/0015-remove-deleted-xkb-keys.patch
deleted file mode 100644
index a3ef5b389a5debc50a1f35a5aa351ced16fc7d3e..0000000000000000000000000000000000000000
--- a/extras/packaging/gnu-linux/rules/rpm/patches/0015-remove-deleted-xkb-keys.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-diff --git a/qtbase/src/corelib/global/qnamespace.h b/qtbase/src/corelib/global/qnamespace.h
-index 8a2769a3ed..584d3620c9 100644
---- a/qtbase/src/corelib/global/qnamespace.h
-+++ b/qtbase/src/corelib/global/qnamespace.h
-@@ -832,10 +832,6 @@ namespace Qt {
-         Key_Dead_Small_Schwa    = 0x0100128a,
-         Key_Dead_Capital_Schwa  = 0x0100128b,
-         Key_Dead_Greek          = 0x0100128c,
--        Key_Dead_Lowline        = 0x01001290,
--        Key_Dead_Aboveverticalline = 0x01001291,
--        Key_Dead_Belowverticalline = 0x01001292,
--        Key_Dead_Longsolidusoverlay = 0x01001293,
-
-         // multimedia/internet keys - ignored by default - see QKeyEvent c'tor
-         Key_Back  = 0x01000061,
-diff --git a/qtbase/src/corelib/global/qnamespace.qdoc b/qtbase/src/corelib/global/qnamespace.qdoc
-index 78c69176d8..1623517b5a 100644
---- a/qtbase/src/corelib/global/qnamespace.qdoc
-+++ b/qtbase/src/corelib/global/qnamespace.qdoc
-@@ -1654,10 +1654,6 @@
-     \value Key_Dead_Small_Schwa
-     \value Key_Dead_Capital_Schwa
-     \value Key_Dead_Greek
--    \value Key_Dead_Lowline
--    \value Key_Dead_Aboveverticalline
--    \value Key_Dead_Belowverticalline
--    \value Key_Dead_Longsolidusoverlay
-     \value Key_Back
-     \value Key_Forward
-     \value Key_Stop
-diff --git a/qtbase/src/gui/platform/unix/qxkbcommon.cpp b/qtbase/src/gui/platform/unix/qxkbcommon.cpp
-index fc014b38e2..af1cbbd42a 100644
---- a/qtbase/src/gui/platform/unix/qxkbcommon.cpp
-+++ b/qtbase/src/gui/platform/unix/qxkbcommon.cpp
-@@ -239,10 +239,6 @@ static constexpr const auto KeyTbl = qMakeArray(
-         Xkb2Qt<XKB_KEY_dead_small_schwa,        Qt::Key_Dead_Small_Schwa>,
-         Xkb2Qt<XKB_KEY_dead_capital_schwa,      Qt::Key_Dead_Capital_Schwa>,
-         Xkb2Qt<XKB_KEY_dead_greek,              Qt::Key_Dead_Greek>,
--        Xkb2Qt<XKB_KEY_dead_lowline,            Qt::Key_Dead_Lowline>,
--        Xkb2Qt<XKB_KEY_dead_aboveverticalline,  Qt::Key_Dead_Aboveverticalline>,
--        Xkb2Qt<XKB_KEY_dead_belowverticalline,  Qt::Key_Dead_Belowverticalline>,
--        Xkb2Qt<XKB_KEY_dead_longsolidusoverlay, Qt::Key_Dead_Longsolidusoverlay>,
-
-         // Special keys from X.org - This include multimedia keys,
-         // wireless/bluetooth/uwb keys, special launcher keys, etc.
diff --git a/extras/packaging/gnu-linux/rules/rpm/patches/0016-fix-vaapi.patch b/extras/packaging/gnu-linux/rules/rpm/patches/0016-fix-vaapi.patch
deleted file mode 100644
index 9690c4cd3daa1842a13161358aba464e53d987f2..0000000000000000000000000000000000000000
--- a/extras/packaging/gnu-linux/rules/rpm/patches/0016-fix-vaapi.patch
+++ /dev/null
@@ -1,29 +0,0 @@
- qtmultimedia/src/plugins/multimedia/ffmpeg/qffmpegvaapisymbols.cpp | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/qtmultimedia/src/plugins/multimedia/ffmpeg/qffmpegvaapisymbols.cpp b/qtmultimedia/src/plugins/multimedia/ffmpeg/qffmpegvaapisymbols.cpp
-index ec212f5a35..58bf4dce7d 100644
---- a/qtmultimedia/src/plugins/multimedia/ffmpeg/qffmpegvaapisymbols.cpp
-+++ b/qtmultimedia/src/plugins/multimedia/ffmpeg/qffmpegvaapisymbols.cpp
-@@ -37,7 +37,10 @@ static Libs loadLibs()
-     return {};
- }
- 
--constexpr size_t symbolsCount = 39
-+constexpr size_t symbolsCount = 38
-+#if VA_CHECK_VERSION(1, 9, 0)
-+        + 1
-+#endif
- #ifdef DYNAMIC_RESOLVE_VA_DRM_SYMBOLS
-         + 1
- #endif
-@@ -79,7 +82,9 @@ DEFINE_FUNC(vaEndPicture, 2, VA_STATUS_ERROR_OPERATION_FAILED);
- DEFINE_FUNC(vaCreateBuffer, 7, VA_STATUS_ERROR_OPERATION_FAILED);
- DEFINE_FUNC(vaMapBuffer, 3, VA_STATUS_ERROR_OPERATION_FAILED);
- DEFINE_FUNC(vaUnmapBuffer, 2, VA_STATUS_ERROR_OPERATION_FAILED);
-+#if VA_CHECK_VERSION(1, 9, 0)
- DEFINE_FUNC(vaSyncBuffer, 3, VA_STATUS_ERROR_OPERATION_FAILED);
-+#endif
- DEFINE_FUNC(vaDestroyBuffer, 2, VA_STATUS_ERROR_OPERATION_FAILED);
- 
- DEFINE_FUNC(vaCreateSurfaces, 8, VA_STATUS_ERROR_OPERATION_FAILED);
diff --git a/extras/packaging/gnu-linux/scripts/build-package-rpm.sh b/extras/packaging/gnu-linux/scripts/build-package-rpm.sh
index 6e8af9e47be8ae71ebdfbc9dbf4448b29918064b..61c88819e7900037b6bbdf90b0e91a43158155cc 100755
--- a/extras/packaging/gnu-linux/scripts/build-package-rpm.sh
+++ b/extras/packaging/gnu-linux/scripts/build-package-rpm.sh
@@ -36,16 +36,14 @@ rpmdev-setuptree
 # Copy the source tarball.
 cp --reflink=auto "/src/$RELEASE_TARBALL_FILENAME" /root/rpmbuild/SOURCES
 
-cp patches/*.patch /root/rpmbuild/SOURCES/
-
 QT_JAMI_PREFIX="/usr/lib64/qt-jami"
 PATH="${QT_JAMI_PREFIX}/bin:${PATH}"
 LD_LIBRARY_PATH="${QT_JAMI_PREFIX}/lib:${LD_LIBRARY_PATH}"
 PKG_CONFIG_PATH="${QT_JAMI_PREFIX}/lib/pkgconfig:${PKG_CONFIG_PATH}"
 CMAKE_PREFIX_PATH="${QT_JAMI_PREFIX}/lib/cmake:${CMAKE_PREFIX_PATH}"
 QT_MAJOR=6
-QT_MINOR=5
-QT_PATCH=3
+QT_MINOR=6
+QT_PATCH=1
 QT_RELEASE_PATCH=0
 
 QT_MAJOR_MINOR=${QT_MAJOR}.${QT_MINOR}
@@ -54,7 +52,7 @@ QT_MAJOR_MINOR_PATCH=${QT_MAJOR}.${QT_MINOR}.${QT_PATCH}
 QT_TARBALL_URL=https://download.qt.io/archive/qt/$QT_MAJOR_MINOR/\
 $QT_MAJOR_MINOR_PATCH/single/qt-everywhere-src-$QT_MAJOR_MINOR_PATCH.tar.xz
 
-QT_TARBALL_SHA256="7cda4d119aad27a3887329cfc285f2aba5da85601212bcb0aea27bd6b7b544cb"
+QT_TARBALL_SHA256="dd3668f65645fe270bc615d748bd4dc048bd17b9dc297025106e6ecc419ab95d"
 QT_TARBALL_FILE_NAME=$(basename "$QT_TARBALL_URL")
 CACHED_QT_TARBALL=$TARBALLS/$QT_TARBALL_FILE_NAME
 
diff --git a/extras/packaging/gnu-linux/scripts/install-gcc-debian.sh b/extras/packaging/gnu-linux/scripts/install-gcc-debian.sh
new file mode 100755
index 0000000000000000000000000000000000000000..82afad3f101c533f7ced95b92ebb5b8431e9fd1e
--- /dev/null
+++ b/extras/packaging/gnu-linux/scripts/install-gcc-debian.sh
@@ -0,0 +1,11 @@
+#!/usr/bin/env bash
+
+VERSION=$1
+
+apt-get install -y -o Acquire::Retries=10 \
+    gcc-$VERSION \
+    g++-$VERSION
+
+rm /usr/bin/gcc /usr/bin/g++
+ln -s /usr/bin/gcc-$VERSION /usr/bin/gcc
+ln -s /usr/bin/g++-$VERSION /usr/bin/g++
\ No newline at end of file
diff --git a/extras/scripts/build-windows.py b/extras/scripts/build-windows.py
index f3224b94815de6e092313663d55a479668086cd5..8268ab31f5884b23b5fddc5a8f00b195a5ca870a 100644
--- a/extras/scripts/build-windows.py
+++ b/extras/scripts/build-windows.py
@@ -28,7 +28,7 @@ mutually exclusive required arguments:
   -z, --zip         Build portable archive
 
 examples:
-1.  build.py --qt=C:/Qt/6.5.3/msvc2019_64  # Build the app using a specific Qt
+1.  build.py --qt=C:/Qt/6.6.1/msvc2019_64  # Build the app using a specific Qt
 2.  build.py --init pack --msi             # Build the app and an MSI installer
 3.  build.py --init --tests                # Build the app and run tests
     build.py pack --zip --skip-build       # Generate a 7z archive of the app
diff --git a/src/app/commoncomponents/EditedPopup.qml b/src/app/commoncomponents/EditedPopup.qml
index 37c119b4ea964686424f33cc5409c851a6a11cf5..eefcd46ece627f9db1e0d04ab9da920ac5230a17 100644
--- a/src/app/commoncomponents/EditedPopup.qml
+++ b/src/app/commoncomponents/EditedPopup.qml
@@ -28,46 +28,41 @@ BaseModalDialog {
     property var previousBodies: undefined
 
     popupContent: JamiListView {
-            width: 400 - 2 * root.popupMargins
+        id: editsList
 
-            height: Math.min(count * 50, 150)
+        width: 400 - 2 * root.popupMargins
+        height: Math.min(count * 50, 150)
 
-            model: root.previousBodies
+        model: root.previousBodies
 
-            delegate: Rectangle {
-                width: 400 - 2 * root.popupMargins
-                height: Math.max(JamiTheme.menuItemsPreferredHeight, rowBody.implicitHeight)
-                color: index % 2 === 0 ? JamiTheme.backgroundColor : JamiTheme.secondaryBackgroundColor
+        delegate: Rectangle {
+            width: editsList.width
+            height: Math.max(JamiTheme.menuItemsPreferredHeight, rowBody.implicitHeight)
+            color: index % 2 === 0 ? JamiTheme.backgroundColor : JamiTheme.secondaryBackgroundColor
 
-                RowLayout {
-                    id: rowBody
-                    spacing: JamiTheme.preferredMarginSize
-                    anchors.centerIn: parent
+            RowLayout {
+                id: rowBody
+                spacing: JamiTheme.preferredMarginSize
+                anchors.fill: parent
 
-                    Text {
-                        Layout.maximumWidth: root.width / 2
-                        Layout.leftMargin: JamiTheme.settingsMarginSize
-                        elide: Text.ElideRight
+                Text {
+                    Layout.maximumWidth: root.width / 2
+                    Layout.leftMargin: JamiTheme.settingsMarginSize
+                    elide: Text.ElideRight
 
-                        text: MessagesAdapter.getFormattedDay(modelData.timestamp.toString()) + " - " + MessagesAdapter.getFormattedTime(modelData.timestamp.toString())
-                        color: JamiTheme.textColor
-                        opacity: 0.5
-                    }
-
-                    Text {
-                        Layout.alignment: Qt.AlignLeft
+                    text: MessagesAdapter.getFormattedDay(modelData.timestamp.toString()) + " - " + MessagesAdapter.getFormattedTime(modelData.timestamp.toString())
+                    color: JamiTheme.textColor
+                    opacity: 0.5
+                }
 
-                        TextMetrics {
-                            id: metrics
-                            elide: Text.ElideRight
-                            elideWidth: 3 * rowBody.width / 4 - 2 * JamiTheme.preferredMarginSize
-                            text: modelData.body === "" ? JamiStrings.deletedMessage : modelData.body
-                        }
+                Text {
+                    Layout.fillWidth: true
+                    elide: Text.ElideRight
 
-                        text: metrics.elidedText
-                        color: JamiTheme.textColor
-                    }
+                    text: modelData.body === "" ? JamiStrings.deletedMessage : modelData.body
+                    color: JamiTheme.textColor
                 }
             }
         }
     }
+}
diff --git a/src/app/commoncomponents/contextmenu/BaseContextMenu.qml b/src/app/commoncomponents/contextmenu/BaseContextMenu.qml
index 9b03ee90a2c1c2b4be85f78600856906b8eb2212..91ee9ca6b3716a9ea95a5218d9a0662837f97f28 100644
--- a/src/app/commoncomponents/contextmenu/BaseContextMenu.qml
+++ b/src/app/commoncomponents/contextmenu/BaseContextMenu.qml
@@ -67,7 +67,7 @@ Menu {
                 }
                 if (menuItems[i].addMenuSeparatorAfter) {
                     menuSeparatorComponent = Qt.createComponent("GeneralMenuSeparator.qml", Component.PreferSynchronous, root);
-                    menuSeparatorComponentObj = menuSeparatorComponent.createObject(root, {
+                    menuSeparatorComponentObj = menuSeparatorComponent.createObject(null, {
                             "separatorColor": JamiTheme.menuSeparatorColor,
                             "separatorPreferredHeight": 0
                         });
diff --git a/src/libclient/CMakeLists.txt b/src/libclient/CMakeLists.txt
index 1fa76d22c4d75e1aac1dd1135a3f35200eead6a4..7ef7f7585319c8be66569e3c9fca3d5b9357c32d 100644
--- a/src/libclient/CMakeLists.txt
+++ b/src/libclient/CMakeLists.txt
@@ -185,8 +185,8 @@ else()
   find_package(QT NAMES Qt6 REQUIRED)
 endif()
 if (${QT_VERSION_MAJOR} STRLESS 6)
-  if (${QT_VERSION_MINOR} STRLESS 4)
-    message(FATAL_ERROR "Qt 6.4 or higher is required.")
+  if (${QT_VERSION_MINOR} STRLESS 6)
+    message(FATAL_ERROR "Qt 6.6 or higher is required.")
   endif()
 endif()