From e55eaa5d8e90b41bdfbd29cd01496c93fdfec68a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Blin?=
 <sebastien.blin@savoirfairelinux.com>
Date: Wed, 18 Oct 2023 07:42:40 -0400
Subject: [PATCH] packaging: add fedora 39, ubuntu 23.10

Change-Id: I2da6a821b25c3a5ae26ba8f59f3dc8b6656751b5
---
 extras/packaging/gnu-linux/Makefile           |   4 +-
 .../gnu-linux/docker/Dockerfile_fedora_39     | 105 +++++
 .../gnu-linux/docker/Dockerfile_ubuntu_23.10  |  22 +
 .../debian-qt/patches/0003-fix-mathops.patch  |  81 ++++
 .../patches/0004-fix-binary-tokenizer.patch   |  16 +
 .../debian-qt/patches/0005-importlib.patch    | 433 ++++++++++++++++++
 .../gnu-linux/rules/debian-qt/patches/series  |   5 +-
 .../gnu-linux/rules/debian/jami-all.postinst  |   2 +
 .../gnu-linux/rules/rpm/jami-libqt.spec       |   7 +
 .../rules/rpm/patches/0003-fix-mathops.patch  |  81 ++++
 .../patches/0004-fix-binary-tokenizer.patch   |  16 +
 .../rules/rpm/patches/0005-importlib.patch    | 433 ++++++++++++++++++
 .../gnu-linux/scripts/build-package-rpm.sh    |  10 +-
 13 files changed, 1206 insertions(+), 9 deletions(-)
 create mode 100644 extras/packaging/gnu-linux/docker/Dockerfile_fedora_39
 create mode 100644 extras/packaging/gnu-linux/docker/Dockerfile_ubuntu_23.10
 create mode 100644 extras/packaging/gnu-linux/rules/debian-qt/patches/0003-fix-mathops.patch
 create mode 100644 extras/packaging/gnu-linux/rules/debian-qt/patches/0004-fix-binary-tokenizer.patch
 create mode 100644 extras/packaging/gnu-linux/rules/debian-qt/patches/0005-importlib.patch
 create mode 100644 extras/packaging/gnu-linux/rules/rpm/patches/0003-fix-mathops.patch
 create mode 100644 extras/packaging/gnu-linux/rules/rpm/patches/0004-fix-binary-tokenizer.patch
 create mode 100644 extras/packaging/gnu-linux/rules/rpm/patches/0005-importlib.patch

diff --git a/extras/packaging/gnu-linux/Makefile b/extras/packaging/gnu-linux/Makefile
index 1e9351130..57d7166f0 100644
--- a/extras/packaging/gnu-linux/Makefile
+++ b/extras/packaging/gnu-linux/Makefile
@@ -49,7 +49,7 @@ QT_MAJOR := 6
 QT_MINOR := 4
 QT_PATCH := 3
 QT_TARBALL_CHECKSUM := 29a7eebdbba0ea57978dea6083709c93593a60f0f3133a3de08b9571ee8eaab4
-DEBIAN_QT_VERSION := $(QT_MAJOR).$(QT_MINOR).$(QT_PATCH)-2
+DEBIAN_QT_VERSION := $(QT_MAJOR).$(QT_MINOR).$(QT_PATCH)-3
 DEBIAN_QT_DSC_FILENAME := libqt-jami_$(DEBIAN_QT_VERSION).dsc
 QT_JAMI_PREFIX := /usr/lib/libqt-jami
 
@@ -167,8 +167,10 @@ DISTRIBUTIONS := \
 	ubuntu_20.04 \
 	ubuntu_22.04 \
 	ubuntu_23.04 \
+	ubuntu_23.10 \
 	fedora_37 \
 	fedora_38 \
+	fedora_39 \
 	opensuse-leap_15.4 \
 	snap
 
