Files
SergioandClaude Opus 5 914c1b72af kcoreaddons: prender el módulo QML — el menú de Plasma ABRE, y detrás de él konsole
`-DKCOREADDONS_USE_QML=OFF` estaba desde que se escribió la receta, con el argumento razonable de
que un framework tier-1 no debería arrastrar QML. El precio no se vio hasta hacer CLIC en el
lanzador dentro de QEMU: `kickoff` importa `org.kde.coreaddons` y ese módulo lo instala esta receta
y ninguna otra ⇒ **el menú de aplicaciones no abría**. La librería C++ salía completa, sus 70
consumidores enlazaban bien y el perfil reportaba 100%.

Es la forma más pura del «sellado ≠ arranca»: no falta una librería, falta una porción OPCIONAL de
una librería que sí está. Ninguna métrica de clausura puede verlo — mide recetas, no features.

`qtdeclarative` ya estaba en `[deps].build`, así que prenderlo no agrega una dep: deja de tirar lo
que ya se podía construir.

VERIFICADO CON UN SOLO BUILD (56 s), a propósito, en vez de pagar la cascada para averiguarlo:
  · panel → menú abre (usuario, buscador, Favoritos/Todas, Aplicaciones/Lugares/Sesión)
  · buscar «konsole» + Enter → la terminal arranca y corre:
        uname -a         → Linux (none) 6.16.12 #1 SMP PREEMPT_DYNAMIC … x86_64
        konsole --version → konsole 25.04.3
Es la cadena completa del escritorio por primera vez: panel → menú → búsqueda → app → shell.

COSTO, medido antes de tocar y confirmado después: `yupana radio kcoreaddons` predijo 71, y el grafo
regenerado da exactamente **71 en deuda** (`escritorio-kde 192/263`). Queda como deuda DECLARADA
para una campaña de granja; la imagen de hoy corre con un kcoreaddons más nuevo que aquel contra el
que enlazaron sus consumidores, lo que es legítimo porque cruza un SONAME (misma ABI, sólo se suma
un módulo QML) — la misma regla que decidió la promoción de pipewire.

De yapa: `export SHELL=/bin/sh` en plasma-start-qemu.sh. El aviso rojo de konsole («Could not find
'', starting '/bin/sh' instead») era real y no venía de /etc/passwd —que dice /bin/sh— sino de que
konsole lee $SHELL y este getty no es un login shell.

Y el barrido que encuentra esto sin hacer clic queda escrito en el runbook: cruzar los `import` de
los `.qml` instalados contra los módulos con `qmldir`. Además de éste destapó `org.kde.kscreenlocker`
y `org.kde.newstuff.core`, sin diagnosticar.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YGXe6mShYYw6V8ea1dQ13u
2026-09-03 21:57:38 +00:00

72 lines
3.7 KiB
TOML

# kcoreaddons 6.27.0 — framework KF6 tier-1 más fundamental (KAboutData, KFormat, KJob, KProcess…).
# Solo Qt6Core + ECM; base de casi todo KF6. Campaña KDE (ADR 0011), Capa 2. Patrón KF6 = patrón módulo
# Qt (dynamic, wrappers zig, CMAKE_PREFIX_PATH=/usr) + dep extra-cmake-modules. Python bindings y docs
# apagados. Core-only ⇒ sin el set Gui (mesa/xkb/wayland).
#
# ── `KCOREADDONS_USE_QML=ON` (2026-09-03): EL MENÚ DE APLICACIONES NO ABRÍA SIN ESTO ─────────────
# Estuvo en OFF desde que se escribió la receta, con el argumento razonable de que un framework
# tier-1 no debería arrastrar QML. El precio no se vio hasta hacer CLIC en el lanzador del panel
# dentro de QEMU, donde Plasma contesta con el diálogo entero:
#
# qrc:/qt/qml/plasma/applet/org/kde/plasma/kickoff/main.qml:191:25: Type FullRepresentation unavailable
# .../FullRepresentation.qml:69:13: Type Header unavailable
# .../Header.qml:18:1: module "org.kde.coreaddons" is not installed
#
# `kickoff` —el menú, o sea la puerta de entrada del escritorio— importa `org.kde.coreaddons` para
# `KUser`/`KFormat` desde QML, y ese módulo lo instala ESTA receta y ninguna otra. Con el flag en OFF
# la librería C++ sale completa, todos sus 70 consumidores enlazan bien, el perfil reporta 100% y el
# menú no abre. **Es la forma más pura del «sellado ≠ arranca»: no falta una librería, falta una
# porción OPCIONAL de una librería que sí está.**
#
# `qtdeclarative` ya estaba en `[deps].build` (lo pedían otros consumidores del cierre), así que
# prenderlo no agrega una dep: sólo deja de tirar a la basura lo que ya se podía construir.
#
# ⚠ COSTO, medido antes de tocar: `yupana radio kcoreaddons` = **71** recetas KDE que caen a deuda,
# porque el ArtifactHash cambia y con él el de todo lo que cuelga. Es campaña de granja, no ticket.
#
# EL BARRIDO QUE LO ENCUENTRA SIN HACER CLIC, para la próxima: cruzar los `import` de los `.qml`
# INSTALADOS en el rootfs contra los módulos QML que tienen `qmldir`. Además de éste destapó que
# faltan `org.kde.kscreenlocker` y `org.kde.newstuff.core` — dos huecos del mismo tipo, sin diagnosticar.
name = "kcoreaddons"
version = "6.27.0"
license = "LGPL-2.1-or-later OR LGPL-3.0-or-later"
[source]
tarball = "https://download.kde.org/stable/frameworks/6.27/kcoreaddons-6.27.0.tar.xz"
sha256 = "ad0d0147968dabdcf011425cf7764e71a0d0cfdc30e9e34b561ea5ba9a768001"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
flags = []
[build.phases]
configure = '''
# Wrapper zig que FILTRA -Wl,--fatal-warnings: ECM (KDECompilerSettings) lo agrega y el linker de zig
# lo rechaza ("unsupported linker arg"). Patrón KF6 (todos los frameworks usan ECM).
ZW="$PWD/.zwrap"; mkdir -p "$ZW"
cat > "$ZW/cc" <<'W'
#!/bin/sh
a=""; for x in "$@"; do [ "$x" = "-Wl,--fatal-warnings" ] && continue; a="$a $x"; done
exec /opt/zig/zig cc -mcpu=baseline $a
W
cat > "$ZW/cxx" <<'W'
#!/bin/sh
a=""; for x in "$@"; do [ "$x" = "-Wl,--fatal-warnings" ] && continue; a="$a $x"; done
exec /opt/zig/zig c++ -mcpu=baseline $a
W
chmod +x "$ZW/cc" "$ZW/cxx"
cmake -B build -G Ninja -Wno-dev \
-DCMAKE_C_COMPILER="$ZW/cc" -DCMAKE_CXX_COMPILER="$ZW/cxx" -DCMAKE_ASM_COMPILER="$ZW/cc" \
-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_PREFIX_PATH=/usr \
-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=OFF \
-DBUILD_TESTING=OFF -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_DESIGNERPLUGIN=OFF \
-DKCOREADDONS_USE_QML=ON
'''
compile = "cmake --build build"
install = "DESTDIR=/out cmake --install build"
[deps]
build = ["cmake", "samurai", "python3", "pkgconf", "qtbase", "dbus", "extra-cmake-modules", "util-linux", "qttools", "qtdeclarative", "mesa", "libdrm", "libxkbcommon", "wayland"]