From a587165847735fb8c558128dfc6acbdf3430358a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lisandro=20Dami=C3=A1n=20Nicanor=20P=C3=A9rez=20Meyer?= Date: Thu, 2 Nov 2023 09:58:06 -0300 Subject: [PATCH] These are not really needed for building Debian packages. If you think you need them: - Be sure to reach us Qt maintainers so we can learn from your use case. - You are free to define the to OFF: ```bash cmake -DQT_SKIP_AUTO_PLUGIN_INCLUSION=OFF -DQT_SKIP_AUTO_QML_PLUGIN_INCLUSION=OFF ``` --- debian/changelog | 12 +++ .../be_verbose_on_plugin_inclusion.patch | 82 +++++++++++++++++++ debian/patches/enable_skip_plugins.patch | 39 +++++++++ debian/patches/series | 4 + 4 files changed, 137 insertions(+) create mode 100644 debian/patches/be_verbose_on_plugin_inclusion.patch create mode 100644 debian/patches/enable_skip_plugins.patch diff --git a/debian/changelog b/debian/changelog index e4ab40c..f5f3a49 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,15 @@ +qt6-base (6.6.0+dfsg-5.1) UNRELEASED; urgency=medium + + [ Lisandro Damián Nicanor Pérez Meyer ] + * Add two patches: + - be_verbose_on_plugin_inclusion.patch currently on upstream's Gerrit. + - enable_skip_plugins.patch + These set QT_SKIP_AUTO_PLUGIN_INCLUSION and + QT_SKIP_AUTO_QML_PLUGIN_INCLUSION to ON by default, thus avoiding + unnecesary build dependencies on plugins. + + -- Debian Qt/KDE Maintainers Wed, 01 Nov 2023 18:16:57 -0300 + qt6-base (6.6.0+dfsg-4) experimental; urgency=medium [ Patrick Franz ] diff --git a/debian/patches/be_verbose_on_plugin_inclusion.patch b/debian/patches/be_verbose_on_plugin_inclusion.patch new file mode 100644 index 0000000..1817e6d --- /dev/null +++ b/debian/patches/be_verbose_on_plugin_inclusion.patch @@ -0,0 +1,82 @@ +From c8e2cdda704dbe2c381091fe687653cdf2b191ca Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Lisandro=20Dami=C3=A1n=20Nicanor=20P=C3=A9rez=20Meyer?= + +Date: Wed, 1 Nov 2023 21:41:59 -0300 +Subject: [PATCH] Be verbose on plugin inclusion, easy patch point for distros + +TL;DR: This creates two changes: + +1. Makes the plugin inclusion status more visible for builders for both Qt + itself and applications. +2. Allows a simple patch-point for distros to change the default + (perhaps not ideal, but good enough). +3. Does not changes the current behavior. + +As discussed both in the mailing list and privately with +Alexandru Croitor and Joerg Bornemann this makes a lot os sense for Qt +on static builds and when trying to find where the plugins are so they +can be easily packaged up in order to distribute a build with all the +dependencies on it. + +But at the same time it makes no sense for distributions building the +libraries in dynamic mode as it forces unnecesary build time +dependencies for for both Qt and applications like QML modules or even +PostgreSQL! [0]. + +[0] + +Other approaches have been considered like not shipping specific CMake +files, but this depends on the packager finding the right ones at the +right time, and does not allows end users to change the behavior if they +happen to need it. + +Change-Id: Id32fbc0cf0f289edd4426fb703cf1195288aacb4 +Gerrit: https://codereview.qt-project.org/c/qt/qtbase/+/515440 +--- + cmake/QtPlugins.cmake.in | 9 +++++++++ + cmake/QtPostProcessHelpers.cmake | 9 +++++++++ + 2 files changed, 18 insertions(+) + +diff --git a/cmake/QtPlugins.cmake.in b/cmake/QtPlugins.cmake.in +index 405d5f37b9..c951eaae42 100644 +--- a/cmake/QtPlugins.cmake.in ++++ b/cmake/QtPlugins.cmake.in +@@ -1,6 +1,15 @@ + include_guard(DIRECTORY) + @QT_MODULE_PLUGIN_INCLUDES@ + ++# Distributions should probably change this default. ++if(NOT DEFINED QT_SKIP_AUTO_PLUGIN_INCLUSION) ++ set(QT_SKIP_AUTO_PLUGIN_INCLUSION OFF) ++endif() ++ ++if(QT_REPO_MODULE_VERSION) ++ message(STATUS "Skip auto plugin inclusion is set to ${QT_SKIP_AUTO_PLUGIN_INCLUSION}") ++endif() ++ + if(NOT QT_NO_CREATE_TARGETS AND NOT QT_SKIP_AUTO_PLUGIN_INCLUSION) + __qt_internal_include_plugin_packages(@QT_MODULE@) + endif() +diff --git a/cmake/QtPostProcessHelpers.cmake b/cmake/QtPostProcessHelpers.cmake +index 83bcabe49b..82a88565a6 100644 +--- a/cmake/QtPostProcessHelpers.cmake ++++ b/cmake/QtPostProcessHelpers.cmake +@@ -446,6 +446,15 @@ function(qt_internal_create_plugins_auto_inclusion_files) + # TODO: Find a better way to deal with this, perhaps by using find_package() instead of include + # for the Qml PluginConfig.cmake files. + ++# Distributions should probably change this default. ++if(NOT DEFINED QT_SKIP_AUTO_QML_PLUGIN_INCLUSION) ++ set(QT_SKIP_AUTO_QML_PLUGIN_INCLUSION OFF) ++endif() ++ ++if(QT_REPO_MODULE_VERSION) ++ message(STATUS \"Skip auto QML plugin inclusion is set to \${QT_SKIP_AUTO_QML_PLUGIN_INCLUSION}\") ++endif() ++ + file(GLOB __qt_qml_plugins_config_file_list \"\${CMAKE_CURRENT_LIST_DIR}/QmlPlugins/${INSTALL_CMAKE_NAMESPACE}*Config.cmake\") + if (__qt_qml_plugins_config_file_list AND NOT QT_SKIP_AUTO_QML_PLUGIN_INCLUSION) + # First round of inclusions ensure all qml plugin targets are brought into scope. +-- +2.42.0 + diff --git a/debian/patches/enable_skip_plugins.patch b/debian/patches/enable_skip_plugins.patch new file mode 100644 index 0000000..eefa28c --- /dev/null +++ b/debian/patches/enable_skip_plugins.patch @@ -0,0 +1,39 @@ +Description: Enable skipping plugins search at build time. + This patch sets + QT_SKIP_AUTO_PLUGIN_INCLUSION and QT_SKIP_AUTO_QML_PLUGIN_INCLUSION to ON + by default, thus avoiding unnecesary build dependencies on plugins. + . + The variables can still be set to OFF by the user at build time, allowing + them to find the packages if necessary. But if you need so for a Debian + package please reach the Qt maintainers first. We want to know why you + need to do so. Thanks in advance! +Author: Lisandro Damián Nicanor Pérez Meyer +Forwarded: not-needed + +--- + cmake/QtPlugins.cmake.in | 2 +- + cmake/QtPostProcessHelpers.cmake | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +--- a/cmake/QtPlugins.cmake.in ++++ b/cmake/QtPlugins.cmake.in +@@ -3,7 +3,7 @@ include_guard(DIRECTORY) + + # Distributions should probably change this default. + if(NOT DEFINED QT_SKIP_AUTO_PLUGIN_INCLUSION) +- set(QT_SKIP_AUTO_PLUGIN_INCLUSION OFF) ++ set(QT_SKIP_AUTO_PLUGIN_INCLUSION ON) + endif() + + message(STATUS "Skip auto plugin inclusion is set to ${QT_SKIP_AUTO_PLUGIN_INCLUSION}") +--- a/cmake/QtPostProcessHelpers.cmake ++++ b/cmake/QtPostProcessHelpers.cmake +@@ -448,7 +448,7 @@ function(qt_internal_create_plugins_auto + + # Distributions should probably change this default. + if(NOT DEFINED QT_SKIP_AUTO_QML_PLUGIN_INCLUSION) +- set(QT_SKIP_AUTO_QML_PLUGIN_INCLUSION OFF) ++ set(QT_SKIP_AUTO_QML_PLUGIN_INCLUSION ON) + endif() + + message(STATUS \"Skip auto QML plugin inclusion is set to \${QT_SKIP_AUTO_QML_PLUGIN_INCLUSION}\") diff --git a/debian/patches/series b/debian/patches/series index 49c3dae..21686e4 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -4,12 +4,16 @@ libxkbcommon_1.6.0.diff # Needs to be fixed upstream. Add-SH-detection.patch +# Pushed to gerrit +be_verbose_on_plugin_inclusion.patch + # Debian specific remove_privacy_breaches.diff build_path_embedded_qtbuildinternalsextra_cmake.patch cross.patch remove_rpath_from_examples.patch forkfd_grow_stack_upwards_on_hppa.patch +enable_skip_plugins.patch # Don't use yield on CPUs that might not support it armel-noyield.patch