build: pre-cook full Qt stack in dependency order (fixes Qt6Qml race)

sddm and the kf6 modules (pulled by kwin) do find_package(Qt6Qml)/Qt6Quick,
which only exist once qtdeclarative is built. When resolved only transitively
during the parallel make-live graph, a consumer (qtwayland, kf6-kwindowsystem)
could be cooked before qtdeclarative published Qt6Qml -> "Could not find a
package configuration file provided by Qt6Qml" -> whole build aborts (exit 2).
Pre-cook qtbase qtshadertools qtdeclarative qtsvg qtwayland (in order) before
sddm/kwin so every Qt6 CMake config is cached in the sysroot first. Complements
the qtwayland->qtdeclarative recipe dep; covers all kf6 consumers at once.
This commit is contained in:
2026-07-24 22:11:20 +09:00
parent 4c52f5b562
commit 416565fe38
+9 -1
View File
@@ -912,7 +912,15 @@ bash "$PROJECT_ROOT/local/scripts/sync-versions.sh" --check || {
# llvm21 is a Mesa (graphics) dep — only needed when the Mesa chain is in scope.
echo ">>> Pre-cooking critical packages..."
if [ "$CONFIG" = "redbear-full" ]; then
PRECOOK_PKGS="relibc icu llvm21 mesa libdrm libepoxy redox-drm lcms2 libdisplay-info libxcvt sddm qtbase kwin"
# The Qt stack has a strict internal build order (qtbase -> qtshadertools ->
# qtdeclarative -> qtsvg -> qtwayland) and downstream consumers (sddm, the
# kf6 modules pulled by kwin) do find_package(Qt6Qml)/find_package(Qt6Quick).
# If these are only resolved transitively during the parallel `make live`
# graph, a consumer can be cooked before qtdeclarative publishes Qt6Qml and
# configure fails ("Could not find a package configuration file provided by
# Qt6Qml"), aborting the whole build. Pre-cook the Qt stack IN ORDER, before
# sddm/kwin, so every Qt6 CMake package is cached in the sysroot first.
PRECOOK_PKGS="relibc icu llvm21 mesa libdrm libepoxy redox-drm lcms2 libdisplay-info libxcvt qtbase qtshadertools qtdeclarative qtsvg qtwayland sddm kwin"
else
PRECOOK_PKGS="relibc icu"
fi