kde/Plasma: powerdevil + kscreen (energía y pantallas) + base de AUDIO (alsa-lib/speexdsp/libsndfile)

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 <noreply@anthropic.com>
This commit is contained in:
2026-07-14 12:06:01 -04:00
co-authored by Claude Opus 4.8
parent f5a3432831
commit 85cfb02d4d
5 changed files with 185 additions and 0 deletions
+25
View File
@@ -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"]
+54
View File
@@ -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"]
+25
View File
@@ -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"]
+59
View File
@@ -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"]
+22
View File
@@ -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"]