Accepting request 1175612 from home:krop:Qt6:Release

Qt 6.7.1

OBS-URL: https://build.opensuse.org/request/show/1175612
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-base?expand=0&rev=108
This commit is contained in:
Christophe Marin 2024-05-23 08:31:36 +00:00 committed by Git OBS Bridge
parent af544a6f07
commit 6766f8c191
7 changed files with 31 additions and 277 deletions

View File

@ -1,66 +0,0 @@
From bccbdc225505eb39458336922fa30f87fd81476a Mon Sep 17 00:00:00 2001
From: Thiago Macieira <thiago.macieira@intel.com>
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 <alexey.edelev@qt.io>
(cherry picked from commit e0940081bc7439d87d9ca41402a543a9c17fb857)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
---
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

View File

@ -1,166 +0,0 @@
From 7c4e1357e49baebdd2d20710fccb5604cbb36c0d Mon Sep 17 00:00:00 2001
From: Fabian Kosmale <fabian.kosmale@qt.io>
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 <marc.mutz@qt.io>
Pick-to: 6.5
Change-Id: I70d4dc00e3e0db6cad964579662bcf6d185a4c34
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
(cherry picked from commit 39bbfce9b675c9085ef49c9b9c52c146eca55e4a)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
---
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

View File

@ -1,32 +0,0 @@
From a0439a7370df302e4a8f0402249b1aa2b1aeab4b Mon Sep 17 00:00:00 2001
From: Albert Astals Cid <aacid@kde.org>
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 <typename S, size_t N, if_qualification_conversion<S> = true>
Q_IMPLICIT constexpr QSpanBase(std::span<S, N> other) noexcept
: QSpanBase(other.data(), other.size())
--
2.44.0

View File

@ -1,7 +1,18 @@
-------------------------------------------------------------------
Tue May 21 08:31:24 UTC 2024 - Christophe Marin <christophe@krop.fr>
- 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 <christophe@krop.fr>
- Add upstream security fix (CVE-2024-33861):
- Add upstream security fix (CVE-2024-33861, boo#1223917):
* 0001-QStringConverterICU-Pass-correct-pointer-to-callback.patch
-------------------------------------------------------------------

View File

@ -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

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:11b2e29e2e52fb0e3b453ea13bbe51a10fdff36e1c192d8868c5a40233b8b254
size 49314276

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b7338da1bdccb4d861e714efffaa83f174dfe37e194916bfd7ec82279a6ace19
size 49324536