From db71d68699444f01e61e6d586b88d0277afb9555a4782cebd32c761d52207a9b Mon Sep 17 00:00:00 2001 From: Christophe Marin Date: Sat, 6 Apr 2024 12:11:02 +0000 Subject: [PATCH] Accepting request 1164304 from home:krop:Qt6:Release Qt 6.7.0. qtwebengine is still building OBS-URL: https://build.opensuse.org/request/show/1164304 OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-base?expand=0&rev=104 --- ...using-Qt-s-full-version-number-in-th.patch | 66 +++++++++++++++++++ 0001-Tell-the-truth-about-private-API.patch | 29 -------- fix_builds_with_Werror.patch | 32 +++++++++ qt6-base.changes | 11 ++++ qt6-base.spec | 37 ++++++----- qtbase-everywhere-src-6.6.3.tar.xz | 3 - qtbase-everywhere-src-6.7.0.tar.xz | 3 + 7 files changed, 131 insertions(+), 50 deletions(-) create mode 100644 0001-CMake-ELF-allow-using-Qt-s-full-version-number-in-th.patch delete mode 100644 0001-Tell-the-truth-about-private-API.patch create mode 100644 fix_builds_with_Werror.patch delete mode 100644 qtbase-everywhere-src-6.6.3.tar.xz create mode 100644 qtbase-everywhere-src-6.7.0.tar.xz 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 new file mode 100644 index 0000000..4af871d --- /dev/null +++ b/0001-CMake-ELF-allow-using-Qt-s-full-version-number-in-th.patch @@ -0,0 +1,66 @@ +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-Tell-the-truth-about-private-API.patch b/0001-Tell-the-truth-about-private-API.patch deleted file mode 100644 index b9c63f0..0000000 --- a/0001-Tell-the-truth-about-private-API.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 25e78cce15fdf737cc48ed5d7683ad1d01b55621 Mon Sep 17 00:00:00 2001 -From: Christophe Giboudeaux -Date: Sun, 20 Sep 2020 09:57:22 +0200 -Subject: [PATCH] Tell the truth about private API - -Mark private API with symbols only for the current patch release - -This change is a port of the libqt5-qtbase patch which was -added during the Qt 5.6 cycle. ---- - cmake/QtFlagHandlingHelpers.cmake | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/cmake/QtFlagHandlingHelpers.cmake b/cmake/QtFlagHandlingHelpers.cmake -index d8597326cc..f9da7b2171 100644 ---- a/cmake/QtFlagHandlingHelpers.cmake -+++ b/cmake/QtFlagHandlingHelpers.cmake -@@ -23,7 +23,7 @@ function(qt_internal_add_linker_version_script target) - endif() - - if(TEST_ld_version_script) -- set(contents "Qt_${PROJECT_VERSION_MAJOR}_PRIVATE_API {\n qt_private_api_tag*;\n") -+ set(contents "Qt_${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}_PRIVATE_API {\n qt_private_api_tag*;\n") - if(arg_PRIVATE_HEADERS) - foreach(ph ${arg_PRIVATE_HEADERS}) - string(APPEND contents " @FILE:${ph}@\n") --- -2.40.0 - diff --git a/fix_builds_with_Werror.patch b/fix_builds_with_Werror.patch new file mode 100644 index 0000000..7e80a69 --- /dev/null +++ b/fix_builds_with_Werror.patch @@ -0,0 +1,32 @@ +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 63f537c..87699eb 100644 --- a/qt6-base.changes +++ b/qt6-base.changes @@ -1,3 +1,14 @@ +------------------------------------------------------------------- +Tue Apr 2 13:39:34 UTC 2024 - Christophe Marin + +- Update to 6.7.0: + * https://www.qt.io/blog/qt-6.7-released +- Replace 0001-Tell-the-truth-about-private-API.patch with + upstream change: + * 0001-CMake-ELF-allow-using-Qt-s-full-version-number-in-th.patch +- Add upstream fix (QTBUG-123937): + * fix_builds_with_Werror.patch + ------------------------------------------------------------------- Tue Mar 26 14:25:22 UTC 2024 - Christophe Marin diff --git a/qt6-base.spec b/qt6-base.spec index 9d1d599..ea6a6ac 100644 --- a/qt6-base.spec +++ b/qt6-base.spec @@ -16,8 +16,8 @@ # -%define real_version 6.6.3 -%define short_version 6.6 +%define real_version 6.7.0 +%define short_version 6.7 %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.6.3 +Version: 6.7.0 Release: 0 Summary: Qt 6 core components (Core, Gui, Widgets, Network...) # Legal: qtpaths is BSD-3-Clause @@ -39,8 +39,9 @@ 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: fix_builds_with_Werror.patch # Patches 100-200 are openSUSE and/or non-upstream(able) patches # -Patch100: 0001-Tell-the-truth-about-private-API.patch +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 %if 0%{?suse_version} == 1500 @@ -771,24 +772,25 @@ sed -i '/zstd CONFIG/d' cmake/FindWrapZSTD.cmake -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo \ -DQT_BUILD_EXAMPLES:BOOL=TRUE \ -DQT_BUILD_TESTS:BOOL=FALSE \ - -DQT_CREATE_VERSIONED_HARD_LINK:BOOL=OFF \ - -DQT_DISABLE_RPATH:BOOL=OFF \ + -DQT_CREATE_VERSIONED_HARD_LINK:BOOL=FALSE \ + -DQT_DISABLE_RPATH:BOOL=FALSE \ %ifnarch ppc64 - -DCMAKE_INTERPROCEDURAL_OPTIMIZATION:BOOL=ON \ + -DCMAKE_INTERPROCEDURAL_OPTIMIZATION:BOOL=TRUE \ %endif - -DFEATURE_enable_new_dtags:BOOL=ON \ - -DFEATURE_journald:BOOL=ON \ - -DFEATURE_libproxy:BOOL=ON \ - -DFEATURE_reduce_relocations:BOOL=OFF \ - -DFEATURE_relocatable:BOOL=OFF \ - -DFEATURE_system_sqlite:BOOL=ON \ - -DFEATURE_system_xcb_xinput:BOOL=ON \ - -DFEATURE_xcb_native_painting:BOOL=ON \ + -DFEATURE_elf_private_full_version=TRUE \ + -DFEATURE_enable_new_dtags:BOOL=TRUE \ + -DFEATURE_journald:BOOL=TRUE \ + -DFEATURE_libproxy:BOOL=TRUE \ + -DFEATURE_reduce_relocations:BOOL=FALSE \ + -DFEATURE_relocatable:BOOL=FALSE \ + -DFEATURE_system_sqlite:BOOL=TRUE \ + -DFEATURE_system_xcb_xinput:BOOL=TRUE \ + -DFEATURE_xcb_native_painting:BOOL=TRUE \ -DINPUT_openssl:STRING=linked \ - -DFEATURE_forkfd_pidfd:BOOL=OFF \ + -DFEATURE_forkfd_pidfd:BOOL=FALSE \ %if 0%{?with_gles} -DINPUT_opengl:STRING=es2 \ - -DFEATURE_opengles3:BOOL=ON + -DFEATURE_opengles3:BOOL=TRUE %endif %{qt6_build} @@ -816,7 +818,6 @@ rm %{buildroot}%{_qt6_mkspecsdir}/modules/qt_lib_concurrent_private.pri rm %{buildroot}%{_qt6_mkspecsdir}/modules/qt_lib_openglwidgets_private.pri # These files are only useful for the Qt continuous integration -rm %{buildroot}%{_qt6_libexecdir}/android_*.sh rm %{buildroot}%{_qt6_libexecdir}/ensure_pro_file.cmake rm %{buildroot}%{_qt6_libexecdir}/qt-testrunner.py rm %{buildroot}%{_qt6_libexecdir}/sanitizer-testrunner.py diff --git a/qtbase-everywhere-src-6.6.3.tar.xz b/qtbase-everywhere-src-6.6.3.tar.xz deleted file mode 100644 index 95efa81..0000000 --- a/qtbase-everywhere-src-6.6.3.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0493fd0b380c4edf8872f011a7f26d245aa4cdd75b349904ef340a22dedf7462 -size 48784716 diff --git a/qtbase-everywhere-src-6.7.0.tar.xz b/qtbase-everywhere-src-6.7.0.tar.xz new file mode 100644 index 0000000..5050b33 --- /dev/null +++ b/qtbase-everywhere-src-6.7.0.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11b2e29e2e52fb0e3b453ea13bbe51a10fdff36e1c192d8868c5a40233b8b254 +size 49314276