Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package qt6-base for openSUSE:Factory 
checked in at 2026-08-15 22:39:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/qt6-base (Old)
 and      /work/SRC/openSUSE:Factory/.qt6-base.new.1258 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "qt6-base"

Sat Aug 15 22:39:51 2026 rev:84 rq:1371206 version:6.11.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/qt6-base/qt6-base.changes        2026-05-28 
17:25:05.947149027 +0200
+++ /work/SRC/openSUSE:Factory/.qt6-base.new.1258/qt6-base.changes      
2026-08-15 22:39:57.607179737 +0200
@@ -1,0 +2,6 @@
+Fri Aug 14 08:27:36 UTC 2026 - Fabian Vogt <[email protected]>
+
+- Add patch to fix incomplete docs (QTBUG-149045):
+  * 0001-CMake-Handle-generated-headers-in-syncqt-scan-all-mo.patch
+
+-------------------------------------------------------------------

New:
----
  0001-CMake-Handle-generated-headers-in-syncqt-scan-all-mo.patch

----------(New B)----------
  New:- Add patch to fix incomplete docs (QTBUG-149045):
  * 0001-CMake-Handle-generated-headers-in-syncqt-scan-all-mo.patch
----------(New E)----------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ qt6-base.spec ++++++
--- /var/tmp/diff_new_pack.64R9o1/_old  2026-08-15 22:39:59.157234299 +0200
+++ /var/tmp/diff_new_pack.64R9o1/_new  2026-08-15 22:39:59.158234334 +0200
@@ -42,6 +42,7 @@
 Source0:        
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-CMake-Handle-generated-headers-in-syncqt-scan-all-mo.patch
 # Patches 100-200 are openSUSE and/or non-upstream(able) patches #
 # No need to pollute the library dir with object files, install them in the 
qt6 subfolder
 Patch100:       0001-CMake-Install-objects-files-into-ARCHDATADIR.patch

++++++ 0001-CMake-Handle-generated-headers-in-syncqt-scan-all-mo.patch ++++++
>From 23d433e121306e85c5d37d8e6ef846be86b931f4 Mon Sep 17 00:00:00 2001
From: Alexandru Croitor <[email protected]>
Date: Thu, 13 Aug 2026 15:17:13 +0200
Subject: [PATCH] CMake: Handle generated headers in syncqt scan all mode for
 docs

Building the docs of the Network module can result in incomplete
documentation in the following scenario:
- use an external prebuilt qdoc
- configure the module with QT_SYNC_HEADERS_AT_CONFIGURE_TIME=OFF
- call cmake --build . --target html_docs_Network

In this case the qdnslookup.html file is missing the whole block
for QDnsLookup::finished.

The reason is that the 'prepare_docs_<module>' target only depends on
'sync_all_public_headers', which runs syncqt with the '-all' option.

In that mode syncqt ignores the header list given via '-headers' and
scans the module source directory instead. Generated headers are never
processed, so they don't get a forwarding header. In qtbase that
doesn't create qt<module>-config.h and qt<module>-config_p.h headers.

Without them qdoc can't find QtNetwork/private/qtnetwork-config_p.h
which leaves QT_FEATURE_dnslookup undefined, the
QT_REQUIRE_CONFIG(dnslookup) condition fails, and some of the code is
not parsed.

To fix this, pass and process the '-generatedHeaders' list in the
'scan all' mode as well.

The headers that are excluded from docs are filtered out, so doc
generation still doesn't depend on headers that need a tool to be
created, like the dbus generated ones.

The issue doesn't show up in a developer build, because
QT_SYNC_HEADERS_AT_CONFIGURE_TIME defaults to ON there and syncqt has
already created the forwarding headers at configure time.

In a qt5.git super builds it doesn't happen either because
'prepare_docs_<module>' depends on the 'qdoc' target, which
links QtQml and QtNetwork, which in turn pulls in the regular
'<module>_sync_headers' targets.

Pick-to: 6.11 6.12
Fixes: QTBUG-149045
Change-Id: Ib9f827fa13eed83429547ff05db8cf3ff4068118
---
 cmake/QtSyncQtHelpers.cmake | 18 +++++++++++-----
 src/tools/syncqt/main.cpp   | 41 +++++++++++++++++++++++++------------
 2 files changed, 41 insertions(+), 18 deletions(-)

