b472bb5649
qt-sysroot.sh: Qt installs QML modules under <prefix>/qml, KDE under <prefix>/lib/qml, and ecm_find_qmlmodule() only searches the KDE root. A REQUIRED Qt module was therefore reported missing even though its recipe staged it correctly (plasma-framework aborting on Qt5Compat.GraphicalEffects) while every org.kde.* module resolved fine. Bridge the two roots with relative symlinks, never clobbering a real KDE module of the same name. plasma-framework: kf6-kwindowsystem is built KWINDOWSYSTEM_X11=OFF, so KX11Extras and KWindowInfo do not exist, yet core translation units reference them. Every such call already sits behind a runtime KWindowSystem::isPlatformX11(), which is always false here, and the package already ships some #if HAVE_X11 sites -- this finishes the job upstream started. Done in Python, not sed: the transform needs brace matching, and an if/else chain must keep its ELSE body (appletpopup.cpp sets the Wayland surface role there; wrapping the whole chain would have deleted the Wayland path). Also guards the unconditional <xcb/xcb.h> include and drops BlurEffectWatcher's QAbstractNativeEventFilter base, whose only override is itself X11-guarded, leaving the class abstract. Pin WaylandScanner_EXECUTABLE to the host tool for the same reason breeze needed it. kf6-knotifications: the range-comment sed had an UNANCHORED start address and an anchored end, so on re-runs it matched the '#if (NOT APPLE ...' it had produced itself while '#endif()' no longer matched -- the range ran to END OF FILE, commenting a little more of CMakeLists.txt on every rebuild until install(FILES ...) lost its closing paren. Anchor the start so it cannot match its own output, and drop the companion 'sed 127,137 s/^#*//' hack that existed only to undo the damage.