From 416565fe38a2a10d0a495b830de400bdaefd049f Mon Sep 17 00:00:00 2001 From: vasilito Date: Fri, 24 Jul 2026 22:11:20 +0900 Subject: [PATCH] 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. --- local/scripts/build-redbear.sh | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/local/scripts/build-redbear.sh b/local/scripts/build-redbear.sh index cb39be8a1f..0beff86b51 100755 --- a/local/scripts/build-redbear.sh +++ b/local/scripts/build-redbear.sh @@ -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