diff --git a/0001-CMake-ELF-allow-using-Qt-s-full-version-number-in-th.patch b/0001-CMake-ELF-allow-using-Qt-s-full-version-number-in-th.patch deleted file mode 100644 index 4af871d..0000000 --- a/0001-CMake-ELF-allow-using-Qt-s-full-version-number-in-th.patch +++ /dev/null @@ -1,66 +0,0 @@ -From bccbdc225505eb39458336922fa30f87fd81476a Mon Sep 17 00:00:00 2001 -From: Thiago Macieira -Date: Thu, 21 Mar 2024 10:07:03 -0700 -Subject: [PATCH] CMake/ELF: allow using Qt's full version number in the - private tags - -We added the feature to tag private symbols using the Qt major version -only, because us developers often move between versions and need to keep -compiled code working, even when using private API (we're supposed to -know what we're doing). Linux distributions, however, want to be told -that something used private API and therefore needs to be rebuilt. See -[1][2][3]. - -Distributors will learn about this feature when updating Qt causes the -existing patch to fail to apply. - -[1] https://build.opensuse.org/projects/openSUSE:Factory/packages/qt6-base/files/0001-Tell-the-truth-about-private-API.patch?expand=1 -[2] https://src.fedoraproject.org/rpms/qt6-qtbase/blob/rawhide/f/qtbase-tell-the-truth-about-private-API.patch -[3] https://github.com/clearlinux-pkgs/qtbase/blob/main/tell-the-truth-about-private-api.patch - -Change-Id: I5f663c2f9f4149af84fefffd17bed69026f4038d -Reviewed-by: Alexey Edelev -(cherry picked from commit e0940081bc7439d87d9ca41402a543a9c17fb857) -Reviewed-by: Qt Cherry-pick Bot ---- - cmake/QtFlagHandlingHelpers.cmake | 6 +++++- - configure.cmake | 6 ++++++ - 2 files changed, 11 insertions(+), 1 deletion(-) - -diff --git a/cmake/QtFlagHandlingHelpers.cmake b/cmake/QtFlagHandlingHelpers.cmake -index 28231cb564..32ce929e45 100644 ---- a/cmake/QtFlagHandlingHelpers.cmake -+++ b/cmake/QtFlagHandlingHelpers.cmake -@@ -69,7 +69,11 @@ function(qt_internal_add_linker_version_script target) - endforeach() - endforeach() - -- string(APPEND contents "\n};\nQt_${PROJECT_VERSION_MAJOR}_PRIVATE_API { qt_private_api_tag*;\n") -+ string(APPEND contents "\n};\nQt_${PROJECT_VERSION_MAJOR}") -+ if(QT_FEATURE_elf_private_full_version) -+ string(APPEND contents ".${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}") -+ endif() -+ string(APPEND contents "_PRIVATE_API { qt_private_api_tag*;\n") - if(arg_PRIVATE_HEADERS) - foreach(ph ${arg_PRIVATE_HEADERS}) - string(APPEND contents " @FILE:${ph}@\n") -diff --git a/configure.cmake b/configure.cmake -index 037aab9b2d..19dd2bf34e 100644 ---- a/configure.cmake -+++ b/configure.cmake -@@ -551,6 +551,12 @@ qt_feature("rpath" PUBLIC - CONDITION BUILD_SHARED_LIBS AND UNIX AND NOT WIN32 AND NOT ANDROID - ) - qt_feature_config("rpath" QMAKE_PUBLIC_QT_CONFIG) -+qt_feature("elf_private_full_version" PRIVATE -+ LABEL "Use Qt's full version number in ELF version symbols" -+ AUTODETECT OFF -+ CONDITION BUILD_SHARED_LIBS AND UNIX AND NOT APPLE -+) -+qt_feature_config("elf_private_full_version" QMAKE_PRIVATE_QT_CONFIG) - qt_feature("force_asserts" PUBLIC - LABEL "Force assertions" - AUTODETECT OFF --- -2.44.0 - diff --git a/0001-QStringConverterICU-Pass-correct-pointer-to-callback.patch b/0001-QStringConverterICU-Pass-correct-pointer-to-callback.patch deleted file mode 100644 index 805a818..0000000 --- a/0001-QStringConverterICU-Pass-correct-pointer-to-callback.patch +++ /dev/null @@ -1,166 +0,0 @@ -From 7c4e1357e49baebdd2d20710fccb5604cbb36c0d Mon Sep 17 00:00:00 2001 -From: Fabian Kosmale -Date: Thu, 18 Apr 2024 10:25:21 +0200 -Subject: [PATCH] QStringConverterICU: Pass correct pointer to callback -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Pass the pointer to the current state, not a pointer to a pointer to it. - -[ChangeLog][QtCore][QStringConverter] Fixed a bug involving moved -QStringEncoder/QStringDecoder objects accessing invalid state. - -Amends 122270d6bea164e6df4357f4d4d77aacfa430470. - -Done-with: Marc Mutz -Pick-to: 6.5 -Change-Id: I70d4dc00e3e0db6cad964579662bcf6d185a4c34 -Reviewed-by: Fabian Kosmale -Reviewed-by: MÃ¥rten Nordheim -(cherry picked from commit 39bbfce9b675c9085ef49c9b9c52c146eca55e4a) -Reviewed-by: Qt Cherry-pick Bot ---- - src/corelib/text/qstringconverter.cpp | 4 +- - .../qstringconverter/tst_qstringconverter.cpp | 72 +++++++++++-------- - 2 files changed, 44 insertions(+), 32 deletions(-) - -diff --git a/src/corelib/text/qstringconverter.cpp b/src/corelib/text/qstringconverter.cpp -index b574984391..fd45ccf2fd 100644 ---- a/src/corelib/text/qstringconverter.cpp -+++ b/src/corelib/text/qstringconverter.cpp -@@ -1954,7 +1954,7 @@ struct QStringConverterICU : QStringConverter - const void *context; - ucnv_getToUCallBack(icu_conv, &action, &context); - if (context != state) -- ucnv_setToUCallBack(icu_conv, action, &state, nullptr, nullptr, &err); -+ ucnv_setToUCallBack(icu_conv, action, state, nullptr, nullptr, &err); - - ucnv_toUnicode(icu_conv, &target, targetLimit, &source, sourceLimit, nullptr, flush, &err); - // We did reserve enough space: -@@ -1987,7 +1987,7 @@ struct QStringConverterICU : QStringConverter - const void *context; - ucnv_getFromUCallBack(icu_conv, &action, &context); - if (context != state) -- ucnv_setFromUCallBack(icu_conv, action, &state, nullptr, nullptr, &err); -+ ucnv_setFromUCallBack(icu_conv, action, state, nullptr, nullptr, &err); - - ucnv_fromUnicode(icu_conv, &target, targetLimit, &source, sourceLimit, nullptr, flush, &err); - // We did reserve enough space: -diff --git a/tests/auto/corelib/text/qstringconverter/tst_qstringconverter.cpp b/tests/auto/corelib/text/qstringconverter/tst_qstringconverter.cpp -index d5fff83321..cd4bd8d1b6 100644 ---- a/tests/auto/corelib/text/qstringconverter/tst_qstringconverter.cpp -+++ b/tests/auto/corelib/text/qstringconverter/tst_qstringconverter.cpp -@@ -571,11 +571,10 @@ void tst_QStringConverter::charByCharConsistency_data() - - void tst_QStringConverter::charByCharConsistency() - { -- QFETCH(QStringView, source); -- QFETCH(QByteArray, codec); -+ QFETCH(const QStringView, source); -+ QFETCH(const QByteArray, codec); - -- { -- QStringEncoder encoder(codec); -+ const auto check = [&](QStringEncoder encoder){ - if (!encoder.isValid()) - QSKIP("Unsupported codec"); - -@@ -586,19 +585,28 @@ void tst_QStringConverter::charByCharConsistency() - stepByStepConverted += encoder.encode(codeUnit); - } - QCOMPARE(stepByStepConverted, fullyConverted); -- } -+ }; -+ -+ check(QStringEncoder(codec)); -+ if (QTest::currentTestResolved()) return; -+ -+ check(QStringEncoder(codec, QStringConverter::Flag::ConvertInvalidToNull)); -+ if (QTest::currentTestResolved()) return; -+ -+ // moved codecs also work: - - { -- QStringEncoder encoder(codec, QStringConverter::Flag::ConvertInvalidToNull); -+ QStringEncoder dec(codec); -+ check(std::move(dec)); -+ } -+ if (QTest::currentTestResolved()) return; - -- QByteArray fullyConverted = encoder.encode(source); -- encoder.resetState(); -- QByteArray stepByStepConverted; -- for (const auto& codeUnit: source) { -- stepByStepConverted += encoder.encode(codeUnit); -- } -- QCOMPARE(stepByStepConverted, fullyConverted); -+ { -+ QStringEncoder dec(codec, QStringConverter::Flag::ConvertInvalidToNull); -+ check(std::move(dec)); - } -+ if (QTest::currentTestResolved()) return; -+ - } - - void tst_QStringConverter::byteByByteConsistency_data() -@@ -615,11 +623,10 @@ void tst_QStringConverter::byteByByteConsistency_data() - - void tst_QStringConverter::byteByByteConsistency() - { -- QFETCH(QByteArray, source); -- QFETCH(QByteArray, codec); -+ QFETCH(const QByteArray, source); -+ QFETCH(const QByteArray, codec); - -- { -- QStringDecoder decoder(codec); -+ const auto check = [&](QStringDecoder decoder) { - if (!decoder.isValid()) - QSKIP("Unsupported codec"); - -@@ -632,23 +639,28 @@ void tst_QStringConverter::byteByByteConsistency() - stepByStepConverted += decoder.decode(singleChar); - } - QCOMPARE(stepByStepConverted, fullyConverted); -- } -+ }; -+ -+ check(QStringDecoder(codec)); -+ if (QTest::currentTestResolved()) return; -+ -+ check(QStringDecoder(codec, QStringConverter::Flag::ConvertInvalidToNull)); -+ if (QTest::currentTestResolved()) return; -+ -+ // moved codecs also work: - - { -- QStringDecoder decoder(codec, QStringConverter::Flag::ConvertInvalidToNull); -- if (!decoder.isValid()) -- QSKIP("Unsupported codec"); -+ QStringDecoder dec(codec); -+ check(std::move(dec)); -+ } -+ if (QTest::currentTestResolved()) return; - -- QString fullyConverted = decoder.decode(source); -- decoder.resetState(); -- QString stepByStepConverted; -- for (const auto& byte: source) { -- QByteArray singleChar; -- singleChar.append(byte); -- stepByStepConverted += decoder.decode(singleChar); -- } -- QCOMPARE(stepByStepConverted, fullyConverted); -+ { -+ QStringDecoder dec(codec, QStringConverter::Flag::ConvertInvalidToNull); -+ check(std::move(dec)); - } -+ if (QTest::currentTestResolved()) return; -+ - } - - void tst_QStringConverter::statefulPieceWise() --- -2.44.0 - diff --git a/fix_builds_with_Werror.patch b/fix_builds_with_Werror.patch deleted file mode 100644 index 7e80a69..0000000 --- a/fix_builds_with_Werror.patch +++ /dev/null @@ -1,32 +0,0 @@ -From a0439a7370df302e4a8f0402249b1aa2b1aeab4b Mon Sep 17 00:00:00 2001 -From: Albert Astals Cid -Date: Wed, 3 Apr 2024 00:47:01 +0200 -Subject: [PATCH] Use ifdef instead of if for __cpp_lib_span - -Like the other times it's used in this file - -This is causing compilation errors in projects that use -Werror=undef - -Fixes: QTBUG-123937 -Pick-to: 6.7 -Change-Id: I0cdd2910755dc9079890011dd8dbc27a6e64793e ---- - src/corelib/tools/qspan.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/corelib/tools/qspan.h b/src/corelib/tools/qspan.h -index c9de1005a7..d6ae2570ae 100644 ---- a/src/corelib/tools/qspan.h -+++ b/src/corelib/tools/qspan.h -@@ -297,7 +297,7 @@ public: - : QSpanBase(il.begin(), il.size()) - {} - --#if __cpp_lib_span -+#ifdef __cpp_lib_span - template = true> - Q_IMPLICIT constexpr QSpanBase(std::span other) noexcept - : QSpanBase(other.data(), other.size()) --- -2.44.0 - diff --git a/qt6-base.changes b/qt6-base.changes index 59f47c3..90ffff3 100644 --- a/qt6-base.changes +++ b/qt6-base.changes @@ -1,7 +1,18 @@ +------------------------------------------------------------------- +Tue May 21 08:31:24 UTC 2024 - Christophe Marin + +- Update to 6.7.1: + * https://www.qt.io/blog/qt-6.7.1-released +- Build with system md4c when possible +- Drop patches, merged upstream: + * fix_builds_with_Werror.patch + * 0001-QStringConverterICU-Pass-correct-pointer-to-callback.patch + * 0001-CMake-ELF-allow-using-Qt-s-full-version-number-in-th.patch + ------------------------------------------------------------------- Fri May 3 07:15:23 UTC 2024 - Christophe Marin -- Add upstream security fix (CVE-2024-33861): +- Add upstream security fix (CVE-2024-33861, boo#1223917): * 0001-QStringConverterICU-Pass-correct-pointer-to-callback.patch ------------------------------------------------------------------- diff --git a/qt6-base.spec b/qt6-base.spec index 9bc92b6..017ca75 100644 --- a/qt6-base.spec +++ b/qt6-base.spec @@ -16,7 +16,7 @@ # -%define real_version 6.7.0 +%define real_version 6.7.1 %define short_version 6.7 %define tar_name qtbase-everywhere-src %define tar_suffix %{nil} @@ -29,26 +29,26 @@ %ifarch %{arm} aarch64 %global with_gles 1 %endif +%if 0%{?suse_version} > 1500 +%bcond_without system_md4c +%endif Name: qt6-base%{?pkg_suffix} -Version: 6.7.0 +Version: 6.7.1 Release: 0 Summary: Qt 6 core components (Core, Gui, Widgets, Network...) # Legal: qtpaths is BSD-3-Clause License: LGPL-2.1-with-Qt-Company-Qt-exception-1.1 OR LGPL-3.0-only URL: https://www.qt.io -Source: https://download.qt.io/official_releases/qt/%{short_version}/%{real_version}%{tar_suffix}/submodules/%{tar_name}-%{real_version}%{tar_suffix}.tar.xz +Source0: https://download.qt.io/official_releases/qt/%{short_version}/%{real_version}%{tar_suffix}/submodules/%{tar_name}-%{real_version}%{tar_suffix}.tar.xz Source99: qt6-base-rpmlintrc # Patches 0-100 are upstream patches # -Patch0: fix_builds_with_Werror.patch -Patch1: 0001-QStringConverterICU-Pass-correct-pointer-to-callback.patch # Patches 100-200 are openSUSE and/or non-upstream(able) patches # -Patch100: 0001-CMake-ELF-allow-using-Qt-s-full-version-number-in-th.patch # No need to pollute the library dir with object files, install them in the qt6 subfolder -Patch101: 0001-CMake-Install-objects-files-into-ARCHDATADIR.patch +Patch100: 0001-CMake-Install-objects-files-into-ARCHDATADIR.patch %if 0%{?suse_version} == 1500 -Patch102: 0001-Use-newer-GCC-on-Leap.patch +Patch101: 0001-Use-newer-GCC-on-Leap.patch %endif -Patch103: 0001-Don-t-strip-binaries-when-building-with-qmake.patch +Patch102: 0001-Don-t-strip-binaries-when-building-with-qmake.patch ## BuildRequires: cmake >= 3.18.3 BuildRequires: cups-devel @@ -70,6 +70,9 @@ BuildRequires: pkgconfig BuildRequires: qt6-macros BuildRequires: xmlstarlet BuildRequires: cmake(double-conversion) +%if %{with system_md4c} +BuildRequires: cmake(md4c) +%endif BuildRequires: pkgconfig(atspi-2) BuildRequires: pkgconfig(dbus-1) BuildRequires: pkgconfig(egl) @@ -739,6 +742,9 @@ sed -i 's#../../3rdparty/freetype/LICENSE.txt#FREETYPE_LICENSE.txt#' src/gui/pai # We don't want to use these 3rdparty libraries rm -r src/3rdparty/{blake2,double-conversion,freetype,harfbuzz-ng,libjpeg,libpng,pcre2,sqlite,xcb,zlib} +%if %{with system_md4c} +rm -r src/3rdparty/md4c +%endif # Empty file used for the meta packages cat >> meta_package << EOF @@ -887,6 +893,7 @@ rm -r %{buildroot}%{_qt6_mkspecsdir}/features/uikit %{_qt6_libexecdir}/qt-cmake-private %{_qt6_libexecdir}/qt-cmake-private-install.cmake %{_qt6_libexecdir}/qt-cmake-standalone-test +%{_qt6_libexecdir}/qt-internal-configure-examples %{_qt6_libexecdir}/qt-internal-configure-tests %{_qt6_libexecdir}/qvkgen %{_qt6_libexecdir}/rcc diff --git a/qtbase-everywhere-src-6.7.0.tar.xz b/qtbase-everywhere-src-6.7.0.tar.xz deleted file mode 100644 index 5050b33..0000000 --- a/qtbase-everywhere-src-6.7.0.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:11b2e29e2e52fb0e3b453ea13bbe51a10fdff36e1c192d8868c5a40233b8b254 -size 49314276 diff --git a/qtbase-everywhere-src-6.7.1.tar.xz b/qtbase-everywhere-src-6.7.1.tar.xz new file mode 100644 index 0000000..a34073e --- /dev/null +++ b/qtbase-everywhere-src-6.7.1.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7338da1bdccb4d861e714efffaa83f174dfe37e194916bfd7ec82279a6ace19 +size 49324536