From 4b1b8c4af404be64612fffba958372e8e806a30a Mon Sep 17 00:00:00 2001 From: sergio Date: Sun, 12 Jul 2026 19:56:58 -0400 Subject: [PATCH] kde/Plasma: blockers de kwin (Vulkan/KNightTime/libinput) + patch Canberra MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - vulkan-headers + vulkan-loader 1.4.350.1 (Vulkan::Vulkan; WSI xcb/xlib ON, xrandr OFF). - qtpositioning + kholidays(flex/bison) + knighttime (cadena KNightTime TYPE REQUIRED de kwin). - libinput 1.28.1 variante incoming-kde (kwin pide >=1.28; canónica 1.27.1). - kwin patch Canberra REQUIRED→opcional + systembell condicional (evita stack audio; deuda diferida). Co-Authored-By: Claude Opus 4.8 --- recipes/incoming-kde/kholidays.toml | 43 +++++++++++++++++++ recipes/incoming-kde/knighttime.toml | 42 ++++++++++++++++++ .../incoming-kde/kwin-canberra-optional.patch | 28 ++++++++++++ recipes/incoming-kde/kwin.toml | 1 + recipes/incoming-kde/libinput.toml | 24 +++++++++++ recipes/incoming-kde/qtpositioning.toml | 37 ++++++++++++++++ recipes/incoming-kde/vulkan-headers.toml | 33 ++++++++++++++ recipes/incoming-kde/vulkan-loader.toml | 37 ++++++++++++++++ 8 files changed, 245 insertions(+) create mode 100644 recipes/incoming-kde/kholidays.toml create mode 100644 recipes/incoming-kde/knighttime.toml create mode 100644 recipes/incoming-kde/kwin-canberra-optional.patch create mode 100644 recipes/incoming-kde/libinput.toml create mode 100644 recipes/incoming-kde/qtpositioning.toml create mode 100644 recipes/incoming-kde/vulkan-headers.toml create mode 100644 recipes/incoming-kde/vulkan-loader.toml diff --git a/recipes/incoming-kde/kholidays.toml b/recipes/incoming-kde/kholidays.toml new file mode 100644 index 00000000..8346c9cd --- /dev/null +++ b/recipes/incoming-kde/kholidays.toml @@ -0,0 +1,43 @@ +# kholidays 6.27.0 — KDE Frameworks 6 (cálculo de festivos/feriados, KF6::Holidays). Blocker de knighttime +# (find_package(KF6 ... Holidays)), que es blocker de kwin. Campaña KDE (ADR 0011). Patrón KF6: dynamic, +# wrapper zig que filtra -Wl,--fatal-warnings, ECM + qttools. +# CMakeLists: find_package(Qt6 Core Qml REQUIRED) + FLEX + BISON (>=3.3.2) REQUIRED (parser de reglas de +# festivos). NO usa ki18n (sólo ecm_install_po_files_as_qm vía lrelease de qttools). +name = "kholidays" +version = "6.27.0" + +[source] +tarball = "https://download.kde.org/stable/frameworks/6.27/kholidays-6.27.0.tar.xz" +sha256 = "84ce2acd5565a9510d74945ea2311f8c099cb031393255d1c8d399665d57b914" + +[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 -DBUILD_PYTHON_BINDINGS=OFF +''' +compile = "cmake --build build" +install = "DESTDIR=/out cmake --install build" + +[deps] +build = ["cmake", "samurai", "python3", "pkgconf", "qtbase", "qtdeclarative", "dbus", "extra-cmake-modules", "qttools", "mesa", "libdrm", "libxkbcommon", "wayland", "flex", "bison"] diff --git a/recipes/incoming-kde/knighttime.toml b/recipes/incoming-kde/knighttime.toml new file mode 100644 index 00000000..2c818e34 --- /dev/null +++ b/recipes/incoming-kde/knighttime.toml @@ -0,0 +1,42 @@ +# knighttime 6.7.2 — helpers de KDE Plasma para el ciclo día/noche (KF6::KNightTime). Blocker directo de kwin +# (find_package(KNightTime REQUIRED)). Campaña KDE (ADR 0011). Patrón KF6: dynamic, wrapper zig, ECM + qttools. +# CMakeLists: Qt6 Core/Gui/DBus/Positioning + KF6 Config/CoreAddons/DBusAddons/Holidays/I18n. ki18n_install(po) +# ⇒ ki18n → gettext-tiny. Todo su cierre KF6 sellado salvo kholidays y qtpositioning (esta misma tanda). +name = "knighttime" +version = "6.7.2" + +[source] +tarball = "https://download.kde.org/stable/plasma/6.7.2/knighttime-6.7.2.tar.xz" +sha256 = "3d26c7fe04512ab6367bfb2b092f296dbfd8331dedd576ab2cf30d840be6830e" + +[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 -DBUILD_PYTHON_BINDINGS=OFF +''' +compile = "cmake --build build" +install = "DESTDIR=/out cmake --install build" + +[deps] +build = ["cmake", "samurai", "python3", "pkgconf", "qtbase", "qtdeclarative", "dbus", "extra-cmake-modules", "qttools", "mesa", "libdrm", "libxkbcommon", "wayland", "gettext-tiny", "qtpositioning", "kholidays", "ki18n", "kconfig", "kcoreaddons", "kdbusaddons"] diff --git a/recipes/incoming-kde/kwin-canberra-optional.patch b/recipes/incoming-kde/kwin-canberra-optional.patch new file mode 100644 index 00000000..e49327d8 --- /dev/null +++ b/recipes/incoming-kde/kwin-canberra-optional.patch @@ -0,0 +1,28 @@ +kwin 6.7.2 hace find_package(Canberra REQUIRED) (línea 235) para el plugin systembell (campana de +audio). libcanberra = stack de audio alsa/pulse/vorbis (pesado, no soberano). Este patch vuelve +Canberra OPCIONAL y hace condicional el subdir systembell (sólo si Canberra_FOUND). kwin construye +sin la campana de audio (deuda audio diferida, misma que knotifications). + +diff --git a/CMakeLists.txt b/CMakeLists.txt +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -232,7 +232,7 @@ + + endif() + +-find_package(Canberra REQUIRED) ++find_package(Canberra) + + if (KWIN_BUILD_X11) + pkg_check_modules(XKBX11 IMPORTED_TARGET xkbcommon-x11 REQUIRED) +diff --git a/src/plugins/CMakeLists.txt b/src/plugins/CMakeLists.txt +--- a/src/plugins/CMakeLists.txt ++++ b/src/plugins/CMakeLists.txt +@@ -103,7 +103,9 @@ add_subdirectory(stickykeys) + add_subdirectory(synchronizeskipswitcher) +-add_subdirectory(systembell) ++if (Canberra_FOUND) ++ add_subdirectory(systembell) ++endif() + add_subdirectory(thumbnailaside) + add_subdirectory(tileseditor) diff --git a/recipes/incoming-kde/kwin.toml b/recipes/incoming-kde/kwin.toml index 57573fba..0ef566d3 100644 --- a/recipes/incoming-kde/kwin.toml +++ b/recipes/incoming-kde/kwin.toml @@ -26,6 +26,7 @@ version = "6.7.2" [source] tarball = "https://download.kde.org/stable/plasma/6.7.2/kwin-6.7.2.tar.xz" sha256 = "6161a188f66ffac0a330dcf82dec9ecc3e53451b7bddd5d18fa00b1e9aada73b" +patches = ["kwin-canberra-optional.patch"] [build] compiler = "zig-cc" diff --git a/recipes/incoming-kde/libinput.toml b/recipes/incoming-kde/libinput.toml new file mode 100644 index 00000000..0931464b --- /dev/null +++ b/recipes/incoming-kde/libinput.toml @@ -0,0 +1,24 @@ +# libinput 1.28.1 — VARIANTE bump para la campaña KDE (ADR 0011): kwin 6.7.2 exige libinput >= 1.28 +# (la canónica recipes/libinput.toml está en 1.27.1). Override, mismo name="libinput". Idéntica a la +# canónica salvo version+sha256 (meson_options y dependency() sin cambios: libudev, mtdev>=1.1, libevdev). +# Recorte: sin libwacom, sin debug-gui (GTK), sin tests ni docs. Deps ya selladas. +name = "libinput" +version = "1.28.1" + +[source] +tarball = "https://gitlab.freedesktop.org/libinput/libinput/-/archive/1.28.1/libinput-1.28.1.tar.gz" +sha256 = "a13f8c9a7d93df3c85c66afd135f0296701d8d32f911991b7aa4273fdd6a42a3" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "dynamic" +zig_version = "0.13.0" + +[build.phases] +configure = "meson setup output --prefix=/usr --buildtype=release -Dlibwacom=false -Ddebug-gui=false -Dtests=false -Ddocumentation=false" +compile = "ninja -C output" +install = "DESTDIR=/out ninja -C output install" + +[deps] +build = ["meson", "samurai", "python3", "pkgconf", "libudev-zero", "libevdev", "mtdev"] diff --git a/recipes/incoming-kde/qtpositioning.toml b/recipes/incoming-kde/qtpositioning.toml new file mode 100644 index 00000000..84be43a7 --- /dev/null +++ b/recipes/incoming-kde/qtpositioning.toml @@ -0,0 +1,37 @@ +# qt6-qtpositioning 6.11.1 — módulo Qt Positioning (QtPositioning). Blocker de knighttime (Qt6::Positioning), +# que a su vez es blocker de kwin (find_package(KNightTime REQUIRED)). Campaña KDE (ADR 0011). Patrón Qt del +# gate H-Qt (dinámico, wrappers zig, Qt6 sellado vía PREFIX_PATH). qtserialport es OPCIONAL (no sellado, se +# omite → sólo desactiva backends serie de GPS). Quick/Qml opcionales via qtdeclarative. +name = "qt6-qtpositioning" +version = "6.11.1" + +[source] +tarball = "https://download.qt.io/official_releases/qt/6.11/6.11.1/submodules/qtpositioning-everywhere-src-6.11.1.tar.xz" +sha256 = "d5e6b91801ae286e7630016caea3bdc5e1978b4291d6741d0d64c125650f78f5" + +[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"] diff --git a/recipes/incoming-kde/vulkan-headers.toml b/recipes/incoming-kde/vulkan-headers.toml new file mode 100644 index 00000000..5c5bd832 --- /dev/null +++ b/recipes/incoming-kde/vulkan-headers.toml @@ -0,0 +1,33 @@ +# vulkan-headers 1.4.350.1 — cabeceras de la API Vulkan + config CMake Vulkan::Headers. Blocker de kwin +# (find_package(Vulkan REQUIRED) → Vulkan::Vulkan). Campaña KDE (ADR 0011), cadena Vulkan. Headers-only: +# INTERFACE library, no compila nada, sólo instala include/vulkan + los .cmake. Versión debe casar con +# vulkan-loader. Tests y el módulo C++20 (Vulkan-Hpp) apagados. +name = "vulkan-headers" +version = "1.4.350.1" + +[source] +tarball = "https://github.com/KhronosGroup/Vulkan-Headers/archive/refs/tags/vulkan-sdk-1.4.350.1.tar.gz" +sha256 = "6d1bb65e49520344cc0a48af3dc02e993781efff14c7ebdcb8ae9fa23ddf7e83" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "dynamic" +zig_version = "0.13.0" + +[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_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr \ + -DVULKAN_HEADERS_ENABLE_TESTS=OFF -DVULKAN_HEADERS_ENABLE_MODULE=OFF +''' +compile = "cmake --build build" +install = "DESTDIR=/out cmake --install build" + +[deps] +build = ["cmake", "samurai", "python3", "pkgconf"] diff --git a/recipes/incoming-kde/vulkan-loader.toml b/recipes/incoming-kde/vulkan-loader.toml new file mode 100644 index 00000000..9f197b8a --- /dev/null +++ b/recipes/incoming-kde/vulkan-loader.toml @@ -0,0 +1,37 @@ +# vulkan-loader 1.4.350.1 — ICD loader de Vulkan (libvulkan.so.1 + config CMake Vulkan::Loader/Vulkan::Vulkan). +# Blocker de kwin (find_package(Vulkan REQUIRED)). Campaña KDE (ADR 0011). Versión casada con vulkan-headers. +# CMakeLists: find_package(VulkanHeaders CONFIG) + PkgConfig REQUIRED para xcb (WSI_XCB) y x11 (WSI_XLIB). +# WSI_WAYLAND sólo añade un -D (no linkea). WSI_XLIB_XRANDR default ON exige xrandr.pc → libXrandr NO está +# sellado ⇒ lo apago (no es esencial para libvulkan.so). Python3 sólo si LOADER_CODEGEN (default OFF). +name = "vulkan-loader" +version = "1.4.350.1" + +[source] +tarball = "https://github.com/KhronosGroup/Vulkan-Loader/archive/refs/tags/vulkan-sdk-1.4.350.1.tar.gz" +sha256 = "602984a71000981e25e4feb419e6cdd70b18ffe2b8004f60f591706027bca468" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "dynamic" +zig_version = "0.13.0" + +[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" +PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/share/pkgconfig \ +cmake -B build -G Ninja -Wno-dev \ + -DCMAKE_C_COMPILER="$ZW/cc" -DCMAKE_CXX_COMPILER="$ZW/cxx" \ + -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_PREFIX_PATH=/usr \ + -DBUILD_TESTS=OFF -DUPDATE_DEPS=OFF \ + -DBUILD_WSI_XCB_SUPPORT=ON -DBUILD_WSI_XLIB_SUPPORT=ON \ + -DBUILD_WSI_XLIB_XRANDR_SUPPORT=OFF -DBUILD_WSI_WAYLAND_SUPPORT=ON +''' +compile = "cmake --build build" +install = "DESTDIR=/out cmake --install build" + +[deps] +build = ["cmake", "samurai", "python3", "pkgconf", "vulkan-headers", "wayland", "libxcb", "libX11", "xorgproto", "libXau", "libXdmcp", "libXext", "libXrender", "libXfixes", "libXi"]