SHAs reales 6.27.0, deps leídas de cada CMakeLists. Blockers externos sorteados con flags:
- kwallet: BUILD_KSECRETD=OFF (ksecretd exige Qca-qt6; kwalletd clásico usa blowfish propio)
- kiconthemes: USE_BreezeIcons=OFF (breeze-icons no sellado; iconos en runtime)
- ktextwidgets: WITH_TEXT_TO_SPEECH=OFF (qtspeech no sellado)
- sonnet: backends dicc (aspell/hunspell/voikko) todos opcionales, sin diccionarios
WITH_X11=OFF en kglobalaccel+kwallet (código X11). kxmlgui NO lo necesita en 6.27.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sellados: kdbusaddons kitemviews kitemmodels kplotting kcrash kcolorscheme kcompletion
kconfigwidgets knotifications. kjobwidgets en vuelo (faltaba dep knotifications).
Fixes durables:
- SET Qt6-consumer (mesa+libdrm+libxkbcommon+wayland) OBLIGATORIO en TODO framework que use
Qt6::Gui/Widgets (Qt6Gui_FOUND=FALSE si falta GLESv2). El subagente lo omitió → batch entero falló.
- gettext-tiny (msgmerge) para frameworks con traducciones ki18n (kcolorscheme/kconfigwidgets).
- qtdeclarative donde hay Qt6Qml transitivo (kcompletion/kconfigwidgets).
- kdbusaddons: WITH_X11=OFF (usaba qtx11extras_p.h de Qt-xcb ausente).
- knotifications: patch Canberra REQUIRED→opcional (código ya guarda -DHAVE_CANBERRA; evita
el stack de audio alsa/pulse/vorbis). Compila sin sonido, deuda audio diferida.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
kdbusaddons/kitemviews/kitemmodels/kplotting/kcrash/kcolorscheme/kcompletion/kjobwidgets/
kconfigwidgets construibles; knotifications BLOQUEADA (find_package(Canberra REQUIRED)
incondicional, sin flag WITHOUT_SOUND → necesita receta libcanberra o patch opcional).
kcrash WITH_X11=OFF. Designer plugin OFF en los Widgets.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Verificado: el artefacto qtbase contiene libQt6WaylandClient.so.6.11.1 (14.8MB real) +
Qt6WaylandClientConfig.cmake + plugins QPA wayland completos. kwindowsystem selló contra el
bundled. Una receta qtwayland separada duplicaría la .so (colisión de proveedor). Revierto la
dep espuria en kwindowsystem (mantiene su hash sellado 29265422).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
xcb-util-keysyms (KEYSYMS) + xcb-util-wm (ICCCM/EWMH) para el componente XCB de kwindowsystem.
libXau/libXdmcp en todos los consumidores de xcb (libxcb.pc los pide en Requires.private).
kguiaddons/kwindowsystem descubren que exigen QT_FEATURE_xcb + qtwayland + PlasmaWaylandProtocols
(integración de plataforma Qt, siguiente frente).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Cadena X11 foundational COMPLETA 9/9 (util-macros/xorgproto/xcb-proto/libpthread-stubs/
libXau/libXdmcp/xtrans/libxcb/libX11 todos sellados en granja).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- karchive: WITH_BZIP2/LIBLZMA/OPENSSL=OFF (static-sin-PIC no linkean en .so, deuda Capa0);
queda zlib+zstd (ambos PIC). Sellado.
- solid: FIX moc_predefs vacío — CMake no setea CMAKE_CXX_COMPILER_PREDEFINES_COMMAND para
zig-as-clang ⇒ moc no ve __linux__ ⇒ rama no-Linux de fstabwatcher (onFileChanged) vs compilador
Linux (onMountChanged). CMAKE_AUTOMOC_MOC_OPTIONS=-D__linux__=1 realinea. Patrón KF6 durable.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- karchive: zstd es REQUIRED en 6.27 (pkg_check_modules), no opcional; zstd catálogo gcc+PIC linkea en .so
- solid: find_package(UDev REQUIRED) → libudev-zero (soberano, sin udevd)
- qtbase: accessibility ON (kwidgetsaddons usa setAccessibleName; base de todo widget KDE) + sql ON (sqlite bundled, sin dep Capa0). Cascada rebuild Capa1+2 aceptada.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Triaje del batch: kconfig/kguiaddons/ki18n/kwidgetsaddons/kwindowsystem/solid piden
Qt6Qml → +qtdeclarative. karchive +bzip2/xz/zstd. solid +flex (predicate parser).
kcoreaddons/kwidgetsaddons habían fallado por carrera paralela (deps en vuelo);
con deps cacheadas + qtdeclarative se resuelven. kcodecs ya selló.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Generadas con el patrón KF6 completo: wrapper zig filtra-fatal-warnings, set
Qt-consumer (mesa+libdrm+libxkbcommon+wayland+dbus para los Gui) + ECM + qttools.
util-linux shared ya selló (0ae65443) ⇒ kcoreaddons desbloqueado. Batch a la granja.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
kcoreaddons falla 'blkid_* undefined': linkea libmount pero la util-linux canónica
es --disable-shared (el .a no arrastra libblkid). Variante --enable-shared produce
libmount.so→libblkid.so.1 (NEEDED) ⇒ resuelve solo. incoming-kde/ overridea a
recipes/ para builds KDE; base-system mantiene la static.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
kcoreaddons: 'unsupported linker arg: --fatal-warnings' — ECM KDECompilerSettings
lo inyecta y el linker de zig lo rechaza. El wrapper zig ahora lo filtra. Patrón
KF6 (todos los frameworks usan ECM). qttools ✓ selló (aae02df8).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Tras qtbase-con-Qt6DBus, todo build que corre tools Qt carga libQt6DBus→libdbus
(dbus_shutdown symbol not found). El set de deps Qt-consumer ahora incluye dbus.
UDev/SharedMimeInfo son Could-NOT-find no-fatales (opcionales).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Tras qtbase-con-Qt6DBus (e2d517cc ✓): qtdeclarative necesita dbus en deps (sus
tools cargan libQt6DBus→libdbus, dbus_message_set_sender not found). kcoreaddons
pide Qt6LinguistTools (ECMPoQmTools, traducciones) → receta qttools minimal
(qdoc/clang/designer OFF, solo lrelease/lupdate). Dep por stem de archivo (qttools).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
kcoreaddons (KF6 tier-1 más fundamental) REQUIRED find_package(Qt6DBus) → confirma
que la deuda D-Bus es el bloqueo crítico de TODO KF6. Receta dbus minimal (meson,
libdbus-1.so, expat-only, modular_tests/glib off) + qtbase dbus=ON linkeándola.
Rebuild de Capa 1 completo (qtbase real). SSL/SQL/glib/fontconfig siguen OFF
(mini-deudas separadas, no bloquean el shell). install de qtbase simplificado
(sin el symlink frágil).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Patrón KF6 = patrón módulo Qt + dep extra-cmake-modules. Core-only (Qt6Core+ECM),
QML/python/docs off. Prueba la puerta a los ~80 frameworks KF6.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Capa 1 Qt6 completa y sellada: qtbase+qtshadertools+qtsvg+qtlanguageserver+
qtdeclarative(QtQuick full d23aba45)+ECM. h-qml-test.cpp (Window+Text via QtQuick)
instancia la escena y sale rc=0 con offscreen+software backend. El motor QML
—corazón de Plasma— probado end-to-end bajo el stack soberano dinámico musl/zig-cc.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
qtshadertools ✓ selló (qsb OK), qtsvg ✓. qtdeclarative falla al correr un tool
GL-linked (qmlcachegen): 'libEGL.so.1: wl_resource_post_error: symbol not found'
— la libEGL de mesa (plataforma wayland-EGL) exige libwayland-server, no
materializado. +wayland a deps.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
qtshadertools construyó qsb + instaló OK, pero el post-paso de symlinks falló:
'ln: /out/: cannot overwrite directory' (línea de user_facing_tool_links con
nombre vacío → ln ... /out/) → install non-zero → no selló → qtdeclarative sin
qsb. Los tools quedan en /usr/lib/qt6/bin con rpath; CMake los halla solo.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Tras mesa/EGL, nuevo muro: Qt6GuiPrivateDependencies.cmake declara third_party
XKB (libxkbcommon) → sin materializar, Qt6::GuiPrivate no se crea → 'non-existent
target'. Set completo de deps p/consumidor Qt6::Gui: mesa (EGL+GLESv2) + libdrm +
libxkbcommon (XKB). Patrón durable para KF6.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Bug: qtshadertools selló VACÍO — 'Could NOT find EGL' → 'TARGET Qt::Gui not met'
→ skip build → sin qsb → qtdeclarative desactivó QtQuick (solo motor QML). El
Qt6::Gui de qtbase (construido con EGL) exige EGL en TODO consumidor. Fix: mesa
(trae EGL headers+egl.pc+libEGL) + libdrm en deps de qtshadertools/qtsvg/
qtdeclarative. Patrón para todo consumidor de Qt6::Gui (KF6 incluido).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Puerta a la Capa 2 (KF6, ~80 frameworks). CMake puro sin compilación; docs
(sphinx/qttools) y tests off ⇒ cmake+samurai, sin dep Qt. Listo para la próxima
tanda de granja tras validar la cadena Qt de Capa 1.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
De-Alpinizadas con el patrón del gate H-Qt (dinámico, wrappers zig cc/c++ en árbol
de fuente, CMAKE_PREFIX_PATH=/usr para hallar qtbase sellado, examples/tests off).
Deps por STEM de archivo (resolver por filename). Cadena a H-QML: qtbase(✓) →
qtshadertools → qtdeclarative (+ qtsvg + qtlanguageserver). Farm desde snapshot
KDE 407438750 (qtbase cache-hit).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
qtbase 6.11.1 SELLÓ (b3:7c7c747d…) — Core/Gui/Widgets/OpenGL + QPA wayland, todo
.so dinámico bajo musl+zig-cc. La app compila y linkea contra él; corrida en el
rootfs musl del worker con QT_QPA_PLATFORM=offscreen crea la ventana y el event
loop sale rc=0. Régimen dinámico del ADR 0011 probado end-to-end.
Hidratación runtime: mesa+libdrm del store + libxkbcommon.so.0 fabricada del .a
(PIC) — deuda Capa 0 (varios libs canónicos son static-only).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
8vo ciclo: entró a Gui, murió con símbolos expat (XML_ParseBuffer…) — fontconfig.a
→ expat pero el link estático no arrastra la transitiva (el .pc no la declara).
En vez de iterar lib-por-lib, bundleo freetype/harfbuzz/libpng/libjpeg en Qt (PIC,
cierre completo) y apago fontconfig. zlib/pcre2 siguen reusándose. Deuda Capa 0.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
7mo ciclo: pasó Network (openssl off), murió linkeando con glib — símbolos
indefinidos g_hmac_ref/g_strv_builder_ref/g_bookmark_file_copy bajo --no-undefined.
El glib.a resuelve lo que Core.so necesitó pero no el cierre completo estricto;
GTK4 lo linkea laxo. Qt tiene event loop propio → glib opcional para una ventana.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
6to ciclo: mismo patrón que sqlite, ahora en libQt6Network.so con libcrypto.a
(EVP_SKEYMGMT_free, R_X86_64_PC32 sin -fPIC). zlib entra bien (es libz.so). Una
ventana no usa SSL → openssl OFF. Deuda Capa 0/1: sqlite+openssl shared/PIC para KDE.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
5to ciclo: libQt6Core.so LINKEÓ (obj 431) — el régimen dinámico anda con el
closure estático. Único error PIC = libsqlite3.a (sellado sin -fPIC + sin
COLUMN_METADATA) al armar libqsqlite.so. Una ventana Qt no usa SQL → FEATURE_sql=OFF.
Cuando KDE pida Qt SQL (Capa 2): sqlite shared/PIC.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4to ciclo: /tmp/zw/cxx 'not found' (status 127) en compile — /tmp se vacía entre
fase configure y compile; sólo el árbol de fuente persiste. Muevo los wrappers a
$PWD/.zwrap (junto a build/). CMake cachea el path absoluto y sigue válido en compile.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3er ciclo murió en [133/1749] con 'zig -std=gnu++17' (unknown command): CMake
resuelve el symlink cc→/opt/zig/zig al binario real, perdiendo el despacho por
argv[0]; ASM y custom-commands de Qt invocan zig directo sin subcomando. Fix:
scripts /tmp/zw/{cc,cxx} = exec zig cc/c++ -mcpu=baseline; CMAKE_{C,CXX,ASM}_COMPILER
apuntan a ellos. Un script no se canonicaliza ⇒ el subcomando viaja siempre.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2do ciclo: la clausura de deps reconstruyó OK (cmake/glib/openssl/mesa/…) pero
dbus falló — su meson no ve glib-2.0 por pkg-config e intenta bajar glib (sin
red en sandbox). dbus no hace falta para abrir una ventana Qt; se apaga para
el gate. Bug del recipe dbus a arreglar en Capa 2 (KDE sí necesita D-Bus).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
El primer ciclo de granja falló en resolver la dep 'perl' (no hay receta
canónica). Qt6 reemplazó syncqt.pl por un syncqt C++; Alpine lista perl por
precaución. Se quita de deps para el gate; si el build lo reclama, se importa
perl de verdad (de-Alpinización grande, no especulativa).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Fija la política (capa GUI adopta linking DINÁMICO: Qt carga plugins .so en
runtime, incompatible con el static-musl del userland CLI), el orden topológico
en 5 capas (sustrato→Qt6→KF6→Plasma→apps), 6 hitos verificables (gate = H-Qt:
qtbase + una ventana Qt bajo el régimen dinámico) y la estrategia de granja
(cola aislada incoming-kde/, cadencia por capa, qtwebengine diferido).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Revierte el experimento de shadow-por-clobber: pisar /usr/lib con libs del base-system deja
arje-zero+hammerd arrancando pero sshd/login mudo (ABI musl del producto disturbado). No-clobber
preserva el producto entero y añade los binarios nuevos (probado VERDE). La sombra de applets busybox
(sed/ps/ip→full) es política del ensamblado del producto (mecanismo 'adelgazar busybox' de coreutils),
que re-linkea el NOMBRE sin tocar /usr/lib — follow-up de empaque documentado en el script.
product-base-system-boot-test.sh: hidrata los 26 paquetes del base-system sobre el product-rootfs
sellado (cp -an, preserva /etc/passwd/shadow/ssh del producto), lo bootea en QEMU y verifica DENTRO
del guest por SSH que corren. VERDE: arje-zero PID1 + sshd + bash 5.3/git 2.54/gpg 2.4.9/useradd/
vim 9.2/119 CA certs. Nota: MEM=6144 (rootfs aumentado ~1.1G en tmpfs). Caveat conocido: ps/ip/sed
resuelven a busybox por precedencia de PATH (los binarios full están, a sus rutas) — mismo patrón
'adelgazar busybox' que el producto ya aplica a coreutils; refinamiento de empaque pendiente.
Cierra el userland foundational: foot (terminal Wayland) + su cadena de libs → canónicas + repo
firmado. incoming-clib queda VACÍO (todo el base-system promovido). Front (d) COMPLETO a nivel build.
b3:2e8e1b2d. Cierra el userland foundational. Patrón meson estilo fcft, -Dprefer_static=true
(fontconfig.a arrastra expat), -Dgrapheme-clustering=enabled (utf8proc). link=dynamic (pixman
canónica es .so-only, la misma de mirada). Trampa real: zig 0.16/clang21 daba un binario que
SIGSEGV antes de main (relro→NULL) → zig_version=0.13.0 como pixman/wayland. foot+footclient
--version OK. Runtime: necesita compositor Wayland (frente mirada) + TERM/terminfo aparte.
b3:9cdb6274. Patrón meson --default-library=static -Ddocs=disabled -Dsvg-backend=none. deps:
tllist+utf8proc+freetype+fontconfig+harfbuzz+pixman (+libpng/zlib/expat por .pc transitivos).
Todas las deps de foot ya existen.
product-userland-from-repo.sh ahora hidrata el userland foundational C (bash/git/sudo/util-linux/
shadow/red/disco/TLS/gpg/…) además de la capa CLI Rust, todo desde el repo firmado con
--require-signed (verifica firma → reproduce del .swm → hidrata FHS). BASE_SYSTEM_PKGS + CLI_RUST_PKGS.