kde/Plasma: NetworkManager 1.52 + libndp → networkmanager-qt SELLA (blocker duro resuelto)

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 <noreply@anthropic.com>
This commit is contained in:
2026-07-14 10:25:28 -04:00
co-authored by Claude Opus 4.8
parent 4e02422680
commit 89569a6ce2
3 changed files with 90 additions and 8 deletions
+30
View File
@@ -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"]
+6 -8
View File
@@ -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"]
+54
View File
@@ -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"]