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:
parent
af544a6f07
commit
6766f8c191
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
@ -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
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:11b2e29e2e52fb0e3b453ea13bbe51a10fdff36e1c192d8868c5a40233b8b254
|
||||
size 49314276
|
3
qtbase-everywhere-src-6.7.1.tar.xz
Normal file
3
qtbase-everywhere-src-6.7.1.tar.xz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b7338da1bdccb4d861e714efffaa83f174dfe37e194916bfd7ec82279a6ace19
|
||||
size 49324536
|
Loading…
Reference in New Issue
Block a user