diff --git a/extras/packaging/gnu-linux/docker/Dockerfile_fedora_39 b/extras/packaging/gnu-linux/docker/Dockerfile_fedora_39
new file mode 100644
index 000000000..e3442b019
--- /dev/null
+++ b/extras/packaging/gnu-linux/docker/Dockerfile_fedora_39
@@ -0,0 +1,105 @@
+FROM fedora:39
+
+RUN dnf clean all
+RUN dnf update -y
+
+RUN dnf install -y dnf-command\(builddep\) rpmdevtools && \
+    dnf install -y mock
+
+RUN dnf groupinstall -y "X Software Development"
+
+RUN dnf install -y \
+        git \
+        rpm-build \
+        tar \
+        make \
+        autoconf \
+        automake \
+        nasm \
+        speexdsp-devel \
+        pulseaudio-libs-devel \
+        libcanberra-devel \
+        libcurl-devel \
+        libtool \
+        mesa-libgbm-devel \
+        mesa-dri-drivers \
+        dbus-devel \
+        expat-devel \
+        pcre-devel \
+        yaml-cpp-devel \
+        libXext-devel \
+        libXfixes-devel \
+        yasm \
+        speex-devel \
+        gsm-devel \
+        chrpath \
+        check \
+        astyle \
+        uuid-c++-devel \
+        gettext-devel \
+        gcc-c++ \
+        which \
+        alsa-lib-devel \
+        systemd-devel \
+        libuuid-devel \
+        uuid-devel \
+        gnutls-devel \
+        nettle-devel \
+        opus-devel \
+        patch \
+        jsoncpp-devel \
+        libnatpmp-devel \
+        webkitgtk4-devel \
+        cryptopp-devel \
+        libva-devel \
+        libvdpau-devel \
+        msgpack-devel \
+        NetworkManager-libnm-devel \
+        openssl-devel \
+        clutter-devel \
+        clutter-gtk-devel \
+        libappindicator-gtk3-devel \
+        libnotify-devel \
+        libupnp-devel \
+        qrencode-devel \
+        libargon2-devel \
+        libsndfile-devel \
+        libdrm \
+        gperf \
+        bison \
+        clang \
+        clang-devel \
+        llvm-devel \
+        nodejs \
+        flex \
+        gstreamer1 gstreamer1-devel \
+        gstreamer1-plugins-base-devel \
+        gstreamer1-plugins-good \
+        gstreamer1-plugins-bad-free-devel \
+        nss-devel \
+        libxcb* \
+        libxkb* \
+        libX11-devel \
+        vulkan-devel \
+        libXrender-devel \
+        xcb-util-* \
+        xz \
+        xkeyboard-config \
+        libnotify \
+        wget \
+        libstdc++-static \
+        sqlite-devel \
+        perl-generators \
+        perl-English \
+        libxshmfence-devel \
+        ninja-build \
+        clang \
+        cmake \
+        fmt-devel \
+        python3-html5lib \
+        cups-devel \
+        python-six
+
+ADD extras/packaging/gnu-linux/scripts/build-package-rpm.sh /opt/build-package-rpm.sh
+
+CMD ["/opt/build-package-rpm.sh"]
diff --git a/extras/packaging/gnu-linux/docker/Dockerfile_ubuntu_23.10 b/extras/packaging/gnu-linux/docker/Dockerfile_ubuntu_23.10
new file mode 100644
index 000000000..1bcfd262e
--- /dev/null
+++ b/extras/packaging/gnu-linux/docker/Dockerfile_ubuntu_23.10
@@ -0,0 +1,22 @@
+FROM ubuntu:23.10
+
+ENV DEBIAN_FRONTEND=noninteractive
+
+RUN apt-get clean
+RUN apt-get update && \
+    apt-get install -y -o Acquire::Retries=10 \
+        devscripts \
+        equivs \
+        python-is-python3 \
+        wget
+
+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
+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
+
+ADD extras/packaging/gnu-linux/scripts/build-package-debian.sh /opt/build-package-debian.sh
+CMD ["/opt/build-package-debian.sh"]
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
new file mode 100644
index 000000000..8ed849099
--- /dev/null
+++ b/extras/packaging/gnu-linux/rules/debian-qt/patches/0003-fix-mathops.patch
@@ -0,0 +1,81 @@
+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
new file mode 100644
index 000000000..31a12b1fa
--- /dev/null
+++ b/extras/packaging/gnu-linux/rules/debian-qt/patches/0004-fix-binary-tokenizer.patch
@@ -0,0 +1,16 @@
+ 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
new file mode 100644
index 000000000..59c8861d9
--- /dev/null
+++ b/extras/packaging/gnu-linux/rules/debian-qt/patches/0005-importlib.patch
@@ -0,0 +1,433 @@
+ 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/series b/extras/packaging/gnu-linux/rules/debian-qt/patches/series
index 98b1f3a1f..4fc743c26 100644
--- a/extras/packaging/gnu-linux/rules/debian-qt/patches/series
+++ b/extras/packaging/gnu-linux/rules/debian-qt/patches/series
@@ -1,2 +1,5 @@
 0001-fix-gcc13.patch
-0002-OpenFile-portal-do-not-use-O_PATH-fds.patch
\ No newline at end of file
+0002-OpenFile-portal-do-not-use-O_PATH-fds.patch
+0003-fix-mathops.patch
+0004-fix-binary-tokenizer.patch
+0005-importlib.patch
\ No newline at end of file
diff --git a/extras/packaging/gnu-linux/rules/debian/jami-all.postinst b/extras/packaging/gnu-linux/rules/debian/jami-all.postinst
index 373927070..7457544f1 100755
--- a/extras/packaging/gnu-linux/rules/debian/jami-all.postinst
+++ b/extras/packaging/gnu-linux/rules/debian/jami-all.postinst
@@ -101,6 +101,8 @@ if [ -f /etc/os-release ]; then
         ENDTAG="ubuntu_22.04"
     elif [ "${UBUNTU_CODENAME}" = "lunar" ] || [ "${ID}_${VERSION_ID}" = "ubuntu_23.04" ]; then
         ENDTAG="ubuntu_23.04"
