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>
La deuda más arrastrada del ADR 0011: glib canónico es -Ddefault_library=static --prefer-static (sólo
.a) ⇒ no enlaza en un .so; por eso plasma-workspace tuvo que parchear NetworkManagerQt a opcional
(esquivando el rabbit-hole libnm→glib).
glib-shared 2.88.1 (dc46a620) produce el set dinámico completo: libglib-2.0.so.0 + libgobject-2.0.so.0 +
libgio-2.0.so.0 + libgmodule-2.0.so.0 + libgthread-2.0.so.0 + libgirepository-2.0.so.0. Conserva los
switches del canónico (tests/nls/libmount/selinux/introspection off) — sólo cambia el modo de librería,
sin arrastrar deps nuevas.
pcre2-shared 10.47 (f254abaa) era el prerrequisito: el pcre2 canónico es --disable-shared SIN --with-pic
⇒ su .a no entra en libglib.so. compiler=gcc como el canónico (su comentario advierte que zig-cc
MISCOMPILA libs C, patrón file/jq); el .so es ABI-compatible con los consumidores zig. libffi NO necesitó
variante: ya usa --with-pic.
Cierre verificado: libglib-2.0.so.0 → libpcre2-8.so.0; libffi PIC queda embebido estático.
Destraba: libnm (NetworkManager→plasma-nm), polkit, xdg-desktop-portal, gstreamer.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
CERO recetas nuevas: las 5 usan sólo deps ya selladas. Binarios verificados en los artefactos.
kcharselect da2ea71b selector de caracteres Unicode
kfind 9c46fee5 buscador de archivos (+qt5compat por Qt6Core5Compat REQUIRED, +kfilemetadata)
kruler f69c1bc8 regla de pantalla (+kstatusnotifieritem)
kdf fe681807 espacio en disco → bins kdf + kwikdisk (+kcmutils)
kwalletmanager 2d31f0be gestor de billetera → bin kwalletmanager5 (+kwallet/kcmutils)
4/5 sellaron a la primera con el patrón app-KDE estándar. kwalletmanager pidió además degradar DocTools:
marca TYPE REQUIRED en set_package_properties ⇒ feature_summary aborta; sed TYPE REQUIRED→OPTIONAL (el
mismo patrón que konsole/gwenview; distinto de ark/okular donde DocTools va en el COMPONENTS list).
Apps: konsole+dolphin+kate(+kwrite)+kcalc+ark+filelight+gwenview+okular+kcharselect+kfind+kruler+kdf+
kwalletmanager = 13.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
okular sella (5efc2ad9) con 8 generadores: poppler (PDF) + kimgio + txt + comicbook + fax + fb + dvi +
xps. okularGenerator_poppler.so → libpoppler-qt6.so.3 verificado.
poppler 25.02.0 (59461aff), Qt6-only: sin QT5/glib/cpp/utils/tests; NSS3/GPGME/LIBCURL/LIBTIFF off y
LIBOPENJPEG=none (sin deps selladas; los JPEG2000 embebidos no renderizan, el resto del PDF sí).
Cierre libpoppler.so VERIFICADO soberano: libfreetype.so.6 + libfontconfig.so.1 + libjpeg.so.62 +
libpng16.so.16 + liblcms2.so.2 + libz.so.1 — sin fugas al sysroot.
**DEUDA CAPA 0 'freetype/fontconfig shared-PIC' (marcada pendiente en ADR 0011) SALDADA:**
freetype-shared 2.14.3 (76fd1f4b, libfreetype.so.6, --without-harfbuzz corta el ciclo con harfbuzz) +
fontconfig-shared 2.18.1 (6ed9e303, libfontconfig.so.1). expat NO necesita variante: el canónico ya usa
--with-pic. Las variantes omiten los 3 patches Alpine de rendering (viven en recipes/, copiarlos
arriesga colisión de patches homónimos; no afectan el rasterizado que poppler necesita).
Fixes okular: FORCE_NOT_REQUIRED_DEPENDENCIES (flag OFICIAL que sugiere el propio feature_summary) para
DocTools/Purpose/TIFF/LibSpectre/KExiv2Qt6/DjVuLibre/EPub/Discount/QMobipocket6; +plasma-activities
(REQUIRED), +kpty (comicbook), +kwallet (ya sellada). GOTCHA musl durable: synctex_parser.c usa
vasprintf (extensión GNU) con -std=c99 ⇒ musl no la declara en modo estricto ⇒ CMAKE_C_FLAGS=-D_GNU_SOURCE.
Apps: konsole+dolphin+kate+kcalc+ark+filelight+gwenview+okular.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
ark sella (8ebf0e10) con sus plugins kerfuffle: kerfuffle_libarchive.so→libarchive.so.13 y
kerfuffle_libzip.so→libzip.so.5. Motor nuevo: libarchive 3.7.7 (41f9959c) + libzip 1.11.3 (f64869dc).
Deuda Capa 0 pagada (static↔dinámico): el libbz2.a/liblzma.a canónicos son SIN -fPIC → no enlazan en
un .so ('R_X86_64_PC32 recompile with -fPIC'). Nuevas variantes shared como zlib-shared: bzip2-shared
(4a015f8a, Makefile-libbz2_so → libbz2.so.1.0) y xz-shared (25765982, autotools --enable-shared →
liblzma.so.5). Cierre libarchive.so verificado soberano: liblzma.so.5 + libzstd.so.1 + libbz2.so.1.0 +
libz.so.1, sin fugas al sysroot. Apps: konsole + dolphin + kate + kcalc + ark.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
konsole (emulador de terminal) construye+sella con musl+zig-cc. Deps nuevas: kpty (pseudo-terminal,
cb0f3836) + icu4c + qtmultimedia + cierre knewstuff (attica/kpackage/kirigami). DocTools/doc a opcional.
Primera app del escritorio KDE construida — el shell ahora tiene con qué abrir algo.
kickoff (menú de apps) importaba org.kde.coreaddons (kcoreaddons con KCOREADDONS_USE_QML=ON,
variante sellada 6c0dd30e + hidratada aparte; receta revertida a OFF para no cascadear) +
org.kde.kirigamiaddons.components (kirigami-addons 1.9.0 a318888d, receta nueva). Ya no falla.
Applets rotos restantes: notifications (org.kde.quickcharts), keyboardlayout (kcm removido).
El shell Desktop.qml IMPORTA org.kde.plasma.activityswitcher (de imports/activitymanager) + org.kde.
kwindowsystem. Fix activityswitcher: switcherbackend.cpp usa XWindowTasksModel (X11, QList<WId>) bajo
#if HAVE_X11, pero HAVE_X11=1 pese a WITH_X11=OFF y el header falta en plasma-workspace wayland-puro;
WaylandTasksModel retorna QList<QUuid> (incompat) ⇒ desactivamos los bloques #if HAVE_X11 (#if 0) +
borramos el include (drag-drop X11 de ventanas entre actividades, feature menor). kwindowsystem: el
módulo QML org.kde.kwindowsystem se sella aparte (QML=ON, c9ff13c5) e hidrata al runtime; la receta
queda QML=OFF para NO cascadear el rebuild de kwin/plasma-workspace (deuda reproducibilidad ADR).
BUG CLAVE resuelto: el sandbox usa busybox grep (NO soporta --include) ⇒ mi sed de libwacom vía
grep -rl fallaba silencioso. Fix = seds directos sobre CMakeLists.txt. Cadena de blockers resuelta:
libwacom→opt, plasma-workspace añadido (LibKLookAndFeel/LibKWorkspace/LibTaskManager), KSMServer→opt
(wayland-puro sin ksmserver), xkbregistry→opt, xkeyboard-config SELLADO (ConfigureChecks xkb_base).
BLOCKER VIVO: feature_summary aborta por REQUIRED no hallados (XCB-XKB kcm-teclado, KF6Kirigami/
QQC2DesktopStyle pese a estar en deps, EGL, Qt6QuickWidgets) — interacción kcms-removido/wayland-puro,
necesita investigación fresca. Build detenido.
Cadena de blockers de configure descubierta (de-Alpinización KDE): qt5compat✓ knotifyconfig✓(sellado)
plasma5support✓ qqc2-desktop-style✓ → NetworkManagerQt/DocTools REQUIRED (patcheados a opcional) →
libwacom REQUIRED (KCM tableta) → KAccounts6 REQUIRED (online accounts). Desactivé subdir kcms (el shell
está en containments/applets, no en KCMs) pero libwacom/KAccounts6 los piden subdirs no-kcms (applets).
Tail pendiente: podar applets/subdirs que exigen accounts/wacom, o buildear shell-only. Ver handoff.
Configura OK (deps: qt5compat+knotifyconfig+plasma5support añadidos) y compila (155 obj);
en curso con cascada de rebuild de deps (fragilidad de hashing dinámico). Al sellar → hidratar
al rootfs → plasmashell cargaría la corona (H-shell). WITH_X11=OFF wayland-puro, patrón KF6.
- run-plasma-headless.sh: lanzador de sesión Plasma headless (software EGL/softpipe sobre KMS).
- mesa-swrast construido (softpipe, sin LLVM, sello c59738eb): swrast_dri/kms_swrast_dri.
- HANDOFF-noche-kde: kwin_wayland linkea+carga QPA pero create() del compositor crashea headless
(virtio-gpu/EGL-sw/seat en musl, opaco sin gdb). El rootfs es para GPU Intel real (iris) →
camino recomendado = imagen booteable para metal (laptop TigerLake). Estado + próximos pasos.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- complete-closure.sh: escanea DT_NEEDED de todos los ELF del rootfs y proyecta del store
sellado el artefacto que provee cada soname AUSENTE, iterando a punto fijo. Resuelve las
deps runtime que el índice del repo NO lista (libmount.so.1/util-linux, libltdl, libzstd,
libQt6UiTools). Sonames base (musl libc/loader) no se hidratan.
- zlib-shared.toml: variante DINÁMICA de zlib (el canónico es --static). El stack GUI NEEDED
libz.so.1 por soname y ningún artefacto lo proveía → caía al libz.so.1 de Alpine (fuga de
soberanía Capa 0). .so fabricado del libz.a PIC vía --whole-archive (soname libz.so.1).
- Resultado: rootfs kde-store-rootfs con 1269 .so, 0 sonames faltantes; kwin_wayland resuelve
TODAS sus libs y carga su QPA (bloqueado sólo en render: worker sin GPU/llvmpipe).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- hydrate-from-store.sh: proyecta artefactos SELLADOS del store al FHS vía hammer hydrate,
sin reproduce (install-reproduce rebuildеa qtbase por consumidor — hashing frágil bajo
régimen dinámico). Selección por-pkg = artefacto más reciente con mtime<hoy (cosecha final
coherente de la granja). 137/137 proyectados, 0 faltantes, 1257 .so, 5.0G en kde-store-rootfs.
- Hashes elegidos = los sellados de la campaña (kwin 3a674cb6, plasma-workspace 284c862f,
libplasma 963403fe, kscreenlocker 55120487, breeze df1d1e68, kio 44376420).
- Cierre runtime VERIFICADO completo: todos los NEEDED de plasmashell(30)/kwin_wayland(24)/
startplasma-wayland(11)/krunner(19) + libs core resuelven en el rootfs — cero colgantes.
- hydrate-fhs.sh: soporte multi-target (TARGETS) + canon prefiere nombre real qt6-* (el alias
fuerza cache-miss+rebuild) + más build-only excluidos.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>