From ca806c6e6856fd8b2d9d26966f6feb125af6184ae53e51ee2bbf8e2278806e5f Mon Sep 17 00:00:00 2001 From: Luca Beltrame Date: Fri, 26 May 2023 05:58:40 +0000 Subject: [PATCH] Accepting request 1088916 from home:krop:Qt6:Release Qt 6.5.1 OBS-URL: https://build.opensuse.org/request/show/1088916 OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-base?expand=0&rev=52 --- ...stall-objects-files-into-ARCHDATADIR.patch | 52 +++++++ ...-DEPRECATED_VERSION-for-setActiveWin.patch | 32 ----- ...port-for-metatypes-created-by-Qt-6.5.patch | 131 ------------------ qt6-base-rpmlintrc | 3 + qt6-base.changes | 11 ++ qt6-base.spec | 36 ++++- qtbase-everywhere-src-6.5.0.tar.xz | 3 - qtbase-everywhere-src-6.5.1.tar.xz | 3 + 8 files changed, 100 insertions(+), 171 deletions(-) create mode 100644 0001-CMake-Install-objects-files-into-ARCHDATADIR.patch delete mode 100644 0001-QApplication-Fix-DEPRECATED_VERSION-for-setActiveWin.patch delete mode 100644 0001-QVariant-Fix-support-for-metatypes-created-by-Qt-6.5.patch delete mode 100644 qtbase-everywhere-src-6.5.0.tar.xz create mode 100644 qtbase-everywhere-src-6.5.1.tar.xz diff --git a/0001-CMake-Install-objects-files-into-ARCHDATADIR.patch b/0001-CMake-Install-objects-files-into-ARCHDATADIR.patch new file mode 100644 index 0000000..9b0e34f --- /dev/null +++ b/0001-CMake-Install-objects-files-into-ARCHDATADIR.patch @@ -0,0 +1,52 @@ +From 4e517492a03b6c0b710a2d9a3df05922ac233992 Mon Sep 17 00:00:00 2001 +From: Christophe Marin +Date: Wed, 24 May 2023 11:23:39 +0200 +Subject: [PATCH] CMake: Install objects files into 'ARCHDATADIR' + +Change-Id: I917a9ef4d83f93eb5c3e47964bf1814d1b53fdab +--- + cmake/QtResourceHelpers.cmake | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/cmake/QtResourceHelpers.cmake b/cmake/QtResourceHelpers.cmake +index 2df1fed50f..e4f34b5ff1 100644 +--- a/cmake/QtResourceHelpers.cmake ++++ b/cmake/QtResourceHelpers.cmake +@@ -38,7 +38,7 @@ function(qt_internal_add_resource target resourceName) + if (out_targets) + qt_install(TARGETS ${out_targets} + EXPORT "${INSTALL_CMAKE_NAMESPACE}${target}Targets" +- DESTINATION "${INSTALL_LIBDIR}" ++ DESTINATION "${INSTALL_ARCHDATADIR}" + ) + qt_internal_add_targets_to_additional_targets_export_file( + TARGETS ${out_targets} +@@ -47,7 +47,7 @@ function(qt_internal_add_resource target resourceName) + + qt_internal_install_resource_pdb_files("${out_targets}") + qt_internal_record_rcc_object_files("${target}" "${out_targets}" +- INSTALL_DIRECTORY "${INSTALL_LIBDIR}") ++ INSTALL_DIRECTORY "${INSTALL_ARCHDATADIR}") + endif() + + if (arg_OUTPUT_TARGETS) +@@ -77,7 +77,7 @@ function(qt_internal_record_rcc_object_files target resource_targets) + # It's comprised of thee following path parts: + # + # part (1) INSTALL_DIRECTORY. +- # A usual value is '${INSTALL_LIBDIR}/' for libraries ++ # A usual value is '${INSTALL_ARCHDATADIR}/' for libraries + # and '${INSTALL_QMLDIR}/foo/bar/' for qml plugin resources. + # + # part (2) the value computed by CMake's computeInstallObjectDir comprised of an +@@ -128,6 +128,6 @@ function(qt_internal_install_resource_pdb_files objlib_targets) + _qt_resource_generated_cpp_relative_path) + get_filename_component(rel_obj_file_dir "${generated_cpp_file_relative_path}" DIRECTORY) + qt_internal_install_pdb_files(${target} +- "${INSTALL_LIBDIR}/objects-$/${target}/${rel_obj_file_dir}") ++ "${INSTALL_ARCHDATADIR}/objects-$/${target}/${rel_obj_file_dir}") + endforeach() + endfunction() +-- +2.40.1 + diff --git a/0001-QApplication-Fix-DEPRECATED_VERSION-for-setActiveWin.patch b/0001-QApplication-Fix-DEPRECATED_VERSION-for-setActiveWin.patch deleted file mode 100644 index 95c35c1..0000000 --- a/0001-QApplication-Fix-DEPRECATED_VERSION-for-setActiveWin.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 99975ec07feb6b1a9f6be9e0d392a35e40f9550a Mon Sep 17 00:00:00 2001 -From: Nicolas Fella -Date: Tue, 14 Mar 2023 19:14:41 +0100 -Subject: [PATCH] QApplication: Fix DEPRECATED_VERSION for setActiveWindow - -It's not deprecated in 6.4, only 6.5 - -Pick-to: 6.5 -Change-Id: I86a09b9ce5a7f4d8b1d80a6e67218dfe00f93844 -Reviewed-by: Volker Hilsheimer ---- - src/widgets/kernel/qapplication.h | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/widgets/kernel/qapplication.h b/src/widgets/kernel/qapplication.h -index c4c73d4cf8..fd698fb69f 100644 ---- a/src/widgets/kernel/qapplication.h -+++ b/src/widgets/kernel/qapplication.h -@@ -79,8 +79,8 @@ public: - - static QWidget *activeWindow(); - --#if QT_DEPRECATED_SINCE(6,4) -- QT_DEPRECATED_VERSION_X_6_4("Use QWidget::activateWindow() instead.") -+#if QT_DEPRECATED_SINCE(6, 5) -+ QT_DEPRECATED_VERSION_X_6_5("Use QWidget::activateWindow() instead.") - static void setActiveWindow(QWidget* act); - #endif - --- -2.40.0 - diff --git a/0001-QVariant-Fix-support-for-metatypes-created-by-Qt-6.5.patch b/0001-QVariant-Fix-support-for-metatypes-created-by-Qt-6.5.patch deleted file mode 100644 index 4eb525e..0000000 --- a/0001-QVariant-Fix-support-for-metatypes-created-by-Qt-6.5.patch +++ /dev/null @@ -1,131 +0,0 @@ -From 42c87e932c308c6269c4195091adae24bce90af1 Mon Sep 17 00:00:00 2001 -From: Fabian Kosmale -Date: Thu, 27 Apr 2023 09:40:17 +0200 -Subject: [PATCH] QVariant: Fix support for metatypes created by Qt < 6.5 - -In Qt >= 6.1, < 6.5, a trivially constructible type would have the -NeedsDestruction flag set, but it's dtor pointer would have been null. - -In Qt 6.5, the meaning of the NeedsDestruction flag was changed to be -more aligned with what the name suggests, and thus would only be set for -non-trivially destructible types. For QMetaType this was fine, but -QVariant has a check for acceptable metatypes which attempts to verify -whether a QMetaType is usable for QVariant. The check assumes the -semantics of Qt 6.5, and thus fails for metatypes created by older Qt -versions. - -To fix this issue, we increment the QMetaType revision field, and only -check the metatype's destruction support if the revision is high enough. - -In theory, that allows passing unsuitable metatypes from older Qt -versions to QVariant; however, such code would have been broken in prior -Qt releases already (which didn't attempt the check), and no code that -used to work in any released Qt version will break (as we simply skip a -check that was passing before). - -Fixes: QTBUG-113227 -Pick-to: 6.5 -Change-Id: I12e02bd97d2c410ea1a36efb0ce2389f21d50a30 -Reviewed-by: Ulf Hermann ---- - src/corelib/kernel/qmetatype.h | 11 ++++++-- - src/corelib/kernel/qmetatype_p.h | 7 ++++- - .../corelib/kernel/qvariant/tst_qvariant.cpp | 28 +++++++++++++++++++ - 3 files changed, 43 insertions(+), 3 deletions(-) - -diff --git a/src/corelib/kernel/qmetatype.h b/src/corelib/kernel/qmetatype.h -index e70f901..a641313 100644 ---- a/src/corelib/kernel/qmetatype.h -+++ b/src/corelib/kernel/qmetatype.h -@@ -246,7 +246,14 @@ using NonConstMetaTypeInterface = const QMetaTypeInterface; - class QMetaTypeInterface - { - public: -- ushort revision; // 0 in Qt 6.0. Can increase if new field are added -+ -+ /* Revision: Can increase if new field are added, or if semantics changes -+ 0: Initial Revision -+ 1: the meaning of the NeedsDestruction flag changed -+ */ -+ static inline constexpr ushort CurrentRevision = 1; -+ -+ ushort revision; - ushort alignment; - uint size; - uint flags; -@@ -2461,7 +2468,7 @@ struct QMetaTypeInterfaceWrapper - using InterfaceType = std::conditional_t; - - static inline InterfaceType metaType = { -- /*.revision=*/ 0, -+ /*.revision=*/ QMetaTypeInterface::CurrentRevision, - /*.alignment=*/ alignof(T), - /*.size=*/ sizeof(T), - /*.flags=*/ QMetaTypeForType::Flags, -diff --git a/src/corelib/kernel/qmetatype_p.h b/src/corelib/kernel/qmetatype_p.h -index 3defbc7..e649394 100644 ---- a/src/corelib/kernel/qmetatype_p.h -+++ b/src/corelib/kernel/qmetatype_p.h -@@ -152,7 +152,12 @@ inline bool isMoveConstructible(const QtPrivate::QMetaTypeInterface *iface) noex - - inline bool isDestructible(const QtPrivate::QMetaTypeInterface *iface) noexcept - { -- return checkMetaTypeFlagOrPointer(iface, iface->dtor, QMetaType::NeedsDestruction); -+ /* For metatypes of revision 1, the NeedsDestruction was set even for trivially -+ destructible types, but their dtor pointer would be null. -+ For that reason, we need the additional check here. -+ */ -+ return iface->revision < 1 || -+ checkMetaTypeFlagOrPointer(iface, iface->dtor, QMetaType::NeedsDestruction); - } - - inline void defaultConstruct(const QtPrivate::QMetaTypeInterface *iface, void *where) -diff --git a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp -index 61a8e76..9dfc143 100644 ---- a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp -+++ b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp -@@ -331,6 +331,7 @@ private slots: - - void constructFromIncompatibleMetaType_data(); - void constructFromIncompatibleMetaType(); -+ void constructFromQtLT65MetaType(); - void copyNonDefaultConstructible(); - - private: -@@ -5636,6 +5637,33 @@ void tst_QVariant::constructFromIncompatibleMetaType() - QVERIFY(!QVariant(regular).convert(type)); - } - -+void tst_QVariant::constructFromQtLT65MetaType() -+{ -+ auto qsizeIface = QtPrivate::qMetaTypeInterfaceForType(); -+ -+ QtPrivate::QMetaTypeInterface qsize64Iface = { -+ /*revision*/0, -+ 8, -+ 8, -+ QMetaType::NeedsConstruction | QMetaType::NeedsDestruction, -+ 0, -+ qsizeIface->metaObjectFn, -+ "FakeQSize", -+ qsizeIface->defaultCtr, -+ qsizeIface->copyCtr, -+ qsizeIface->moveCtr, -+ /*dtor =*/ nullptr, -+ qsizeIface->equals, -+ qsizeIface->lessThan, -+ qsizeIface->debugStream, -+ qsizeIface->dataStreamOut, -+ qsizeIface->dataStreamIn, -+ /*legacyregop =*/ nullptr -+ }; -+ QVariant var{ QMetaType(&qsize64Iface) }; -+ QVERIFY(var.isValid()); -+} -+ - void tst_QVariant::copyNonDefaultConstructible() - { - NonDefaultConstructible ndc(42); --- -2.40.0 - diff --git a/qt6-base-rpmlintrc b/qt6-base-rpmlintrc index ef5f323..e240a87 100644 --- a/qt6-base-rpmlintrc +++ b/qt6-base-rpmlintrc @@ -7,3 +7,6 @@ addFilter("no-dependency-on .*") # Only libraries used at link time are guaranteed to work addFilter("shlib-fixed-dependency .*") + +# libQt6ExampleIcons.a only contains embedded icons, there's nothing to extract +addFilter("lto-no-text-in-archive .*libQt6ExampleIcons.a") diff --git a/qt6-base.changes b/qt6-base.changes index c3a09bb..a5728ef 100644 --- a/qt6-base.changes +++ b/qt6-base.changes @@ -1,3 +1,14 @@ +------------------------------------------------------------------- +Wed May 24 07:45:34 UTC 2023 - Christophe Marin + +- Update to 6.5.1 + * https://www.qt.io/blog/qt-6.5.1-released +- Drop patches, merged upstream: + * 0001-QApplication-Fix-DEPRECATED_VERSION-for-setActiveWin.patch + * 0001-QVariant-Fix-support-for-metatypes-created-by-Qt-6.5.patch +- Add patch + * 0001-CMake-Install-objects-files-into-ARCHDATADIR.patch + ------------------------------------------------------------------- Fri Apr 28 13:56:55 UTC 2023 - Christophe Marin diff --git a/qt6-base.spec b/qt6-base.spec index 97653d9..878d186 100644 --- a/qt6-base.spec +++ b/qt6-base.spec @@ -16,7 +16,7 @@ # -%define real_version 6.5.0 +%define real_version 6.5.1 %define short_version 6.5 %define tar_name qtbase-everywhere-src %define tar_suffix %{nil} @@ -30,7 +30,7 @@ %global with_gles 1 %endif Name: qt6-base%{?pkg_suffix} -Version: 6.5.0 +Version: 6.5.1 Release: 0 Summary: Qt 6 core components (Core, Gui, Widgets, Network...) # Legal: qtpaths is BSD-3-Clause @@ -39,12 +39,12 @@ 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 Source99: qt6-base-rpmlintrc # Patches 0-100 are upstream patches # -Patch0: 0001-QApplication-Fix-DEPRECATED_VERSION-for-setActiveWin.patch -Patch1: 0001-QVariant-Fix-support-for-metatypes-created-by-Qt-6.5.patch # Patches 100-200 are openSUSE and/or non-upstream(able) patches # Patch100: 0001-Tell-the-truth-about-private-API.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 %if 0%{?suse_version} == 1500 -Patch101: 0001-Require-GCC-10.patch +Patch102: 0001-Require-GCC-10.patch %endif ## BuildRequires: cmake >= 3.18.3 @@ -577,6 +577,15 @@ This package contains common files used for building Qt documentation. ### Static libraries ### +%package -n qt6-exampleicons-devel-static +Summary: Qt ExampleIcons module +# TODO +Requires: qt6-core-private-devel = %{version} +Requires: qt6-gui-private-devel = %{version} + +%description -n qt6-exampleicons-devel-static +Qt icon library for examples. This private library can be used by Qt examples. + %package -n qt6-kmssupport-devel-static Summary: Qt KMSSupport module Requires: qt6-core-private-devel = %{version} @@ -728,6 +737,10 @@ cat >> meta_package << EOF This is a meta package, it does not contain any file EOF +# Work around an issue with zstd CMake files (boo#1211566) +# TODO: Remove when the issue is fixed +sed -i '/zstd CONFIG/d' cmake/FindWrapZSTD.cmake + %build %define _lto_cflags %{nil} @@ -1154,6 +1167,19 @@ rm -r %{buildroot}%{_qt6_mkspecsdir}/features/uikit ### Static libraries ### +%files -n qt6-exampleicons-devel-static +%doc src/assets/icons/README +%{_qt6_cmakedir}/Qt6ExampleIconsPrivate/ +%{_qt6_descriptionsdir}/ExampleIconsPrivate.json +%{_qt6_includedir}/QtExampleIcons/ +%{_qt6_libdir}/libQt6ExampleIcons.a +%{_qt6_libdir}/libQt6ExampleIcons.prl +# There's no mistake, this folder needs to be installed +# These are CMake objects files which are not part of any library +%dir %{_qt6_archdatadir}/objects-RelWithDebInfo +%{_qt6_archdatadir}/objects-RelWithDebInfo/ExampleIconsPrivate_resources_1/ +%{_qt6_metatypesdir}/qt6exampleiconsprivate_*_metatypes.json + %files -n qt6-kmssupport-devel-static %{_qt6_cmakedir}/Qt6KmsSupportPrivate/ %{_qt6_descriptionsdir}/KmsSupportPrivate.json diff --git a/qtbase-everywhere-src-6.5.0.tar.xz b/qtbase-everywhere-src-6.5.0.tar.xz deleted file mode 100644 index 7c4d774..0000000 --- a/qtbase-everywhere-src-6.5.0.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fde1aa7b4fbe64ec1b4fc576a57f4688ad1453d2fab59cbadd948a10a6eaf5ef -size 48020636 diff --git a/qtbase-everywhere-src-6.5.1.tar.xz b/qtbase-everywhere-src-6.5.1.tar.xz new file mode 100644 index 0000000..e962271 --- /dev/null +++ b/qtbase-everywhere-src-6.5.1.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db56fa1f4303a1189fe33418d25d1924931c7aef237f89eea9de58e858eebfed +size 48287392