kde/Plasma: plasma-pa SELLA — el APPLET DE VOLUMEN, frente de AUDIO cerrado
plasma-pa 6.7.2 (51d7a25b): applet QML org.kde.plasma.volume + kcm_pulseaudio + audioshortcutsservice.
Cierra el frente de audio: hasta ahora el lab sólo tenía libcanberra con backend NULL (sin reproducción).
Cadena completa nueva:
alsa-lib/speexdsp/libsndfile → pulseaudio (cliente) → pulseaudio-qt → plasma-pa
pulseaudio 17.0 (108cac6e) → libpulse.so.0 + libpulse-mainloop-glib.so.0 + libpulse-simple.so.0 (+ .pc).
- **-Ddaemon=false -Dclient=true**: se construye SÓLO la biblioteca cliente. Es lo correcto acá — el
servidor de audio previsto es PipeWire (habla el protocolo PulseAudio) pero los clientes igual
linkean el libpulse de PulseAudio. Evita todo el árbol de módulos del daemon (alsa/bluez/jack/
avahi/orc/fftw/webrtc-aec).
- -Dglib=enabled es OBLIGATORIO (sin él no hay libpulse-mainloop-glib, que plasma-pa exige);
lo habilita glib-shared.
- **GOTCHA lld durable**: PulseAudio comparte UN map-file (version script) entre libpulse,
libpulse-simple y libpulse-mainloop-glib ⇒ al enlazar cada una, el script asigna PULSE_0 a símbolos
que viven en las OTRAS: 'version script assignment of PULSE_0 to symbol pa_glib_mainloop_new failed:
symbol not defined'. GNU ld sólo avisa; ld.lld (el de zig) lo trata como ERROR desde lld 17. Fix:
-Dc_link_args=-Wl,--undefined-version.
pulseaudio-qt 1.8.1 (c6849b9e) → libKF6PulseAudioQt.so.5, selló a la primera. OJO: NO está en el path de
plasma/ sino en download.kde.org/stable/pulseaudio-qt/, y la versión viva es 1.8.x (1.6.0 del
find_package es sólo el mínimo).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
# plasma-pa 6.7.2 — el APPLET DE VOLUMEN de Plasma (org.kde.plasma.volume + kcm_pulseaudio).
|
||||
# Campaña KDE (ADR 0011). Cierra el frente de AUDIO, que el lab no tenía (libcanberra estaba sellado con
|
||||
# backend NULL, sin reproducción). Cadena nueva completa:
|
||||
# alsa-lib/speexdsp/libsndfile → pulseaudio (cliente) → pulseaudio-qt → plasma-pa
|
||||
#
|
||||
# Canberra REQUIRED (libcanberra ya sellado). CanberraPulse/SoundThemeFreedesktop son opcionales.
|
||||
# Kirigami/KirigamiAddons son RUNTIME. gio-2.0 REQUIRED → glib-shared.
|
||||
name = "plasma-pa"
|
||||
version = "6.7.2"
|
||||
|
||||
[source]
|
||||
tarball = "https://download.kde.org/stable/plasma/6.7.2/plasma-pa-6.7.2.tar.xz"
|
||||
sha256 = "e58d83ed8f14919ac782336c335704e244f2128c63fd7508401e2cb99c8d6b43"
|
||||
|
||||
[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
|
||||
# DocTools marcado TYPE REQUIRED en set_package_properties → feature_summary aborta. A OPTIONAL.
|
||||
sed -i '/set_package_properties(KF6DocTools/,/)/ s/TYPE REQUIRED/TYPE OPTIONAL/' 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",
|
||||
"pulseaudio", "pulseaudio-qt", "libcanberra", "libtool", "libogg", "libvorbis", "libsndfile",
|
||||
"glib-shared", "pcre2-shared", "libffi",
|
||||
"libplasma", "ksvg", "kcmutils", "kdeclarative", "kirigami", "kirigami-addons", "kpackage",
|
||||
"plasma-activities", "kstatusnotifieritem",
|
||||
"kconfig", "kcoreaddons", "kglobalaccel", "ki18n", "kdbusaddons",
|
||||
"kcolorscheme", "kcompletion", "kjobwidgets", "kservice", "kconfigwidgets", "kguiaddons",
|
||||
"kitemviews", "kcodecs", "kcrash", "karchive", "kbookmarks", "sonnet", "attica", "kauth",
|
||||
"icu4c", "kiconthemes", "kio", "kwindowsystem", "solid", "kwidgetsaddons", "kxmlgui",
|
||||
"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"]
|
||||
@@ -0,0 +1,45 @@
|
||||
# pulseaudio-qt 1.8.1 — bindings Qt6 de PulseAudio (libKF6PulseAudioQt.so). Campaña KDE (ADR 0011):
|
||||
# plasma-pa lo exige (find_package(KF6PulseAudioQt 1.6.0 REQUIRED)).
|
||||
#
|
||||
# pkg_check_modules(LIBPULSE libpulse REQUIRED) + libpulse-mainloop-glib ⇒ deps: pulseaudio (cliente) +
|
||||
# glib-shared. Qt6 REQUIRED: Core Gui DBus; Qml/Quick opcionales (los damos: qtdeclarative).
|
||||
name = "pulseaudio-qt"
|
||||
version = "1.8.1"
|
||||
|
||||
[source]
|
||||
tarball = "https://download.kde.org/stable/pulseaudio-qt/pulseaudio-qt-1.8.1.tar.xz"
|
||||
sha256 = "79619c55b94808aa7d307fb234ad39a1096d088f21f806be0e788be79a76b3c9"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "dynamic"
|
||||
flags = []
|
||||
|
||||
[build.phases]
|
||||
configure = '''
|
||||
rm -rf po
|
||||
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", "dbus", "extra-cmake-modules", "qttools",
|
||||
"gettext-tiny", "mesa", "libdrm", "libxkbcommon", "wayland", "qtdeclarative",
|
||||
"pulseaudio", "glib-shared", "pcre2-shared", "libffi", "libsndfile", "zlib-shared"]
|
||||
@@ -0,0 +1,50 @@
|
||||
# pulseaudio 17.0 — CLIENTE de audio (libpulse.so + libpulse-mainloop-glib.so + libpulse-simple.so).
|
||||
# Campaña KDE (ADR 0011): pulseaudio-qt → plasma-pa (el applet de volumen) exige
|
||||
# `pkg_check_modules(LIBPULSE libpulse REQUIRED)` + `libpulse-mainloop-glib`.
|
||||
#
|
||||
# **-Ddaemon=false -Dclient=true**: se construye SÓLO la biblioteca cliente, no el servidor. Es lo correcto
|
||||
# para este escritorio: el servidor de audio previsto es PipeWire (que habla el protocolo PulseAudio); los
|
||||
# clientes igual linkean el libpulse de PulseAudio. Además evita todo el árbol de módulos del daemon
|
||||
# (alsa/bluez/jack/avahi/orc/fftw/webrtc-aec...).
|
||||
#
|
||||
# glib=enabled es OBLIGATORIO: sin él no hay libpulse-mainloop-glib, que plasma-pa exige. Lo habilita la
|
||||
# variante glib-shared (deuda Capa 0 saldada). dbus=enabled para el protocolo.
|
||||
name = "pulseaudio"
|
||||
version = "17.0"
|
||||
|
||||
[source]
|
||||
tarball = "https://freedesktop.org/software/pulseaudio/releases/pulseaudio-17.0.tar.xz"
|
||||
sha256 = "053794d6671a3e397d849e478a80b82a63cb9d8ca296bd35b73317bb5ceb87b5"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "dynamic"
|
||||
flags = []
|
||||
|
||||
[build.phases]
|
||||
configure = '''
|
||||
# -Wl,--undefined-version: PulseAudio comparte UN map-file (version script) entre libpulse,
|
||||
# libpulse-simple y libpulse-mainloop-glib, así que al enlazar cada una el script asigna la versión
|
||||
# PULSE_0 a símbolos que viven en las OTRAS ("version script assignment of 'PULSE_0' to symbol
|
||||
# 'pa_glib_mainloop_new' failed: symbol not defined"). GNU ld sólo avisa; ld.lld (el de zig) lo trata como
|
||||
# ERROR desde lld 17. El flag restaura el comportamiento permisivo.
|
||||
PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release \
|
||||
-Dc_link_args=-Wl,--undefined-version \
|
||||
-Ddefault_library=shared \
|
||||
-Ddaemon=false -Dclient=true \
|
||||
-Dglib=enabled -Ddbus=enabled \
|
||||
-Dtests=false -Ddoxygen=false -Dman=false -Dgcov=false \
|
||||
-Dx11=disabled -Dalsa=disabled -Davahi=disabled -Dbluez5=disabled -Djack=disabled \
|
||||
-Dlirc=disabled -Dorc=disabled -Dsoxr=disabled -Dsamplerate=disabled -Dspeex=disabled \
|
||||
-Dgstreamer=disabled -Dgtk=disabled -Dgsettings=disabled -Dsystemd=disabled -Delogind=disabled \
|
||||
-Dconsolekit=disabled -Dudev=disabled -Dopenssl=disabled -Dfftw=disabled -Dvalgrind=disabled \
|
||||
-Doss-output=disabled -Dtcpwrap=disabled -Dwebrtc-aec=disabled -Dasyncns=disabled -Dhal-compat=false \
|
||||
-Ddatabase=simple
|
||||
'''
|
||||
compile = "PYTHONPATH=/usr/lib/python3.12/site-packages ninja -C output"
|
||||
install = "PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson install -C output --no-rebuild"
|
||||
|
||||
[deps]
|
||||
build = ["meson", "samurai", "python3", "pkgconf", "glib-shared", "pcre2-shared", "libffi",
|
||||
"dbus", "expat", "zlib-shared", "gettext-tiny", "libsndfile", "libtool", "util-linux"]
|
||||
Reference in New Issue
Block a user