diff --git a/cmake/QtSyncQtHelpers.cmake b/cmake/QtSyncQtHelpers.cmake
index a1ee6a68a27..919789db4b1 100644
--- a/cmake/QtSyncQtHelpers.cmake
+++ b/cmake/QtSyncQtHelpers.cmake
@@ -125,7 +125,6 @@ function(qt_internal_target_sync_headers target
         -qpaIncludeDir "${module_build_interface_qpa_include_dir}"
         -rhiIncludeDir "${module_build_interface_rhi_include_dir}"
         -ssgIncludeDir "${module_build_interface_ssg_include_dir}"
-        -generatedHeaders ${module_headers_generated}
         ${qpa_filter_argument}
         ${rhi_filter_argument}
         ${ssg_filter_argument}
@@ -155,10 +154,14 @@ function(qt_internal_target_sync_headers target
         "(.+/(ui_)[^/]+\\.h|${CMAKE_CURRENT_SOURCE_DIR}(/.+)?/doc/+\\.h)")
 
     # Filter out all headers that should be excluded from documentation 
generation.
-    # Documentation generation shouldn't depend on headers like the 
dbus-generated ones.
+    # Documentation generation shouldn't depend on headers like the 
dbus-generated ones or any
+    # others that invoke tooling to be created.
+    # But it's okay for them to contain file(GENERATE)'d headers which involve 
no tool calls.
     set(module_headers_for_docs "${module_headers}")
+    set(module_headers_generated_for_docs "${module_headers_generated}")
     if(module_headers_exclude_from_docs)
         list(REMOVE_ITEM module_headers_for_docs 
${module_headers_exclude_from_docs})
+        list(REMOVE_ITEM module_headers_generated_for_docs 
${module_headers_exclude_from_docs})
     endif()
 
     set(syncqt_staging_dir 
"${module_build_interface_include_dir}/.syncqt_staging")
@@ -168,6 +171,7 @@ function(qt_internal_target_sync_headers target
         -headers ${module_headers}
         -stagingDir "${syncqt_staging_dir}"
         -knownModules ${known_modules}
+        -generatedHeaders ${module_headers_generated}
         ${version_script_args}
     )
     list(JOIN syncqt_args "\n" syncqt_args_string)
@@ -227,10 +231,13 @@ function(qt_internal_target_sync_headers target
         add_dependencies(thirdparty_sync_headers ${target}_sync_headers)
     endif()
     # This target is required when building docs, to make all header files and 
their aliases
-    # available for qdoc.
-    # ${target}_sync_headers is added as dependency to make sure that
-    # ${target}_sync_all_public_headers is running after 
${target}_sync_headers, when building docs.
+    # available for qdoc, including generated headers that are not created by 
tools.
     set(syncqt_all_args "${common_syncqt_arguments};-all")
+    if(module_headers_generated_for_docs)
+        list(APPEND syncqt_all_args
+            -generatedHeaders ${module_headers_generated_for_docs}
+        )
+    endif()
     list(JOIN syncqt_all_args "\n" syncqt_all_args_string)
     set(syncqt_all_args_rsp "${binary_dir_real}/${target}_syncqt_all_args")
     qt_configure_file(OUTPUT "${syncqt_all_args_rsp}" CONTENT 
"${syncqt_all_args_string}")
@@ -248,6 +255,7 @@ function(qt_internal_target_sync_headers target
             # not happen, but it ends up happening, we will have to implement 
some kind of lock
             # file mechanism.
             ${module_headers_for_docs}
+            ${module_headers_generated_for_docs}
             ${syncqt_all_args_rsp}
             ${QT_CMAKE_EXPORT_NAMESPACE}::syncqt
         VERBATIM
diff --git a/src/tools/syncqt/main.cpp b/src/tools/syncqt/main.cpp
index 908ed377564..dc36d465da4 100644
--- a/src/tools/syncqt/main.cpp
+++ b/src/tools/syncqt/main.cpp
@@ -647,19 +647,17 @@ public:
         // In the scan all mode we ingore the list of header files that is 
specified in the
         // '-headers' argument, and collect header files from the source 
directory tree.
         if (m_commandLineArgs->scanAllMode()) {
-            for (auto const &entry :
-                 
std::filesystem::recursive_directory_iterator(m_commandLineArgs->sourceDir())) {
-
-                const bool isRegularFile = entry.is_regular_file();
-                const bool isHeaderFlag = isHeader(entry);
-                const bool isDocFileHeuristicFlag =
-                    isDocFileHeuristic(entry.path().generic_string());
-                const bool shouldProcessHeader =
-                    isRegularFile && isHeaderFlag && !isDocFileHeuristicFlag;
-                const std::string filePath = entry.path().generic_string();
-
-                if (shouldProcessHeader) {
-                    scannerDebug() << "Processing header: " << filePath << 
std::endl;
+            enum class HeaderOrigin { SourceTree, Generated };
+            const auto scanHeaderFile = [this, &error](const 
std::filesystem::path &path,
+                                                       bool isRegularFile, 
HeaderOrigin origin) {
+                const std::string filePath = path.generic_string();
+                const bool isHeaderFlag = isHeader(path);
+                const bool isDocFileHeuristicFlag = 
isDocFileHeuristic(filePath);
+                const bool isGenerated = origin == HeaderOrigin::Generated;
+
+                if (isRegularFile && isHeaderFlag && !isDocFileHeuristicFlag) {
+                    scannerDebug() << "Processing header: " << filePath
+                                   << " isGenerated: " << isGenerated << 
std::endl;
                     if (!processHeader(makeHeaderAbsolute(filePath)))
                         error = SyncFailed;
                 } else {
@@ -668,8 +666,25 @@ public:
                         << " isRegularFile: " << isRegularFile
                         << " isHeaderFlag: " << isHeaderFlag
                         << " isDocFileHeuristicFlag: " << 
isDocFileHeuristicFlag
+                        << " isGenerated: " << isGenerated
                         << std::endl;
                 }
+            };
+
+            for (auto const &entry :
+                 
std::filesystem::recursive_directory_iterator(m_commandLineArgs->sourceDir())) {
+                scanHeaderFile(entry.path(), entry.is_regular_file(),
+                               HeaderOrigin::SourceTree);
+            }
+
+            // Headers that are generated into the build directory are not 
covered by the source
+            // directory scan above, so process them explicitly.
+            for (const auto &header : m_commandLineArgs->generatedHeaders()) {
+                if (header.empty())
+                    continue;
+                const auto headerPath = makeHeaderAbsolute(header);
+                scanHeaderFile(headerPath, 
std::filesystem::is_regular_file(headerPath),
+                               HeaderOrigin::Generated);
             }
         } else {
             // Since the list of header file is quite big syncqt supports 
response files to avoid
-- 
2.55.0

Reply via email to