From f5a3432831d2f943f2920c9819f72772552b03e8 Mon Sep 17 00:00:00 2001 From: sergio Date: Tue, 14 Jul 2026 10:48:26 -0400 Subject: [PATCH] =?UTF-8?q?kde/Plasma:=20plasma-nm=206.7.2=20SELLA=20?= =?UTF-8?q?=E2=80=94=20el=20APPLET=20DE=20RED,=20frente=20de=20red=20cerra?= =?UTF-8?q?do?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 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 --- recipes/incoming-kde/libxslt.toml | 27 ++++++++++ recipes/incoming-kde/modemmanager-qt.toml | 47 +++++++++++++++++ recipes/incoming-kde/modemmanager.toml | 36 +++++++++++++ recipes/incoming-kde/plasma-nm.toml | 63 +++++++++++++++++++++++ recipes/incoming-kde/qcoro-shared.toml | 48 +++++++++++++++++ recipes/incoming-kde/qtkeychain.toml | 49 ++++++++++++++++++ 6 files changed, 270 insertions(+) create mode 100644 recipes/incoming-kde/libxslt.toml create mode 100644 recipes/incoming-kde/modemmanager-qt.toml create mode 100644 recipes/incoming-kde/modemmanager.toml create mode 100644 recipes/incoming-kde/plasma-nm.toml create mode 100644 recipes/incoming-kde/qcoro-shared.toml create mode 100644 recipes/incoming-kde/qtkeychain.toml diff --git a/recipes/incoming-kde/libxslt.toml b/recipes/incoming-kde/libxslt.toml new file mode 100644 index 00000000..da8a0157 --- /dev/null +++ b/recipes/incoming-kde/libxslt.toml @@ -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"] diff --git a/recipes/incoming-kde/modemmanager-qt.toml b/recipes/incoming-kde/modemmanager-qt.toml new file mode 100644 index 00000000..1adaec99 --- /dev/null +++ b/recipes/incoming-kde/modemmanager-qt.toml @@ -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"] diff --git a/recipes/incoming-kde/modemmanager.toml b/recipes/incoming-kde/modemmanager.toml new file mode 100644 index 00000000..ffdb5bf7 --- /dev/null +++ b/recipes/incoming-kde/modemmanager.toml @@ -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"] diff --git a/recipes/incoming-kde/plasma-nm.toml b/recipes/incoming-kde/plasma-nm.toml new file mode 100644 index 00000000..88ea8a0e --- /dev/null +++ b/recipes/incoming-kde/plasma-nm.toml @@ -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"] diff --git a/recipes/incoming-kde/qcoro-shared.toml b/recipes/incoming-kde/qcoro-shared.toml new file mode 100644 index 00000000..180c80f1 --- /dev/null +++ b/recipes/incoming-kde/qcoro-shared.toml @@ -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 +# ... 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"] diff --git a/recipes/incoming-kde/qtkeychain.toml b/recipes/incoming-kde/qtkeychain.toml new file mode 100644 index 00000000..8d74d546 --- /dev/null +++ b/recipes/incoming-kde/qtkeychain.toml @@ -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"]