From 89569a6ce2b0efbdd900863e8e950e59319c13bb Mon Sep 17 00:00:00 2001 From: sergio Date: Tue, 14 Jul 2026 10:25:28 -0400 Subject: [PATCH] =?UTF-8?q?kde/Plasma:=20NetworkManager=201.52=20+=20libnd?= =?UTF-8?q?p=20=E2=86=92=20networkmanager-qt=20SELLA=20(blocker=20duro=20r?= =?UTF-8?q?esuelto)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Habilitado por glib-shared (deuda Capa 0 recién saldada). La receta networkmanager-qt documentaba un '⛔ BLOCKER DURO': pkg_search_module(NetworkManager REQUIRED IMPORTED_TARGET libnm>=1.4.0) sin receta de NetworkManager en el catálogo. Resuelto: networkmanager 1.52.0 (f3d89133) → libnm.so.0 + libnm.pc + headers (NetworkManager.h/nm-version.h). - Fuente: gitlab.freedesktop.org (download.gnome.org sólo llega a NM 1.9.x; el proyecto migró). - **-Dcrypto=null es la clave**: NM ofrece crypto ∈ {nss,gnutls,null}; 'null' evita nss (→nspr/sqlite) y gnutls (→nettle/libtasn1/p11-kit), dos cadenas enormes. Sin validación de certificados 802.1X, pero libnm compila y la API D-Bus queda completa. - Deps duras satisfechas: libudev (libudev-zero ya sellado), gio (glib-shared), libndp (receta nueva), uuid (util-linux), dbus. - NM va pidiendo sus flags de a uno; los que hicieron falta: -Dld_gc=false (lld no soporta linker garbage collection), -Dsystemdsystemunitdir=no, -Dconcheck=false (curl), -Dnmcli=false/-Dreadline=none. sed a meson.build:92: find_program('xsltproc') es INCONDICIONAL pero xsltproc sólo se usa en man/ (no se construye con docs=false) → required:false, evita la receta libxslt entera. libndp 1.9 (036eb8c7): sin tarball con configure pregenerado (mirrors 404) ⇒ git-archive + con el autoconf/automake del rootfs de build (patrón 'de gueto', como gcc/cmake). networkmanager-qt 6.27.0 (b5850a40) SELLA. Hallazgo: libKF6NetworkManagerQt.so NO enlaza libnm — sólo Qt6Network/DBus/Core. libnm es dep de BUILD (headers/enums); el runtime es D-Bus puro. Confirma el comentario original de la receta. Próximo: plasma-nm (el applet). Co-Authored-By: Claude Opus 4.8 --- recipes/incoming-kde/libndp.toml | 30 ++++++++++++ recipes/incoming-kde/networkmanager-qt.toml | 14 +++--- recipes/incoming-kde/networkmanager.toml | 54 +++++++++++++++++++++ 3 files changed, 90 insertions(+), 8 deletions(-) create mode 100644 recipes/incoming-kde/libndp.toml create mode 100644 recipes/incoming-kde/networkmanager.toml diff --git a/recipes/incoming-kde/libndp.toml b/recipes/incoming-kde/libndp.toml new file mode 100644 index 00000000..e5604067 --- /dev/null +++ b/recipes/incoming-kde/libndp.toml @@ -0,0 +1,30 @@ +# libndp 1.9 — IPv6 Neighbor Discovery Protocol (libndp.so). Campaña KDE (ADR 0011): es una de las 3 deps +# DURAS de NetworkManager (junto a libudev y gio), y NetworkManager→libnm es lo que destraba +# networkmanager-qt → plasma-nm (el applet de red). +# +# El proyecto no publica tarball con `configure` pregenerado (los mirrors dan 404); se usa el git-archive +# del tag y se corre `autoreconf -fi` con el autoconf/automake/libtoolize del rootfs de build (mismo patrón +# "de gueto" que gcc/cmake: herramienta del rootfs, no del catálogo). +name = "libndp" +version = "1.9" + +[source] +tarball = "https://github.com/jpirko/libndp/archive/refs/tags/v1.9.tar.gz" +sha256 = "e564f5914a6b1b799c3afa64c258824a801c1b79a29e2fe6525b682249c65261" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "dynamic" +flags = [] + +[build.phases] +configure = ''' +autoreconf -fi +./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", "libtool"] diff --git a/recipes/incoming-kde/networkmanager-qt.toml b/recipes/incoming-kde/networkmanager-qt.toml index a054320d..5d77526f 100644 --- a/recipes/incoming-kde/networkmanager-qt.toml +++ b/recipes/incoming-kde/networkmanager-qt.toml @@ -1,13 +1,10 @@ # networkmanager-qt 6.27.0 — KDE Frameworks 6 (ADR 0011). Wrapper Qt de la API D-Bus de NetworkManager # (KF6NetworkManagerQt). La usa plasma-nm (applet de red de plasma-workspace). # -# ⛔ BLOCKER DURO (dep no sellada): CMakeLists línea 15: +# ✅ BLOCKER RESUELTO (2026-07-14): ya existe `networkmanager` (NM 1.52.0, libnm.so.0 + libnm.pc + headers) +# en la cola, habilitado por la variante `glib-shared` (deuda Capa 0 saldada). CMakeLists:15 hace # pkg_search_module(NetworkManager REQUIRED IMPORTED_TARGET libnm>=1.4.0) -# Exige libnm (los .pc/headers de NetworkManager). NO hay receta NetworkManager en el catálogo, y es -# una dep GRANDE (NetworkManager arrastra glib/libndp/libmm-glib/polkit/…). Se necesita: -# NetworkManager 1.52.x → https://download.gnome.org/sources/NetworkManager/1.52/ -# Sólo hacen falta los headers+libnm.pc para compilar networkmanager-qt (build de la lib). Hasta -# sellar libnm, NO construye. Qt REQUIRED: Core DBus Network Qml (todos sellados). +# y src/CMakeLists:173 linkea PkgConfig::NetworkManager + PkgConfig::Gio ⇒ deps: networkmanager + glib-shared. name = "networkmanager-qt" version = "6.27.0" @@ -44,6 +41,7 @@ cmake -B build -G Ninja -Wno-dev \ compile = "cmake --build build" install = "DESTDIR=/out cmake --install build" -# NOTA: falta "networkmanager"/libnm en [deps].build (sellar primero, ver cabecera). [deps] -build = ["cmake", "samurai", "python3", "pkgconf", "qtbase", "dbus", "extra-cmake-modules", "qttools", "mesa", "libdrm", "libxkbcommon", "wayland", "qtdeclarative"] +build = ["cmake", "samurai", "python3", "pkgconf", "qtbase", "dbus", "extra-cmake-modules", "qttools", + "mesa", "libdrm", "libxkbcommon", "wayland", "qtdeclarative", + "networkmanager", "glib-shared", "pcre2-shared", "libffi", "libudev-zero", "libndp", "zlib-shared"] diff --git a/recipes/incoming-kde/networkmanager.toml b/recipes/incoming-kde/networkmanager.toml new file mode 100644 index 00000000..78a8ecc1 --- /dev/null +++ b/recipes/incoming-kde/networkmanager.toml @@ -0,0 +1,54 @@ +# NetworkManager 1.52.0 — libnm (libnm.so + libnm.pc + headers NetworkManager.h/nm-*.h). Campaña KDE +# (ADR 0011): destraba networkmanager-qt (KF6NetworkManagerQt) → plasma-nm, el applet de red. Era el +# "rabbit-hole libnm→glib" que plasma-workspace esquivó parcheando NetworkManagerQt a opcional. +# +# El tarball NO está en download.gnome.org (sólo llega a 1.9.x; NM migró) ⇒ git-archive de +# gitlab.freedesktop.org. +# +# **-Dcrypto=null es la clave**: NM ofrece crypto ∈ {nss, gnutls, null}; 'null' evita nss (→nspr/sqlite) y +# gnutls (→nettle/libtasn1/p11-kit), dos cadenas enormes. Sin cripto no valida certificados 802.1X, pero +# libnm compila y la API D-Bus que usa networkmanager-qt es completa. +# +# Deps DURAS de NM (dependency() sin required:false): libudev (→ libudev-zero YA sellado, da libudev.so.1 +# + libudev.pc), libndp (receta nueva), gio-unix-2.0 (→ glib-shared, la deuda Capa 0 recién saldada). +# jansson/libpsl son required:false. Todo lo demás se apaga: sin daemon-extras (ovs/ppp/modem/wifi/nmtui/ +# teamdctl/ofono/cloud-setup), sin systemd (session_tracking=no, journal off), sin polkit/selinux/audit, +# sin introspection/docs/tests/ebpf/firewalld. +name = "networkmanager" +version = "1.52.0" + +[source] +tarball = "https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/archive/1.52.0/NetworkManager-1.52.0.tar.gz" +sha256 = "2ebe60a1497a9650d58336b73413d838189b04543365b3dbc22e1eb8023d205f" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "dynamic" +flags = [] + +[build.phases] +configure = ''' +# meson.build:92 hace `find_program('xsltproc')` INCONDICIONAL (required por defecto), pero xsltproc sólo +# se usa en man/meson.build (páginas de manual), que no se construye con -Ddocs=false. Se degrada a +# required:false y así se evita la receta libxslt entera. (sed DIRECTO: el sandbox usa busybox grep, que +# no soporta --include.) +sed -i "s/xsltproc = find_program('xsltproc')/xsltproc = find_program('xsltproc', required: false)/" meson.build +PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release \ + -Ddefault_library=shared \ + -Dld_gc=false -Dconcheck=false -Dnmcli=false -Dreadline=none \ + -Dcrypto=null \ + -Dsystemdsystemunitdir=no \ + -Dsession_tracking=no -Dsession_tracking_consolekit=false -Dsuspend_resume=consolekit \ + -Dpolkit=false -Dselinux=false -Dsystemd_journal=false -Dlibaudit=no \ + -Dwifi=false -Dppp=false -Dmodem_manager=false -Dovs=false -Dnmtui=false -Dnm_cloud_setup=false \ + -Dteamdctl=false -Dofono=false -Debpf=false -Dfirewalld_zone=false -Dlibpsl=false \ + -Dintrospection=false -Ddocs=false -Dtests=no -Dvapi=false \ + -Dconfig_dhcp_default=internal -Dqt=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", "libndp", "libnl", "zlib-shared", "gettext-tiny", "libxml2", "util-linux", "perl", "dbus", "expat"]