12 KiB
HANDOFF — sesión nocturna autónoma KDE (2026-07-13→14)
Trabajo desatendido continuando la campaña KDE Plasma 6 tras cerrar H-QML. Estado y próximos pasos.
Lo logrado esta noche (todo committeado+pusheado a main)
-
Hidratación FHS del escritorio COMPLETO, rebuild-free (commit
d6944b2).hammer hydrate <hash> --intoproyecta artefactos SELLADOS del store sin reproduce (elinstall-reproduce rebuildеa qtbase por consumidor — hashing frágil bajo régimen dinámico).scripts/kde/hydrate-from-store.sh→work/kde-store-rootfs: 137 pkgs, hashes = los sellados de la campaña (kwin 3a674cb6, plasma-workspace 284c862f, libplasma 963403fe, etc.). -
Cierre runtime COMPLETO + zlib soberano shared (commit
a7449a0).scripts/kde/complete-closure.sh: escanea DT_NEEDED de todos los ELF del rootfs y proyecta del store lo que falte (libmount.so.1/util-linux, libltdl, libzstd, libQt6UiTools). 1269 .so, 0 faltantes.recipes/incoming-kde/zlib-shared.toml(bd559f41): el stack GUI NEEDEDlibz.so.1por soname y ningún artefacto lo proveía → caía al de Alpine (fuga de soberanía)..sofabricado dellibz.aPIC vía--whole-archive.- kwin_wayland ahora resuelve TODAS sus libs y carga su plugin QPA (antes fallaba por libs faltantes).
-
mesa-swrast construido (softpipe/swrast, GL por software SIN LLVM, sello c59738eb; la receta
recipes/mesa-swrast.tomlya existía). Proveeswrast_dri.so+kms_swrast_dri.so+ libEGL/GLESv2 software, para render sin GPU. -
scripts/kde/run-plasma-headless.sh: lanzador de la sesión Plasma headless (software EGL/softpipe sobre el KMS del worker). NO funciona aún (ver abajo).
🎉 LANDMARK: kwin + plasmashell CORREN HEADLESS end-to-end (software, rootfs soberano)
El hack loader --library-path rompía el dlopen de plugins de kwin (QPA create() → core dump). Fix
= bwrap con el rootfs merged como / (--overlay-src .dev-fs/alpine --overlay-src kde-store-rootfs --tmp-overlay / + LD_LIBRARY_PATH=/usr/lib64:/usr/lib/qt6:/usr/lib:/lib), paths FHS nativos. Con eso:
kwin_wayland --virtual --width 1280 --height 800LEVANTA el compositor (backend virtual, framebuffer en memoria; gbm sobre renderD128 falla pero cae a compositing por software y sigue) →Accepting client connections on sockets: QList("wayland-0"), socket/run/wayland-0creado.plasmashellCONECTA a wayland-0 y arranca (proceso vivo, frameworkintegration/QtQuick-software cargados). El stack Plasma 6 SOBERANO (musl/zig-cc) EJECUTA end-to-end sin GPU real.- Se traba en
starting invalid corona "org.kde.plasma.desktop"→ falta el paquete SHELLorg.kde.plasma.desktop, que proveeplasma-desktop(NO construido aún). plasma-workspace da el binario plasmashell, no el shell/corona. Ese es el único gran gap a "escritorio prende" (H-shell).
Env que funciona (bwrap): GALLIUM_DRIVER=swrast LIBGL_ALWAYS_SOFTWARE=1 LIBGL_DRIVERS_PATH=/usr/lib/dri MESA_LOADER_DRIVER_OVERRIDE=swrast QT_QUICK_BACKEND=software + mesa-swrast hidratado. Gaps menores
detectados (no-fatales para arrancar, sí para un desktop limpio): D-Bus session (crear /run/dbus antes de
dbus-daemon --session), xkeyboard-config (/usr/share/X11/xkb), breeze-icons (icon theme), fuentes.
Próximo directo a H-shell: plasma-desktop (EN CONSTRUCCIÓN al cierre de la noche)
plasma-desktop (shell org.kde.plasma.desktop) es lo único que falta para H-shell. Progreso nocturno:
- Receta
recipes/incoming-kde/plasma-desktop.tomlDRAFTED (patrón KF6, WITH_X11=OFF wayland-puro). Configura OK y COMPILA (155 objetos). Deps nuevas que pedía:qt5compat,knotifyconfig,plasma5support(las 2 últimas: qt5compat/plasma5support ya sellados; knotifyconfig lo SELLÉ, ver abajo). knotifyconfig6.27.0 SELLADO (7db820f8, commit726b309) — framework KF6 nuevo, dep de plasma-desktop.- Al cierre (CAVEAT IMPORTANTE):
hammer build plasma-desktopdispara un rebuild casi TOTAL del stack KDE — la deriva de hashes (riesgo de reproducibilidad del ADR) hace cache-MISS de casi todos los deps ya sellados (qtdeclarative, breeze, baloo, kwidgetsaddons, ktexteditor… rebuildeándose; 0 sellados en 1.5h al cierre). Va nohup'd y puede sellar recién en varias horas (rebuildеa el mundo). Si por la mañana NO selló o sigue rebuildeando deps, esta vía es inviable tal cual — ver alternativas:- (a) Build en un farm-up desde el snapshot de la campaña (
hammer-kde-plasma-workspace-2026-07-13u otrohammer-kde-*): ahí los deps sellados cache-hitean (mismo entorno que la campaña) ⇒ sólo compila los 155 objetos de plasma-desktop (~10 min).IMAGE=<id> scripts/farm/farm-up.sh 1+ build. - (b) Extraer SÓLO el shell
org.kde.plasma.desktop(QML/data puro) si se puede aislar del build C++. - (c) Investigar/arreglar la deriva de hashes de los deps (por qué hworker-4 ya no cache-hitea los
artefactos que él mismo selló en la campaña — ¿el store cambió? ¿resolución de deps de la receta?).
El artefacto plasma-desktop, cuando exista, se hidrata SOLO (su shell+applets), sin importar los deps
rebuildeados. Matar el build runaway:
$W 'pkill -f plasma-desktop; pkill ninja; pkill -f cmake'.
- (a) Build en un farm-up desde el snapshot de la campaña (
plasma-desktop — ESTADO FINAL de la noche (~08:40) + BUG CLAVE
BUG CLAVE resuelto (aplica a TODA la campaña): el sandbox de build usa busybox grep, que NO soporta
--include ⇒ un sed vía grep -rl ... --include=CMakeLists.txt falla SILENCIOSO (for-loop vacío).
Usar seds DIRECTOS sobre el fichero (sed -i '...' CMakeLists.txt). Esto me costó ~5 intentos creyendo
que el patch de libwacom no aplicaba.
Cadena de configure resuelta (todo en la receta, seds directos + deps): qt5compat✓ knotifyconfig✓
(SELLADO 7db820f8) plasma5support✓ qqc2-desktop-style✓ plasma-workspace✓(añadido — provee
LibKLookAndFeel/LibKWorkspace/LibTaskManager/LibNotificationManager) xkeyboard-config✓(SELLADO 37756ac8,
para ConfigureChecks xkb_base) + patches a opcional: KF6NetworkManagerQt, KF6DocTools, libwacom,
KSMServerDBusInterface (wayland-puro no tiene ksmserver), xkbregistry + add_subdirectory(kcms) removido.
BLOCKER VIVO al cerrar: feature_summary aborta por REQUIRED no hallados: XCB-XKB (kcm/keyboard),
KF6Kirigami, KF6QQC2DesktopStyle (¡ambos EN deps — no deberían faltar!), EGL (mesa lo provee),
Qt6QuickWidgets (módulo de qtdeclarative). Que kirigami/qqc2 falten pese a estar en deps sugiere una
interacción de la remoción de kcms o del régimen wayland-puro (o falta materializar EGL/QuickWidgets .pc).
Investigar con cabeza fresca: (1) ¿por qué kirigami/qqc2 no se hallan si están en deps y otros KF6 sí?
(2) EGL → ¿egl.pc de mesa en PKG_CONFIG_PATH? (3) Qt6QuickWidgets → ¿dep explícito? (4) XCB-XKB es del
kcm/keyboard: si molesta, hay find_package/set_package_properties REQUIRED top-level que sobreviven a la
remoción del subdir — patchearlos. Receta muy avanzada; falta este último tramo de feature_summary.
(referencia previa) Cadena de blockers de plasma-desktop
Los deps CACHE-HITEAN (no hay cascada — el build compila ~155 obj en ~15 min); el problema es la
de-Alpinización del configure. Blockers resueltos en la receta: qt5compat✓ knotifyconfig✓(SELLADO
7db820f8) plasma5support✓ qqc2-desktop-style✓ + patches a opcional de KF6NetworkManagerQt/KF6DocTools
libwacom→sin-REQUIRED +add_subdirectory(kcms)REMOVIDO (el shell vive en containments/applets, no en los KCMs de System Settings, que traen el infierno kaccounts/wacom/touchpad). Blocker vivo al parar:libwacom+KAccounts6REQUIRED los piden subdirs NO-kcms (applets/containments). Recomendación para cerrar: podar los subdirs/applets que exigen accounts/wacom (mismo patrón:sed -i '/add_subdirectory(X)/d') o buildear SHELL-ONLY. El objetivo mínimo es que el artefacto contenga/usr/share/plasma/shells/org.kde.plasma.desktop/+ los containments base (desktop/panel) + applets core (kickoff/taskmanager/systemtray/folder) — con eso plasmashell carga la corona. Una vez que selle: hidratar SOLO el artefacto plasma-desktop al rootfs y re-correrrun-plasma-headless.sh. Build detenido al cierre (no dejar corriendo: el estado del build-dir se enredó entre intentos).
Comandos de la mañana (retomar plasma-desktop → intentar H-shell)
W="ssh -i ~/.ssh/github5 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no root@95.217.179.242"
# 1) ¿selló plasma-desktop?
$W 'cd /opt/hammer; grep -E "sealed.*plasma-desktop|PD_EXIT=" work/build-plasma-desktop.log | tail -3'
# si NO selló y no hay build vivo (ps), relanzar:
# $W 'cd /opt/hammer; nohup sh -c "NO_PROXY=localhost NIX_STORE=\$HOME/.nixstore ./target/release/hammer --store ./store build recipes/incoming-kde/plasma-desktop.toml; echo PD_EXIT=\$?" > work/build-plasma-desktop.log 2>&1 &'
# 2) al sellar: hidratar plasma-desktop al rootfs headless + su cierre
$W 'cd /opt/hammer; H=$(ls -dt store/*-plasma-desktop|head -1|sed -E "s|store/([0-9a-f]+)-.*|\1|"); \
./target/release/hammer --store ./store hydrate $H --into work/kde-store-rootfs --link static; \
RFS=work/kde-store-rootfs scripts/kde/complete-closure.sh'
# 3) correr la sesión (¿carga la corona org.kde.plasma.desktop ahora?):
$W 'cd /opt/hammer; SECS=40 scripts/kde/run-plasma-headless.sh 2>&1 | tail -40'
# Buscar en client.log: ¿desapareció "invalid corona"? ¿aparecen containments/panel?
Posibles blockers restantes de plasma-desktop (si el build falla más adelante): más frameworks KF6 no
construidos (mismo método: configure delata Could NOT find KF6Xxx → draftar receta clonando
knotifyconfig.toml → sellar → añadir a deps). Candidatos: kpeople, baloo (→lmdb), kaccounts, libxkbfile.
Opcionales pesados a apagar por flag si aparecen REQUIRED: ibus, packagekit, pulseaudio/pipewire.
Piezas de datos que faltan para un desktop LIMPIO (no bloquean el arranque)
- fuentes:
xkeyboard-config-2.44.tar.xzsha54d2c33eeebb031d48fa590c543e54c9bcbd0f00386ebc6489b2f47a0da4342a(para/usr/share/X11/xkb, quita el error xkb); una receta de fuentes dejavu (Qt ya no las trae). - breeze-icons (icon theme "breeze not found").
Camino paralelo: METAL (tu laptop TigerLake/Intel)
El rootfs está hecho para GPU Intel real (iris_dri.so), no software. Donde kwin renderiza de verdad
es tu laptop. Para probar H-shell mañana:
- Regenerar el rootfs de producto con Mesa IRIS (NO swrast — esta noche se le hizo swap a swrast para
el intento headless; revertir):
# en el worker (o local con el store): RFS=work/kde-metal-rootfs TARGETS="plasma-workspace kwin kscreenlocker breeze frameworkintegration \ qqc2-desktop-style plasma-integration" scripts/kde/hydrate-from-store.sh RFS=work/kde-metal-rootfs scripts/kde/complete-closure.sh # cierra libmount/libz/etc. # asegurar iris (mesa canónico) hidratado, NO mesa-swrast - Fuentes: falta desplegar TTFs (dejavu) — Qt ya no las trae (
QFontDatabase: Cannot find font directory). Cosmético pero necesario para texto. (Pendiente: receta dejavu-fonts.) - Empaquetar como imagen booteable EFI (
scripts/install-image-efi.sh/disk-image.sh) con kernel-metal (etapa-metal-usb) + un init que lancestartplasma-wayland, y bootear en el laptop (Secure Boot OFF).
Alternativa productiva (si se prefiere seguir en el worker)
- Capa 2 KF6 / apps núcleo: importar+construir
konsole/dolphin/katevía granja (extiende el escritorio usable). Verificable (sellan o no). - Seguir debug headless: correr kwin bajo gdb en el worker para el backtrace del core dump del QPA;
probar
KWIN_DRM_NO_AMS=1,WLR_RENDERER=pixman-equivalentes, o el backend--virtualcon distinto EGL (EGL_PLATFORM=surfaceless).
Comandos útiles
- Worker:
ssh -i ~/.ssh/github5 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no root@95.217.179.242(cd /opt/hammer). zsh:${=VAR}para splitear. - Rootfs actual:
work/kde-store-rootfs(con mesa-swrast swapped). Rehidratar limpio con los scripts de arriba.