From 85cfb02d4dbb52cc1c836d994d57a31684395a88 Mon Sep 17 00:00:00 2001 From: sergio Date: Tue, 14 Jul 2026 12:06:01 -0400 Subject: [PATCH] =?UTF-8?q?kde/Plasma:=20powerdevil=20+=20kscreen=20(energ?= =?UTF-8?q?=C3=ADa=20y=20pantallas)=20+=20base=20de=20AUDIO=20(alsa-lib/sp?= =?UTF-8?q?eexdsp/libsndfile)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit powerdevil 6.7.2 (299af51a): daemon de energía + acciones (suspendsession/dimdisplay/dpms/ brightnesscontrol) + KCMs. kscreen 6.7.2 (ef6218e6): kcm_kscreen + kscreen KDED + kscreen-console + hdrcalibrator. Base de audio REAL (el lab sólo tenía libcanberra con backend NULL, sin reproducción): alsa-lib 1.2.14 c6896caf libasound.so.2 (--disable-python) speexdsp 1.2.1 dc235b15 libspeexdsp.so.1 (resampler de PulseAudio) libsndfile 1.2.2 c44d0142 libsndfile.so.1 (--disable-external-libs: sin FLAC/Opus, que no están sellados; WAV/AIFF/AU basta para sonidos del sistema). Necesita python3. Siguiente eslabón: pulseaudio → pulseaudio-qt → plasma-pa (applet de volumen). 3 lecciones de la depuración de powerdevil (dep-set de 69): - ** FALTABA** y el síntoma era engañoso: 'Could NOT find KF6 (missing: KIO KCMUtils XmlGui)'. La cadena real es KF6ConfigWidgets→find_dependency(KF6WidgetsAddons) ausente ⇒ ConfigWidgets NOT_FOUND ⇒ cascadea a XmlGui/KIO/KCMUtils. Para diagnosticar hay que seguir los 'could not be found because dependency X' hacia ARRIBA, no fiarse de los componentes que CMake lista. - **PlasmaWaylandProtocols/WaylandProtocols/qtwayland** son deps directas de todo lo que toca Wayland (powerdevil, kscreen). Idem los QML modules (kscreen: org.kde.kitemmodels + org.kde.plasma.plasma5support → kitemmodels/plasma5support directos; ambos YA traen su qml/, no hacía falta variante QML=ON). - **timeout del build**: mató powerdevil a mitad del rebuild de plasma-workspace (mi cambio de zlib-shared cascadeó kwin[1825 obj]+plasma-workspace[1962 obj]). Usar timeouts largos (9000) para recetas con dep-sets grandes. Además: 24778 AUTO-MATCHEA el propio comando de chequeo → usar . Co-Authored-By: Claude Opus 4.8 --- recipes/incoming-kde/alsa-lib.toml | 25 ++++++++++++ recipes/incoming-kde/kscreen.toml | 54 +++++++++++++++++++++++++ recipes/incoming-kde/libsndfile.toml | 25 ++++++++++++ recipes/incoming-kde/powerdevil.toml | 59 ++++++++++++++++++++++++++++ recipes/incoming-kde/speexdsp.toml | 22 +++++++++++ 5 files changed, 185 insertions(+) create mode 100644 recipes/incoming-kde/alsa-lib.toml create mode 100644 recipes/incoming-kde/kscreen.toml create mode 100644 recipes/incoming-kde/libsndfile.toml create mode 100644 recipes/incoming-kde/powerdevil.toml create mode 100644 recipes/incoming-kde/speexdsp.toml diff --git a/recipes/incoming-kde/alsa-lib.toml b/recipes/incoming-kde/alsa-lib.toml new file mode 100644 index 00000000..2a07f967 --- /dev/null +++ b/recipes/incoming-kde/alsa-lib.toml @@ -0,0 +1,25 @@ +# alsa-lib 1.2.14 — API de audio del kernel Linux (libasound.so). Campaña KDE (ADR 0011): sustrato de +# PulseAudio → pulseaudio-qt → plasma-pa (el applet de volumen). Primer eslabón de la cadena de AUDIO real +# (hasta ahora el lab sólo tenía libcanberra con backend NULL, sin reproducción). +# +# --disable-python: los bindings pyalsa exigen headers de python + no hacen falta. Sin deps externas. +name = "alsa-lib" +version = "1.2.14" + +[source] +tarball = "https://www.alsa-project.org/files/pub/lib/alsa-lib-1.2.14.tar.bz2" +sha256 = "be9c88a0b3604367dd74167a2b754a35e142f670292ae47a2fdef27a2ee97a32" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "dynamic" +flags = [] + +[build.phases] +configure = './configure --build=$CBUILD --host=$CHOST --prefix=/usr --enable-shared --disable-static --disable-python' +compile = 'make -j"$(nproc)"' +install = "make DESTDIR=/out install && find /out -name '*.la' -delete" + +[deps] +build = ["pkgconf"] diff --git a/recipes/incoming-kde/kscreen.toml b/recipes/incoming-kde/kscreen.toml new file mode 100644 index 00000000..b1425f2d --- /dev/null +++ b/recipes/incoming-kde/kscreen.toml @@ -0,0 +1,54 @@ +# kscreen 6.7.2 — gestión de pantallas de Plasma (kscreen KDED daemon + KCM de monitores + OSD). +# Campaña KDE (ADR 0011). Deps ya selladas: KF6Screen (libkscreen), Plasma/PlasmaQuick (libplasma), +# LayerShellQt (layer-shell-qt), KCMUtils, Svg (ksvg). KF6ImageFormats es CONFIG opcional → se salta. +name = "kscreen" +version = "6.7.2" + +[source] +tarball = "https://download.kde.org/stable/plasma/6.7.2/kscreen-6.7.2.tar.xz" +sha256 = "a67fbbb8c2fa2a875f29d056d72453d340143219b08062a932c7b1f1501add48" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "dynamic" +flags = [] + +[build.phases] +configure = ''' +rm -rf po doc +sed -i '/add_subdirectory(doc)/d' CMakeLists.txt +sed -i '/kdoctools_install/d' CMakeLists.txt +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", "python3", "pkgconf", "qtbase", "qtsvg", "dbus", "extra-cmake-modules", + "qttools", "gettext-tiny", "mesa", "libdrm", "libxkbcommon", "wayland", "qtdeclarative", + "wayland-protocols", "plasma-wayland-protocols", "qtwayland", "kitemmodels", "plasma5support", + "libkscreen", "libplasma", "layer-shell-qt", "ksvg", "kcmutils", "kdeclarative", "kirigami", + "kpackage", "plasma-activities", + "kconfig", "kdbusaddons", "ki18n", "kxmlgui", "kcrash", + "kcolorscheme", "kcompletion", "kcoreaddons", "kjobwidgets", "kservice", "kconfigwidgets", + "kguiaddons", "kitemviews", "kcodecs", "karchive", "kbookmarks", "sonnet", "attica", "kauth", + "icu4c", "kiconthemes", "kio", "kwindowsystem", "solid", "kglobalaccel", "kwidgetsaddons", + "zlib-shared", "libX11", "xorgproto", "libXau", "libXdmcp", "libXext", "libXrender", "libXfixes", + "libXi", "libxcb", "xcb-util", "xcb-util-keysyms", "xcb-util-wm", "xcb-util-image", + "xcb-util-renderutil"] diff --git a/recipes/incoming-kde/libsndfile.toml b/recipes/incoming-kde/libsndfile.toml new file mode 100644 index 00000000..2d2f4174 --- /dev/null +++ b/recipes/incoming-kde/libsndfile.toml @@ -0,0 +1,25 @@ +# libsndfile 1.2.2 — lectura/escritura de audio (libsndfile.so). Campaña KDE (ADR 0011): PulseAudio lo +# exige para cargar muestras/sonidos del sistema. +# +# ENABLE_EXTERNAL_LIBS=OFF: apaga FLAC/Ogg/Vorbis/Opus (flac y opus no están sellados). Quedan WAV/AIFF/AU +# nativos, que es lo que PulseAudio necesita para los sonidos del sistema. Evita la cadena flac+opus. +name = "libsndfile" +version = "1.2.2" + +[source] +tarball = "https://github.com/libsndfile/libsndfile/releases/download/1.2.2/libsndfile-1.2.2.tar.xz" +sha256 = "3799ca9924d3125038880367bf1468e53a1b7e3686a934f098b7e1d286cdb80e" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "dynamic" +flags = [] + +[build.phases] +configure = './configure --build=$CBUILD --host=$CHOST --prefix=/usr --enable-shared --disable-static --disable-external-libs --disable-mpeg --disable-alsa' +compile = 'make -j"$(nproc)"' +install = "make DESTDIR=/out install && find /out -name '*.la' -delete" + +[deps] +build = ["pkgconf", "python3"] diff --git a/recipes/incoming-kde/powerdevil.toml b/recipes/incoming-kde/powerdevil.toml new file mode 100644 index 00000000..2a5632e1 --- /dev/null +++ b/recipes/incoming-kde/powerdevil.toml @@ -0,0 +1,59 @@ +# powerdevil 6.7.2 — gestión de energía de Plasma (daemon org_kde_powerdevil + KCMs de batería/brillo). +# Campaña KDE (ADR 0011). Todas sus deps ya estaban selladas: Plasma(libplasma), PlasmaActivities, +# KF6Screen(libkscreen), LibKWorkspace(plasma-workspace), UDev(libudev-zero), XCB(RANDR/DPMS de libxcb), +# KF6Runner(krunner), KF6IdleTime(kidletime). +# +# qcoro-shared (NO el qcoro canónico): powerdevil linkea QCoro dentro de .so ⇒ necesita el PIC. +# KF6DocTools y DDCUtil (brillo de monitores externos por DDC/CI) son opcionales → se degradan. +name = "powerdevil" +version = "6.7.2" + +[source] +tarball = "https://download.kde.org/stable/plasma/6.7.2/powerdevil-6.7.2.tar.xz" +sha256 = "0073d3dc4e0735eab2212e2c395c7e9fe6680146856421bb70eff42ebf88cc04" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "dynamic" +flags = [] + +[build.phases] +configure = ''' +rm -rf po doc +sed -i '/add_subdirectory(doc)/d' CMakeLists.txt +sed -i '/kdoctools_install/d' CMakeLists.txt +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", "python3", "pkgconf", "qtbase", "qtsvg", "dbus", "extra-cmake-modules", + "qttools", "gettext-tiny", "mesa", "libdrm", "libxkbcommon", "wayland", "qtdeclarative", + "wayland-protocols", "plasma-wayland-protocols", "qtwayland", + "qcoro-shared", "libplasma", "plasma-activities", "libkscreen", "plasma-workspace", "libudev-zero", + "ksvg", "kcmutils", "kdeclarative", "kirigami", "kirigami-addons", "kpackage", "krunner", "kidletime", + "kauth", "kconfig", "kcrash", "kdbusaddons", "ki18n", "kitemmodels", "kglobalaccel", "kio", + "knotifications", "solid", "kwindowsystem", "kxmlgui", "kwidgetsaddons", + "kcolorscheme", "kcompletion", "kcoreaddons", "kjobwidgets", "kservice", "kconfigwidgets", + "kguiaddons", "kitemviews", "kcodecs", "karchive", "kbookmarks", "sonnet", "attica", + "icu4c", "kiconthemes", "kwallet", "plasma-activities-stats", "kglobalacceld", "kstatusnotifieritem", + "zlib-shared", "libX11", "xorgproto", "libXau", "libXdmcp", "libXext", "libXrender", "libXfixes", + "libXi", "libxcb", "xcb-util", "xcb-util-keysyms", "xcb-util-wm", "xcb-util-image", + "xcb-util-renderutil"] diff --git a/recipes/incoming-kde/speexdsp.toml b/recipes/incoming-kde/speexdsp.toml new file mode 100644 index 00000000..07956aa6 --- /dev/null +++ b/recipes/incoming-kde/speexdsp.toml @@ -0,0 +1,22 @@ +# speexdsp 1.2.1 — procesamiento de señal (resampler, AEC) → libspeexdsp.so. Campaña KDE (ADR 0011): +# PulseAudio lo usa para el remuestreo de audio (su resampler por defecto). +name = "speexdsp" +version = "1.2.1" + +[source] +tarball = "https://downloads.us.xiph.org/releases/speex/speexdsp-1.2.1.tar.gz" +sha256 = "8c777343e4a6399569c72abc38a95b24db56882c83dbdb6c6424a5f4aeb54d3d" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "dynamic" +flags = [] + +[build.phases] +configure = './configure --build=$CBUILD --host=$CHOST --prefix=/usr --enable-shared --disable-static' +compile = 'make -j"$(nproc)"' +install = "make DESTDIR=/out install && find /out -name '*.la' -delete" + +[deps] +build = ["pkgconf"]