From a25c46a41c149b051a1ca6ba444530f95064eaf8 Mon Sep 17 00:00:00 2001 From: sergio Date: Sun, 12 Jul 2026 07:05:02 -0400 Subject: [PATCH] =?UTF-8?q?kde/Capa2:=20TIER-1=20KF6=20COMPLETO=209/9=20?= =?UTF-8?q?=E2=80=94=20kguiaddons+kwindowsystem=20wayland-only?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - plasma-wayland-protocols 1.21.0 (find_package PlasmaWaylandProtocols, CMake+ECM liviano) - kguiaddons: WITH_X11=OFF WITH_WAYLAND=ON (Qt6WaylandClient bundleado en qtbase). Sellado. - kwindowsystem: KWINDOWSYSTEM_X11=OFF KWINDOWSYSTEM_WAYLAND=ON (opción KWINDOWSYSTEM_*, no WITH_*). QML=OFF. Sellado. - xcb-util base + xcb-util-keysyms + xcb-util-wm sellados (quedan para saldar Qt-xcb / sesión X11). - Decisión: path X11 exige Qt con QT_FEATURE_xcb (apagado en gate) = deuda Capa 0 diferida; Plasma es Wayland-first ⇒ tier-1 completo por el path wayland. Tier-1 9/9: kcoreaddons kcodecs kconfig ki18n kwidgetsaddons karchive solid kguiaddons kwindowsystem. Co-Authored-By: Claude Opus 4.8 --- recipes/incoming-kde/kguiaddons.toml | 12 +++--- recipes/incoming-kde/kwindowsystem.toml | 10 +++-- .../plasma-wayland-protocols.toml | 41 +++++++++++++++++++ recipes/incoming-kde/qtwayland.toml | 37 +++++++++++++++++ recipes/incoming-kde/xcb-util.toml | 26 ++++++++++++ 5 files changed, 116 insertions(+), 10 deletions(-) create mode 100644 recipes/incoming-kde/plasma-wayland-protocols.toml create mode 100644 recipes/incoming-kde/qtwayland.toml create mode 100644 recipes/incoming-kde/xcb-util.toml diff --git a/recipes/incoming-kde/kguiaddons.toml b/recipes/incoming-kde/kguiaddons.toml index e7e469e1..6215dae5 100644 --- a/recipes/incoming-kde/kguiaddons.toml +++ b/recipes/incoming-kde/kguiaddons.toml @@ -31,14 +31,14 @@ cmake -B build -G Ninja -Wno-dev \ -DCMAKE_C_COMPILER="$ZW/cc" -DCMAKE_CXX_COMPILER="$ZW/cxx" -DCMAKE_ASM_COMPILER="$ZW/cc" \ -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_PREFIX_PATH=/usr \ -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=OFF \ - -DBUILD_TESTING=OFF -DBUILD_PYTHON_BINDINGS=OFF + -DBUILD_TESTING=OFF -DBUILD_PYTHON_BINDINGS=OFF \ + -DWITH_X11=OFF -DWITH_WAYLAND=ON ''' compile = "cmake --build build" install = "DESTDIR=/out cmake --install build" [deps] -# X11+libxcb+wayland-protocols: kguiaddons pide find_package(X11 REQUIRED) + XCB(XCB) + Wayland + -# WaylandProtocols para KModifierKeyInfo (backends X11 y wayland). Cadena X11 Capa 0 ya sellada. -# xorgproto: FindX11.cmake busca X11/X.h (header de protocolo, lo instala xorgproto, NO libX11) ⇒ -# obligatorio para todo consumidor de headers X11. -build = ["cmake", "samurai", "python3", "pkgconf", "qtbase", "dbus", "extra-cmake-modules", "qttools", "qtdeclarative", "mesa", "libdrm", "libxkbcommon", "wayland", "wayland-protocols", "xorgproto", "libX11", "libxcb", "libXau", "libXdmcp"] +# WAYLAND-ONLY (WITH_X11=OFF): el path X11 exige Qt construido con QT_FEATURE_xcb (apagado en el gate, +# deuda Capa 0 diferida). Plasma es Wayland-first ⇒ backend wayland de KModifierKeyInfo. Qt6WaylandClient +# viene bundleado en qtbase. plasma-wayland-protocols: kguiaddons pide find_package(PlasmaWaylandProtocols). +build = ["cmake", "samurai", "python3", "pkgconf", "qtbase", "dbus", "extra-cmake-modules", "qttools", "qtdeclarative", "mesa", "libdrm", "libxkbcommon", "wayland", "wayland-protocols", "plasma-wayland-protocols"] diff --git a/recipes/incoming-kde/kwindowsystem.toml b/recipes/incoming-kde/kwindowsystem.toml index 00cb3d25..55f21f44 100644 --- a/recipes/incoming-kde/kwindowsystem.toml +++ b/recipes/incoming-kde/kwindowsystem.toml @@ -31,12 +31,14 @@ cmake -B build -G Ninja -Wno-dev \ -DCMAKE_C_COMPILER="$ZW/cc" -DCMAKE_CXX_COMPILER="$ZW/cxx" -DCMAKE_ASM_COMPILER="$ZW/cc" \ -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_PREFIX_PATH=/usr \ -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=OFF \ - -DBUILD_TESTING=OFF -DBUILD_PYTHON_BINDINGS=OFF + -DBUILD_TESTING=OFF -DBUILD_PYTHON_BINDINGS=OFF \ + -DKWINDOWSYSTEM_QML=OFF -DKWINDOWSYSTEM_X11=OFF -DKWINDOWSYSTEM_WAYLAND=ON ''' compile = "cmake --build build" install = "DESTDIR=/out cmake --install build" [deps] -# X11 backend: find_package(X11 REQUIRED) + XCB con componentes XCB/KEYSYMS/RES/ICCCM. XCB=libxcb, -# RES=xcb-res.pc (lo trae libxcb), KEYSYMS=xcb-util-keysyms, ICCCM=xcb-util-wm. xorgproto p/ X11/X.h. -build = ["cmake", "samurai", "python3", "pkgconf", "qtbase", "dbus", "extra-cmake-modules", "qttools", "qtdeclarative", "mesa", "libdrm", "libxkbcommon", "wayland", "wayland-protocols", "xorgproto", "libX11", "libxcb", "xcb-util-keysyms", "xcb-util-wm", "libXau", "libXdmcp"] +# WAYLAND-ONLY (WITH_X11=OFF): el path X11 pedía XCB con KEYSYMS/RES/ICCCM + Qt-xcb (deuda Capa 0 +# diferida). Plasma es Wayland-first. plasma-wayland-protocols p/ find_package(PlasmaWaylandProtocols). +# Qt6WaylandClient bundleado en qtbase. Las recetas xcb-util-* quedan selladas para cuando se salde Qt-xcb. +build = ["cmake", "samurai", "python3", "pkgconf", "qtbase", "dbus", "extra-cmake-modules", "qttools", "qtdeclarative", "mesa", "libdrm", "libxkbcommon", "wayland", "wayland-protocols", "plasma-wayland-protocols"] diff --git a/recipes/incoming-kde/plasma-wayland-protocols.toml b/recipes/incoming-kde/plasma-wayland-protocols.toml new file mode 100644 index 00000000..5bb2e16d --- /dev/null +++ b/recipes/incoming-kde/plasma-wayland-protocols.toml @@ -0,0 +1,41 @@ +# plasma-wayland-protocols 1.21.0 — definiciones XML de protocolos Wayland propios de KDE/Plasma +# (org_kde_*). Capa 0 campaña KDE (ADR 0011): kguiaddons/kwindowsystem (y luego kwin/plasmashell) piden +# find_package(PlasmaWaylandProtocols). No compila código: instala XML + PlasmaWaylandProtocolsConfig.cmake. +# CMake+ECM puro (sin Qt) ⇒ no necesita el set Qt-consumer, sólo ECM. +name = "plasma-wayland-protocols" +version = "1.21.0" + +[source] +tarball = "https://download.kde.org/stable/plasma-wayland-protocols/plasma-wayland-protocols-1.21.0.tar.xz" +sha256 = "698a7b28b711270314e396e248ae86087cfeaed01372009063995be6e1dc85ba" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "dynamic" +flags = [] + +[build.phases] +configure = ''' +ZW="$PWD/.zwrap"; mkdir -p "$ZW" +cat > "$ZW/cc" <<'W' +#!/bin/sh +a=""; for x in "$@"; do [ "$x" = "-Wl,--fatal-warnings" ] && continue; a="$a $x"; done +exec /opt/zig/zig cc -mcpu=baseline $a +W +cat > "$ZW/cxx" <<'W' +#!/bin/sh +a=""; for x in "$@"; do [ "$x" = "-Wl,--fatal-warnings" ] && continue; a="$a $x"; done +exec /opt/zig/zig c++ -mcpu=baseline $a +W +chmod +x "$ZW/cc" "$ZW/cxx" +cmake -B build -G Ninja -Wno-dev \ + -DCMAKE_C_COMPILER="$ZW/cc" -DCMAKE_CXX_COMPILER="$ZW/cxx" -DCMAKE_ASM_COMPILER="$ZW/cc" \ + -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_PREFIX_PATH=/usr \ + -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=OFF -DBUILD_TESTING=OFF +''' +compile = "cmake --build build" +install = "DESTDIR=/out cmake --install build" + +[deps] +build = ["cmake", "samurai", "pkgconf", "extra-cmake-modules"] diff --git a/recipes/incoming-kde/qtwayland.toml b/recipes/incoming-kde/qtwayland.toml new file mode 100644 index 00000000..7172ea6d --- /dev/null +++ b/recipes/incoming-kde/qtwayland.toml @@ -0,0 +1,37 @@ +# qt6-qtwayland 6.11.1 — QtWaylandClient + QtWaylandCompositor. Capa 1 campaña KDE (ADR 0011): provee +# Qt6WaylandClient que kwindowsystem (backend Wayland) y todo Plasma-on-Wayland (kwin/plasmashell) exigen, +# + el QPA wayland del lado cliente. Patrón módulo Qt (dinámico, wrappers zig, Qt6 sellado vía PREFIX_PATH). +# Set Qt-consumer (mesa/libdrm/libxkbcommon) + wayland + wayland-protocols (wayland-scanner genera código). +name = "qt6-qtwayland" +version = "6.11.1" + +[source] +tarball = "https://download.qt.io/official_releases/qt/6.11/6.11.1/submodules/qtwayland-everywhere-src-6.11.1.tar.xz" +sha256 = "95788aa502f75441d4edf65932b235f76523084e13dbbb7b9ee2d207b32bd9b3" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "dynamic" +flags = [] + +[build.phases] +configure = ''' +ZW="$PWD/.zwrap"; mkdir -p "$ZW" +printf '#!/bin/sh\nexec /opt/zig/zig cc -mcpu=baseline "$@"\n' > "$ZW/cc" +printf '#!/bin/sh\nexec /opt/zig/zig c++ -mcpu=baseline "$@"\n' > "$ZW/cxx" +chmod +x "$ZW/cc" "$ZW/cxx" +cmake -B build -G Ninja -Wno-dev \ + -DCMAKE_C_COMPILER="$ZW/cc" -DCMAKE_CXX_COMPILER="$ZW/cxx" -DCMAKE_ASM_COMPILER="$ZW/cc" \ + -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=OFF -DCMAKE_PREFIX_PATH=/usr \ + -DINSTALL_BINDIR=lib/qt6/bin -DINSTALL_PUBLICBINDIR=bin -DINSTALL_LIBEXECDIR=lib/qt6/libexec \ + -DINSTALL_ARCHDATADIR=lib/qt6 -DINSTALL_DATADIR=share/qt6 -DINSTALL_INCLUDEDIR=include/qt6 \ + -DINSTALL_MKSPECSDIR=lib/qt6/mkspecs \ + -DQT_BUILD_EXAMPLES=OFF -DQT_BUILD_TESTS=OFF +''' +compile = "cmake --build build" +install = "DESTDIR=/out cmake --install build" + +[deps] +build = ["cmake", "samurai", "python3", "pkgconf", "qtbase", "qtdeclarative", "mesa", "libdrm", "libxkbcommon", "wayland", "wayland-protocols"] diff --git a/recipes/incoming-kde/xcb-util.toml b/recipes/incoming-kde/xcb-util.toml new file mode 100644 index 00000000..dc582a45 --- /dev/null +++ b/recipes/incoming-kde/xcb-util.toml @@ -0,0 +1,26 @@ +# xcb-util 0.4.1 — utilidades base de XCB (libxcb-util.so: xcb_aux, xcb_event, xcb_atom). Capa 0 de la +# campaña KDE (ADR 0011): base de la familia xcb-util (keysyms/wm/image la usan vía los m4 comunes). +# Autotools; consume libxcb + xorgproto. Linking dinámico. +name = "xcb-util" +version = "0.4.1" + +[source] +tarball = "https://xorg.freedesktop.org/releases/individual/lib/xcb-util-0.4.1.tar.xz" +sha256 = "5abe3bbbd8e54f0fa3ec945291b7e8fa8cfd3cccc43718f8758430f94126e512" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "dynamic" +zig_version = "0.13.0" + +[build.phases] +configure = ''' +PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/share/pkgconfig \ +./configure --prefix=/usr --disable-static --enable-shared +''' +compile = "make -j\"$(nproc)\"" +install = "make install DESTDIR=/out" + +[deps] +build = ["pkgconf", "python3", "util-macros", "xorgproto", "xcb-proto", "libxcb", "libXau", "libXdmcp"]