kde/Plasma: blockers de kwin (Vulkan/KNightTime/libinput) + patch Canberra
- 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 <noreply@anthropic.com>
Semantic delta
No definition changed: this change is text, documentation or data.
8 files · +245 −0
- recipes/incoming-kde/kholidays.toml +43 −0
- recipes/incoming-kde/knighttime.toml +42 −0
- recipes/incoming-kde/kwin-canberra-optional.patch +28 −0
- recipes/incoming-kde/kwin.toml +1 −0
- recipes/incoming-kde/libinput.toml +24 −0
- recipes/incoming-kde/qtpositioning.toml +37 −0
- recipes/incoming-kde/vulkan-headers.toml +33 −0
- recipes/incoming-kde/vulkan-loader.toml +37 −0
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"]