kde/Plasma: plasma-nm 6.7.2 SELLA — el APPLET DE RED, frente de red cerrado

plasma-nm (6080f27f) construido: applet QML org.kde.plasma.networkmanagement + kcm_networkmanagement +
plugins VPN (openvpn/openswan/ssh/sstp/strongswan/iodine/fortisslvpn). Cierre verificado:
libKF6NetworkManagerQt.so.6 + libKF6ModemManagerQt.so.6 + libqt6keychain.so.1.

Cierra el frente que plasma-workspace esquivó parcheando NetworkManagerQt a opcional. Cadena entera:
  glib-shared → networkmanager (libnm)    → networkmanager-qt ─┐
  glib-shared → modemmanager (libmm-glib) → modemmanager-qt ───┴→ plasma-nm

Deps nuevas de esta tanda:
  modemmanager 1.22.0   9e4ce41d  libmm-glib. -Dqmi/mbim/qrtr=false evita libqmi/libmbim/libqrtr;
                                  polkit=no, udev=false (+udevdir explícito, lo exige el assert).
  modemmanager-qt 6.27  37e954bb  KF6ModemManagerQt (REQUIRED en el find_package(KF6) de plasma-nm
                                  aunque no haya módem).
  qtkeychain 0.16.0     6a1319b0  claves WiFi. **LIBSECRET_SUPPORT=OFF**: por defecto ON y exige
                                  libsecret-1 (llavero de GNOME); apagado queda KEYCHAIN_DBUS =
                                  kwallet vía Qt6DBus, que es el backend que KDE usa ⇒ cero deps nuevas.
                                  OJO: el tag de git es '0.16.0' SIN prefijo 'v'.
  libxslt 1.1.43        b41cb0fc  xsltproc. A diferencia de NM (donde sólo servía a man/ y se degradó),
                                  ModemManager lo USA de verdad: include/meson.build:25 genera
                                  ModemManager-names.h desde header-generator.xsl.
  qcoro-shared 0.12.0   b8ed5b49  el qcoro canónico sella sólo .a sin PIC (su CMake no fija
                                  BUILD_SHARED_LIBS) ⇒ 'R_X86_64_32S QCoro::detail::TaskBase<QDBusMessage>
                                  recompile with -fPIC' al linkear plasma-nm. Variante con
                                  BUILD_SHARED_LIBS=ON; nombre distinto para no re-hashear el qcoro que
                                  ya consumen plasma-workspace/powerdevil.

