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 ```ci/unstable
parent
fce6bfb6a2
commit
a587165847
@ -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?=
|
||||||
|
<perezmeyer@gmail.com>
|
||||||
|
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] <https://sources.debian.org/src/martchus-qtutilities/6.10.0-1/cmake/modules/QtConfig.cmake/?hl=35#L35>
|
||||||
|
|
||||||
|
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
|
||||||
|
|
@ -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 <lisandro@debian.org>
|
||||||
|
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}\")
|
Loading…
Reference in new issue