tb@ reported the following build error msg to me:

CMake Error at /usr/local/lib/cmake/Qt6Qml/Qt6QmlPlugins.cmake:47 (include):
  include could not find requested file:

    
/usr/local/lib/cmake/Qt6Qml/QmlPlugins/Qt6qtwebenginequickdelegatespluginConfig.cmake
Call Stack (most recent call first):
  /usr/local/lib/cmake/Qt6Qml/Qt6QmlConfig.cmake:147 (include)
  /usr/local/lib/cmake/Qt6/Qt6Config.cmake:190 (find_package)
  /usr/local/share/ECM/modules/ECMQmlModule6.cmake:9 (find_package)
  /usr/local/share/ECM/modules/ECMQmlModule.cmake:249 (include)
  CMakeLists.txt:33 (include)

First of all, you can read the trace from the button upwards. It starts
in line 33 in the CMakeLists.txt file:

    33 include(ECMQmlModule)

Of course, ECMQmlModule6 sounds like it tries to find QtQML and it does:

    9 find_package(Qt6 COMPONENTS Core Qml CONFIG)

Qt6QmlConfig includes Qt6QmlPlugins and the fun part begins:


    36 foreach(__qt_qml_plugin_glob_prefix IN LISTS 
__qt_qml_plugins_glob_prefixes)
    37     file(GLOB __qt_qml_plugins_glob_config_file_list
    38         "${__qt_qml_plugin_glob_prefix}/QmlPlugins/Qt6*Config.cmake")
    39     if(__qt_qml_plugins_glob_config_file_list)
    40         list(APPEND __qt_qml_plugins_config_file_list 
${__qt_qml_plugins_glob_config_file_list})
    41     endif()
    42 endforeach()
    43
    44 if (__qt_qml_plugins_config_file_list AND NOT 
QT_SKIP_AUTO_QML_PLUGIN_INCLUSION)
    45     # First round of inclusions ensure all qml plugin targets are 
brought into scope.
    46     foreach(__qt_qml_plugin_config_file 
${__qt_qml_plugins_config_file_list})
    47         include(${__qt_qml_plugin_config_file})

Line 40 collects all present QmlPlugins/Qt6*Config.cmake (aka
present/installed Qml Plugins) in __qt_qml_plugins_config_file_list.
Afterwards it tries to include the cmake config files in line 47.

What tb@ saw was that Qt6qtwebenginequickdelegatespluginConfig.cmake war
present during the collection loop but no longer during the include
loop. My strong suspicion is that it was junked.

In line 44 we can see QT_SKIP_AUTO_QML_PLUGIN_INCLUSION. Which can be
interesting for us, especially if we read the comment: "Distributions
should probably change this default.".

After a quick search in the Linux world, we can see that OpenSuse does
this. For me the best reference for Qt and Linux:

https://build.opensuse.org/projects/home:simotek:cmake4/packages/qt6-base/files/0001-Change-default-settings-for-Qt-packages.patch?expand=1

Long story short, I would like to throw this diff into a bulk and if it
is successful I want to commit it.

Feedback welcome!

Index: Makefile
===================================================================
RCS file: /cvs/ports/x11/qt6/qtbase/Makefile,v
diff -u -p -r1.40 Makefile
--- Makefile    14 Feb 2025 07:45:14 -0000      1.40
+++ Makefile    21 Mar 2025 07:30:52 -0000
@@ -4,7 +4,7 @@ COMMENT-main =          C++ general-purpose tool
 COMMENT-global =       global Qt6 documentation internals
 COMMENT-mysql =                MySQL plugin for Qt6
 COMMENT-psql =         PostgresSQL plugin for Qt6
-REVISION-main =                1
+REVISION-main =                2
 
 PKGSPEC-main =         qt6-qtbase-${QT6_PKGSPEC}
 
Index: patches/patch-cmake_QtPlugins_cmake_in
===================================================================
RCS file: patches/patch-cmake_QtPlugins_cmake_in
diff -N patches/patch-cmake_QtPlugins_cmake_in
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-cmake_QtPlugins_cmake_in      21 Mar 2025 07:30:52 -0000
@@ -0,0 +1,14 @@
+Enable QT_SKIP_AUTO_PLUGIN_INCLUSION and QT_SKIP_AUTO_QML_PLUGIN_INCLUSION by
+default
+Index: cmake/QtPlugins.cmake.in
+--- cmake/QtPlugins.cmake.in.orig
++++ cmake/QtPlugins.cmake.in
+@@ -6,7 +6,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()
+ 
+ if(NOT QT_NO_CREATE_TARGETS AND NOT QT_SKIP_AUTO_PLUGIN_INCLUSION)
Index: patches/patch-cmake_QtPostProcessHelpers_cmake
===================================================================
RCS file: patches/patch-cmake_QtPostProcessHelpers_cmake
diff -N patches/patch-cmake_QtPostProcessHelpers_cmake
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-cmake_QtPostProcessHelpers_cmake      21 Mar 2025 07:30:52 
-0000
@@ -0,0 +1,14 @@
+Enable QT_SKIP_AUTO_PLUGIN_INCLUSION and QT_SKIP_AUTO_QML_PLUGIN_INCLUSION by
+default
+Index: cmake/QtPostProcessHelpers.cmake
+--- cmake/QtPostProcessHelpers.cmake.orig
++++ cmake/QtPostProcessHelpers.cmake
+@@ -507,7 +507,7 @@ function(qt_internal_create_plugins_auto_inclusion_fil
+ 
+ # 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()
+ 
+ set(__qt_qml_plugins_config_file_list \"\")

Reply via email to