BUILD_OPENCONNECT=OFF es importante: con ON, plasma-nm hace find_package(Qt6WebEngineWidgets REQUIRED)
⇒ arrastraría qtwebengine (Chromium), diferido por el ADR.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-14 10:48:26 -04:00
co-authored by Claude Opus 4.8
parent 89569a6ce2
commit f5a3432831
6 changed files with 270 additions and 0 deletions
+27
View File
@@ -0,0 +1,27 @@
# libxslt 1.1.43 — transformaciones XSLT (libxslt.so + el binario **xsltproc**). Campaña KDE (ADR 0011):
# ModemManager lo NECESITA de verdad — include/meson.build:25 corre xsltproc sobre header-generator.xsl
# para GENERAR ModemManager-names.h (no es sólo documentación, como en NetworkManager, donde xsltproc
# sólo servía a man/ y se pudo degradar a required:false).
#
# Contra la variante libxml2 de esta cola (--enable-shared --with-pic); la canónica es static-sin-PIC.
# Sin python/crypto (libgcrypt sólo aporta la extensión EXSLT crypto, prescindible).
name = "libxslt"
version = "1.1.43"
[source]
tarball = "https://download.gnome.org/sources/libxslt/1.1/libxslt-1.1.43.tar.xz"
sha256 = "5a3d6b383ca5afc235b171118e90f5ff6aa27e9fea3303065231a6d403f0183a"
[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 --without-python --without-crypto --with-libxml-prefix=/usr'
compile = 'make -j"$(nproc)"'
install = "make DESTDIR=/out install && find /out -name '*.la' -delete"
[deps]
build = ["pkgconf", "libxml2", "zlib-shared", "xz-shared"]
+47
View File
@@ -0,0 +1,47 @@
# modemmanager-qt 6.27.0 — KDE Frameworks 6 (ADR 0011). Wrapper Qt de la API D-Bus de ModemManager
# (KF6ModemManagerQt). Es REQUIRED en el find_package(KF6 ...) de plasma-nm (el applet de red), aunque el
# escritorio no tenga módem ⇒ hay que sellarlo igual.
#
# find_package(ModemManager 1.0 REQUIRED) resuelve contra la receta `modemmanager` (libmm-glib), habilitada
# por glib-shared. Qt REQUIRED: Core DBus Xml (todos sellados). Mismo caso que networkmanager-qt: la lib de
# ModemManager es dep de BUILD (headers/enums); el runtime del wrapper es D-Bus puro.
name = "modemmanager-qt"
version = "6.27.0"
[source]
tarball = "https://download.kde.org/stable/frameworks/6.27/modemmanager-qt-6.27.0.tar.xz"
sha256 = "a893a169dd40c430c51d39326b1af0aab2a9d6c20adc34f2b8e6332c152f6234"
[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_EXAMPLES=OFF
'''
compile = "cmake --build build"
install = "DESTDIR=/out cmake --install build"
[deps]
build = ["cmake", "samurai", "python3", "pkgconf", "qtbase", "dbus", "extra-cmake-modules", "qttools",
"mesa", "libdrm", "libxkbcommon", "wayland", "qtdeclarative",
"modemmanager", "glib-shared", "pcre2-shared", "libffi", "libudev-zero", "zlib-shared"]
+36
View File
@@ -0,0 +1,36 @@
# ModemManager 1.22.0 — libmm-glib (banda ancha móvil). Campaña KDE (ADR 0011): sólo se necesita para que
# `modemmanager-qt` (KF6ModemManagerQt) compile, y ese framework es REQUIRED en el find_package(KF6 ...)
# de plasma-nm (el applet de red) — aunque el escritorio no tenga módem.
#
# Igual que networkmanager: fuente del gitlab.freedesktop.org, y se recorta a la lib.
# qmi/mbim/qrtr=false evitan libqmi/libmbim/libqrtr (protocolos de módem, cadenas enteras que no hacen
# falta para los headers+libmm-glib.pc). polkit=no, systemd/journal/suspend off, introspection/man/tests off.
# Deps duras: gio (glib-shared, deuda Capa 0 saldada) + libudev (libudev-zero ya sellado).
name = "modemmanager"
version = "1.22.0"
[source]
tarball = "https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/archive/1.22.0/ModemManager-1.22.0.tar.gz"
sha256 = "6c8f8720737a3788e394c700f36236278c9de09d76069a079e6f1daaf08b2768"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
flags = []
[build.phases]
configure = '''
PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release \
-Ddefault_library=shared \
-Dqmi=false -Dmbim=false -Dqrtr=false -Dudev=false -Dudevdir=/usr/lib/udev \
-Dpolkit=no -Dsystemdsystemunitdir=no -Dsystemd_suspend_resume=false -Dsystemd_journal=false \
-Dintrospection=false -Dvapi=false -Dman=false -Dtests=false \
-Dat_command_via_dbus=false -Dbash_completion=false
'''
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",
"libudev-zero", "zlib-shared", "gettext-tiny", "dbus", "expat", "libxml2", "libxslt"]
+63
View File
@@ -0,0 +1,63 @@
# plasma-nm 6.7.2 — el APPLET DE RED de Plasma (KCM + applet QML + plasma-nm). Campaña KDE (ADR 0011).
# Cierra el frente de red que plasma-workspace había esquivado parcheando NetworkManagerQt a opcional
# (el "rabbit-hole libnm→glib"): ahora la cadena existe entera y soberana:
# glib-shared → networkmanager (libnm) → networkmanager-qt ─┐
# glib-shared → modemmanager (libmm-glib) → modemmanager-qt ─┴→ plasma-nm
#
# BUILD_OPENCONNECT=OFF es IMPORTANTE: con ON, plasma-nm hace find_package(Qt6WebEngineWidgets REQUIRED)
# ⇒ arrastraría qtwebengine (Chromium embebido), la receta más cara del proyecto, DIFERIDA por el ADR.
# (Igual auto-desactiva al no hallar openconnect, pero se explicita para determinismo.)
#
# RUNTIME (no bloquean el build): kirigami, prison (códigos QR de redes WiFi), kquickcharts — los 3 ya
# sellados. ecm_find_qmlmodule REQUIRED: org.kde.prison + org.kde.kirigamiaddons.formcard (kirigami-addons).
name = "plasma-nm"
version = "6.7.2"
[source]
tarball = "https://download.kde.org/stable/plasma/6.7.2/plasma-nm-6.7.2.tar.xz"
sha256 = "bc4eaf62901022d76fce3bc434af905e466b63568005b67840784bd7debde8cd"
[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 \
-DBUILD_OPENCONNECT=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",
"networkmanager", "networkmanager-qt", "modemmanager", "modemmanager-qt",
"qtkeychain", "qcoro-shared", "openssl", "glib-shared", "pcre2-shared", "libffi", "libudev-zero",
"libplasma", "ksvg", "kcmutils", "kdeclarative", "kirigami", "kirigami-addons", "prison",
"kquickcharts", "plasma-activities", "kpackage", "kpty",
"kcolorscheme", "kcompletion", "kcoreaddons", "kdbusaddons", "kio", "ki18n", "kjobwidgets",
"knotifications", "kservice", "solid", "kwidgetsaddons", "kwindowsystem",
"kconfig", "kconfigwidgets", "kxmlgui", "kguiaddons", "kitemviews", "kcodecs", "kcrash",
"karchive", "kbookmarks", "sonnet", "attica", "kglobalaccel", "kauth", "icu4c", "kiconthemes",
"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"]
+48
View File
@@ -0,0 +1,48 @@
# qcoro-shared 0.12.0 — variante DINÁMICA (libQCoro6Core/DBus/Network .so, PIC) para el escritorio KDE.
# El qcoro canónico de esta cola sella sólo .a SIN PIC (su CMake no fija BUILD_SHARED_LIBS ⇒ default
# estático) ⇒ no enlaza dentro de un .so: plasma-nm falla con "R_X86_64_32S ... QCoro::detail::TaskBase
# <QDBusMessage> ... recompile with -fPIC". Misma deuda Capa 0 que zlib/bzip2/xz/libjpeg/libpng/freetype/
# fontconfig/pcre2. Nombre distinto para NO re-hashear el qcoro que ya consumen plasma-workspace/powerdevil.
#
# Único cambio real vs. el canónico: -DBUILD_SHARED_LIBS=ON. El resto (módulos Qt on/off) se conserva.
name = "qcoro-shared"
version = "0.12.0"
[source]
tarball = "https://github.com/qcoro/qcoro/archive/refs/tags/v0.12.0.tar.gz"
sha256 = "809afafab61593f994c005ca6e242300e1e3e7f4db8b5d41f8c642aab9450fbc"
[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_SHARED_LIBS=ON \
-DQCORO_BUILD_EXAMPLES=OFF -DBUILD_TESTING=OFF \
-DQCORO_WITH_QTDBUS=ON -DQCORO_WITH_QTNETWORK=ON \
-DQCORO_WITH_QTWEBSOCKETS=OFF -DQCORO_WITH_QTQUICK=OFF \
-DQCORO_WITH_QML=OFF -DQCORO_WITH_QTTEST=OFF
'''
compile = "cmake --build build"
install = "DESTDIR=/out cmake --install build"
[deps]
build = ["cmake", "samurai", "python3", "pkgconf", "qtbase", "dbus", "mesa", "libdrm", "libxkbcommon", "wayland"]
+49
View File
@@ -0,0 +1,49 @@
# qtkeychain 0.16.0 — almacenamiento de credenciales para Qt (libqt6keychain.so). Campaña KDE (ADR 0011):
# el ADR ya lo listaba como "extra KDE" de Capa 1; plasma-nm lo exige
# (find_package(Qt6Keychain 0.16.0 CONFIG REQUIRED)) para guardar las claves WiFi.
#
# BUILD_WITH_QT6=ON (por defecto es OFF → buscaría Qt5). BUILD_TRANSLATIONS=OFF evita Qt6LinguistTools.
# **LIBSECRET_SUPPORT=OFF**: por defecto ON ⇒ pkg_check_modules(LIBSECRET REQUIRED libsecret-1) y aborta.
# libsecret es el llavero de GNOME; apagándolo queda el backend `KEYCHAIN_DBUS` = **kwallet vía Qt6DBus**,
# que es justamente el que usa KDE (kwallet ya está sellado) ⇒ cero deps nuevas.
# OJO: el tag de git es `0.16.0`, SIN prefijo `v` (v0.16.0 da 404).
name = "qtkeychain"
version = "0.16.0"
[source]
tarball = "https://github.com/frankosterfeld/qtkeychain/archive/refs/tags/0.16.0.tar.gz"
sha256 = "3be26ec4ae30eecf0c2ff7572ba83799791b157c76e15a05ef35f23dc25e4054"
[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_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_PREFIX_PATH=/usr \
-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=OFF -DBUILD_SHARED_LIBS=ON \
-DBUILD_WITH_QT6=ON -DBUILD_TRANSLATIONS=OFF -DLIBSECRET_SUPPORT=OFF \
-DBUILD_TEST_APPLICATION=OFF -DBUILD_QTQUICK_DEMO=OFF
'''
compile = "cmake --build build"
install = "DESTDIR=/out cmake --install build"
[deps]
build = ["cmake", "samurai", "python3", "pkgconf", "qtbase", "dbus", "qttools",
"mesa", "libdrm", "libxkbcommon", "wayland"]