+    elif [ "${UBUNTU_CODENAME}" = "mantic" ] || [ "${ID}_${VERSION_ID}" = "ubuntu_23.10" ]; then
+        ENDTAG="ubuntu_23.10"
     elif [ "${ID}" = "debian" ] && \
              [ "$(command -v lsb_release)" ] && \
              [ "$(lsb_release -rs)" = "testing" ]; then
diff --git a/extras/packaging/gnu-linux/rules/rpm/jami-libqt.spec b/extras/packaging/gnu-linux/rules/rpm/jami-libqt.spec
index c4260532a..92d918b70 100644
--- a/extras/packaging/gnu-linux/rules/rpm/jami-libqt.spec
+++ b/extras/packaging/gnu-linux/rules/rpm/jami-libqt.spec
@@ -28,6 +28,9 @@ URL:           https://jami.net/
 Source:        jami-libqt-%{version}.tar.xz
 Patch0:        0001-fix-gcc13.patch
 Patch1:        0002-OpenFile-portal-do-not-use-O_PATH-fds.patch
+Patch2:        0003-fix-mathops.patch
+Patch3:        0004-fix-binary-tokenizer.patch
+Patch4:        0005-importlib.patch
 
 %global gst 0.10
 %if 0%{?fedora} || 0%{?rhel} > 7
@@ -42,6 +45,7 @@ BuildRequires: bison
 BuildRequires: gperf
 BuildRequires: flex
 BuildRequires: vulkan-devel
+BuildRequires: python-six
 %if %{defined suse_version}
 BuildRequires: ffmpeg-devel
 BuildRequires: ffmpeg
@@ -64,6 +68,9 @@ This package contains Qt libraries for Jami.
 %setup -n qt-everywhere-src-%{version}
 %patch0 -p1
 %patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
 
 %build
 echo "Building Qt using %{job_count} parallel jobs"
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
new file mode 100644
index 000000000..8ed849099
--- /dev/null
+++ b/extras/packaging/gnu-linux/rules/rpm/patches/0003-fix-mathops.patch
@@ -0,0 +1,81 @@
+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
new file mode 100644
index 000000000..31a12b1fa
--- /dev/null
+++ b/extras/packaging/gnu-linux/rules/rpm/patches/0004-fix-binary-tokenizer.patch
@@ -0,0 +1,16 @@
+ 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
new file mode 100644
index 000000000..59c8861d9
--- /dev/null
+++ b/extras/packaging/gnu-linux/rules/rpm/patches/0005-importlib.patch
@@ -0,0 +1,433 @@
+ 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/scripts/build-package-rpm.sh b/extras/packaging/gnu-linux/scripts/build-package-rpm.sh
index a7019e6c2..d1c0f6984 100755
--- a/extras/packaging/gnu-linux/scripts/build-package-rpm.sh
+++ b/extras/packaging/gnu-linux/scripts/build-package-rpm.sh
@@ -46,7 +46,7 @@ CMAKE_PREFIX_PATH="${QT_JAMI_PREFIX}/lib/cmake:${CMAKE_PREFIX_PATH}"
 QT_MAJOR=6
 QT_MINOR=4
 QT_PATCH=3
-QT_RELEASE_PATCH=2
+QT_RELEASE_PATCH=3
 
 QT_MAJOR_MINOR=${QT_MAJOR}.${QT_MINOR}
 QT_MAJOR_MINOR_PATCH=${QT_MAJOR}.${QT_MINOR}.${QT_PATCH}
@@ -105,18 +105,14 @@ if [ ! -f "${RPM_PATH}" ]; then
         # Cache the built Qt RPM package.
         if [[ "${DISTRIBUTION:0:4}" == "rhel" ]]; then
             cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.el8.x86_64.rpm "${RPM_PATH}"
-        elif [[ "${DISTRIBUTION}" == "fedora_33" ]]; then
-            cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc33.x86_64.rpm "${RPM_PATH}"
-        elif [[ "${DISTRIBUTION}" == "fedora_34" ]]; then
-            cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc34.x86_64.rpm "${RPM_PATH}"
-        elif [[ "${DISTRIBUTION}" == "fedora_35" ]]; then
-            cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc35.x86_64.rpm "${RPM_PATH}"
         elif [[ "${DISTRIBUTION}" == "fedora_36" ]]; then
             cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc36.x86_64.rpm "${RPM_PATH}"
         elif [[ "${DISTRIBUTION}" == "fedora_37" ]]; then
             cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc37.x86_64.rpm "${RPM_PATH}"
         elif [[ "${DISTRIBUTION}" == "fedora_38" ]]; then
             cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc38.x86_64.rpm "${RPM_PATH}"
+        elif [[ "${DISTRIBUTION}" == "fedora_39" ]]; then
+            cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc39.x86_64.rpm "${RPM_PATH}"
         else
             cp /root/rpmbuild/RPMS/x86_64/jami-libqt-*.rpm "${RPM_PATH}"
         fi
-- 
GitLab