diff --git a/extras/packaging/gnu-linux/Makefile b/extras/packaging/gnu-linux/Makefile
index 560d8af8b55278a3e54e0b3a826be18dd62c087c..1eb2fe098bd8f459df401b35f15f0efdd43eecfa 100644
--- a/extras/packaging/gnu-linux/Makefile
+++ b/extras/packaging/gnu-linux/Makefile
@@ -171,6 +171,7 @@ DISTRIBUTIONS := \
 	fedora_37 \
 	fedora_38 \
 	fedora_39 \
+	fedora_40 \
 	alma_9 \
 	opensuse-leap_15.4 \
 	opensuse-leap_15.5 \
diff --git a/extras/packaging/gnu-linux/docker/Dockerfile_fedora_40 b/extras/packaging/gnu-linux/docker/Dockerfile_fedora_40
new file mode 100644
index 0000000000000000000000000000000000000000..7f217747636db8d926d8a07d402b01257790f713
--- /dev/null
+++ b/extras/packaging/gnu-linux/docker/Dockerfile_fedora_40
@@ -0,0 +1,105 @@
+FROM fedora:40
+
+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.10 \
+        cups-devel \
+        pipewire-devel
+
+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/rules/rpm/jami-libqt.spec b/extras/packaging/gnu-linux/rules/rpm/jami-libqt.spec
index ae75510091057f54049fc2d6c90c1eaa14818f1f..351ce52aa3661c7d8b59afa3307d9b4f04c87556 100644
--- a/extras/packaging/gnu-linux/rules/rpm/jami-libqt.spec
+++ b/extras/packaging/gnu-linux/rules/rpm/jami-libqt.spec
@@ -29,6 +29,7 @@ License:       GPLv3+
 Vendor:        Savoir-faire Linux Inc.
 URL:           https://jami.net/
 Source:        jami-libqt-%{version}.tar.xz
+Patch0:        0001-fix-gcc14.patch
 
 %global gst 0.10
 %if 0%{?fedora} || 0%{?rhel} > 7
@@ -64,6 +65,7 @@ This package contains Qt libraries for Jami.
 
 %prep
 %setup -n qt-everywhere-src-%{version}
+%patch0 -p1
 
 %build
 echo "Building Qt using %{job_count} parallel jobs"
diff --git a/extras/packaging/gnu-linux/rules/rpm/patches/0001-fix-gcc14.patch b/extras/packaging/gnu-linux/rules/rpm/patches/0001-fix-gcc14.patch
new file mode 100644
index 0000000000000000000000000000000000000000..f52945fbd98244baaaf4d58f85c7ce2103da18e5
--- /dev/null
+++ b/extras/packaging/gnu-linux/rules/rpm/patches/0001-fix-gcc14.patch
@@ -0,0 +1,26 @@
+From 9721082687c9529fe6ae3c5304dcf079158e8a77 Mon Sep 17 00:00:00 2001
+From: Sam James <sam@gentoo.org>
+Date: Sun, 04 Jun 2023 04:15:16 +0100
+Subject: [PATCH] heap: Add missing <algorithm> include for std::remove
+
+GCC 14 changes some internal includes within libstdc++ so this transient
+include gets lost. Include <algorithm> explicitly for std::remove.
+
+Change-Id: Iab8a2c751a0f9c9dc6a770d6296ad6de724ef3bb
+Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4583222
+Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
+Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
+Cr-Commit-Position: refs/heads/main@{#88037}
+---
+
+diff --git a/qtwebengine/src/3rdparty/chromium/v8/src/heap/cppgc/stats-collector.h b/qtwebengine/src/3rdparty/chromium/v8/src/heap/cppgc/stats-collector.h
+index 2cf728489d..d8414ae3c6 100644
+--- a/qtwebengine/src/3rdparty/chromium/v8/src/heap/cppgc/stats-collector.h
++++ b/qtwebengine/src/3rdparty/chromium/v8/src/heap/cppgc/stats-collector.h
+@@ -8,6 +8,7 @@
+ #include <stddef.h>
+ #include <stdint.h>
+
++#include <algorithm>
+ #include <atomic>
+ #include <vector>
diff --git a/extras/packaging/gnu-linux/scripts/build-package-rpm.sh b/extras/packaging/gnu-linux/scripts/build-package-rpm.sh
index 921ac3088ab8b39b79632b0404fd001bd514381d..979aabc7b5a2f86a770247d32ae032d2f89b7d15 100755
--- a/extras/packaging/gnu-linux/scripts/build-package-rpm.sh
+++ b/extras/packaging/gnu-linux/scripts/build-package-rpm.sh
@@ -35,6 +35,7 @@ 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}"
@@ -43,8 +44,8 @@ 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=6
-QT_PATCH=1
-QT_RELEASE_PATCH=1
+QT_PATCH=3
+QT_RELEASE_PATCH=0
 
 QT_MAJOR_MINOR=${QT_MAJOR}.${QT_MINOR}
 QT_MAJOR_MINOR_PATCH=${QT_MAJOR}.${QT_MINOR}.${QT_PATCH}
@@ -52,7 +53,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="dd3668f65645fe270bc615d748bd4dc048bd17b9dc297025106e6ecc419ab95d"
+QT_TARBALL_SHA256="69d0348fef415da98aa890a34651e9cfb232f1bffcee289b7b4e21386bf36104"
 QT_TARBALL_FILE_NAME=$(basename "$QT_TARBALL_URL")
 CACHED_QT_TARBALL=$TARBALLS/$QT_TARBALL_FILE_NAME
 
@@ -111,6 +112,8 @@ if [ ! -f "${RPM_PATH}" ]; 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}"
+        elif [[ "${DISTRIBUTION}" == "fedora_40" ]]; then
+            cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc40.x86_64.rpm "${RPM_PATH}"
         elif [[ "${DISTRIBUTION}" == "alma_9" ]]; then
             cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.el9.x86_64.rpm "${RPM_PATH}"
         else