Confirmed the repro for point 1, and I have a validated fix. Details below.
Repro (fresh Fedora 44 container, cmake 4.3.0): extract qt-6.10.2-rev5-linux, point a minimal harness at the package's FindQt.cmake the same way the engine consumes it. With no system Qt installed it configures clean against the bundled Qt. Install qt6-qtbase-devel (Fedora 44 ships 6.11.1) and the same configure dies with:
CMake Error at /usr/lib64/cmake/Qt6CoreTools/Qt6CoreToolsTargetsPrecheck.cmake:1 (_qt_internal_should_include_targets): Unknown CMake command
Mechanism: the top-level find_package(Qt6) is actually fine, it resolves the bundled Qt6Config.cmake via the CMAKE_PREFIX_PATH append. The escape happens one level down: the bundled Qt6Core config resolves its tool package through QtPublicDependencyHelpers.cmake:100, which calls find_package(Qt6CoreTools), and that nested find searches the standard system prefixes and lands on /usr/lib64/cmake/Qt6CoreTools (6.11.1). The 6.11 config then calls internal macros that don't exist in the already-loaded 6.10.2 machinery, hence the unknown-command error. So it's a version-skew crash between the bundled Qt's loaded machinery and a newer system config file pulled in mid-resolution.
On the NO_DEFAULT_PATH suggestion, tested both shapes:
NO_DEFAULT_PATH alone: finds nothing at all (it also disables the CMAKE_PREFIX_PATH lookup the package relies on).
PATHS ${QT_LIB_PATH}/cmake/Qt6 + NO_DEFAULT_PATH: the top-level find succeeds, but the option doesn't propagate into the nested find_package calls inside Qt's own config files, so Qt6CoreTools still escapes to /usr and the crash is identical.
Fix that works (validated under worst case, system qtbase + qtsvg + qttools devel all installed at 6.11.1): pin <Pkg>_DIR for every package shipped in the bundle before the find_package(Qt6 ...) call in FindQt.cmake. Nested finds check <Pkg>_DIR before any search path, so every Qt-internal package resolves from the bundle by construction, and non-Qt finds are completely untouched. That last part matters: I also validated two broader containment approaches (a CMAKE_FIND_USE_* hermetic window, and CMAKE_IGNORE_PREFIX_PATH /usr;/usr/local;/), and both work too, but both also blind the nested find_package(WrapOpenGL) to the system libGL that bundled Qt6Gui legitimately needs, so they only pass with an extra OpenGL pre-seed. The _DIR pinning has no such side effect.
The change, just before the find_package(Qt6 ...) call:
file(GLOB _qt_pkg_dirs LIST_DIRECTORIES true "${QT_LIB_PATH}/cmake/*")
foreach(_qt_pkg_dir IN LISTS _qt_pkg_dirs)
if(IS_DIRECTORY "${_qt_pkg_dir}")
get_filename_component(_qt_pkg_name "${_qt_pkg_dir}" NAME)
set(${_qt_pkg_name}_DIR "${_qt_pkg_dir}")
endif()
endforeach()
Result with that in place and full system Qt6 6.11.1 installed: configure completes, Qt6_DIR and every component resolve from the bundle (Qt6Core at .../qt/lib/libQt6Core.so.6.10.2), and zero config files load from /usr/lib64/cmake. Happy to share the container repro script if useful, and can PR this against 3p-package-source if you want it there.