From 133e1dd802ce55197bd4840c5547f3cf44d3201b Mon Sep 17 00:00:00 2001 From: Sergio Date: Wed, 9 Sep 2026 16:57:23 +0000 Subject: [PATCH] =?UTF-8?q?triaje:=2025=20m=C3=A1s=20=E2=80=94=20y=20una?= =?UTF-8?q?=20correcci=C3=B3n:=20las=20opciones=20'auto'=20NO=20son=20una?= =?UTF-8?q?=20escotilla=20del=20cat=C3=A1logo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit De 78 pendientes a 53. Caen enteras opencv, swayimg, networkmanager, gwenview, appstream y plasma-desktop. ⚠ CORRECCIÓN, y es de las que cambian lo que uno haría. En dos commits de hoy avisé que cairo (lzo) y xwayland (libdecor) piden esas libs con `auto`/`required:false` y que «si entran al catálogo, el ArtifactHash cambia sin que nadie lo pida». El mecanismo está mal: el sandbox de hammer monta SÓLO las deps declaradas (docs/02-build-lab.md §3.4 — raíz tmpfs y bind read-only de las deps del store), así que meterla en [deps] mueve hash_inputs y SE VE. La vía por la que un `auto` sí muerde en silencio es otra y ya está documentada: que la lib aparezca en el LAB, que no entra en hash_inputs. Los dos `porque` quedan corregidos en el fichero; el aviso sigue valiendo, pero apunta al lab y no al catálogo. Lo demás, cada uno con su prueba: opencv -DBUILD_LIST=core,imgproc ⇒ de todo OpenCV se construyen DOS módulos: gflags y glog son del dnn y hdf5-cpp del hdf, ninguno en la lista. eigen y openblas caen por -DWITH_EIGEN=OFF y -DWITH_LAPACK=OFF, explícitos swayimg -Davif/-Dheif/-Draw/-Dsixel=disabled, los cuatro escritos en la receta networkmanager newt es la dep de nmtui y el propio meson lo dice en su assert (meson.build:806: «Use -Dnmtui=false to disable it»), que es justo lo que pasamos; slang es su back-end. bpftools cae por -Debpf=false gwenview cfitsio (FITS de astronomía), libkdcraw (RAW) y kimageannotator son TYPE OPTIONAL en su CMakeLists; qtimageformats no aparece ahí — son plugins de Qt de runtime appstream -Dstemming=false para libstemmer plasma-desktop kaccounts-integration es TYPE OPTIONAL y su PURPOSE lo dice («OpenDesktop integration plugin»); xf86-input-evdev y xf86-input-libinput son drivers del SERVIDOR X y la distro no corre uno; plasma-sdk no aparece en su CMakeLists ⚠ QUINTO, SEXTO Y SÉPTIMO DESFASE DE VERSIÓN: xapian, libfyaml y libblake3 no aparecen en NINGÚN meson de AppStream 1.0.5, que es la que pineamos. Ya van siete candidatos que salen de expresiones de nixpkgs más nuevas que nuestros pines (openapv, libebur128, spandsp, libglycin y estos tres). Es un patrón, no una casualidad: cuando el `porque` heurístico dice «lo pide una sola receta», mirar primero si la versión pineada la nombra sale más barato que razonar sobre la feature. ⚠ dnsmasq no es una librería: NM la declara `type: 'string'` (meson_options.txt:10), una RUTA a un binario que ejecuta. Capacidad ausente —compartir la conexión y el DNS con caché— no dep rota. Y gnome-keyring sigue pendiente, ahora con la medición terminada escrita en su `porque`: el grep sobre el store ENTERO dice que NINGÚN artefacto declara org.freedesktop.secrets, y del lado KDE el artefacto de kwallet trae sólo libKF6Wallet.so — la librería cliente— sin kwalletd6. Los dos escritorios tienen el prompter sellado y ninguno tiene el almacén. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01LCt3ettR4Z7b6wPCBmbvEV --- docs/state/frontera-triaje.toml | 106 ++++++++++++++++---------------- 1 file changed, 53 insertions(+), 53 deletions(-) diff --git a/docs/state/frontera-triaje.toml b/docs/state/frontera-triaje.toml index f2ccf993..16d144c0 100644 --- a/docs/state/frontera-triaje.toml +++ b/docs/state/frontera-triaje.toml @@ -196,9 +196,9 @@ perfiles = ["escritorio-kde"] piden = ["boost"] [candidato."bpftools"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (networkmanager); mirá si es una feature opcional" +porque = "la receta pasa -Debpf=false, y ya estaba escrito en sus comentarios" perfiles = ["escritorio-kde"] piden = ["networkmanager"] @@ -223,9 +223,9 @@ perfiles = ["escritorio-kde"] piden = ["obs-studio"] [candidato."cfitsio"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (gwenview); mirá si es una feature opcional" +porque = "CMakeLists.txt:121 la usa `if(CFITSIO_FOUND)` con un FindCFitsio propio: son imágenes FITS de astronomía. ⚠ Es un `find` AUTOMÁTICO sin apagar, pero eso NO es una escotilla del catálogo: el sandbox de hammer monta SÓLO las deps declaradas (docs/02-build-lab.md §3.4, raíz tmpfs + bind read-only de las deps) y agregarla a [deps] movería el ArtifactHash, o sea que se vería. La vía silenciosa es otra: que aparezca en el LAB, que no entra en hash_inputs. " perfiles = ["escritorio-kde"] piden = ["gwenview"] @@ -318,9 +318,9 @@ perfiles = ["escritorio-kde"] piden = ["okular"] [candidato."dnsmasq"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (networkmanager); mirá si es una feature opcional" +porque = "⚠ no es una librería que se enlace: meson_options.txt:10 la declara `type: 'string'` — una RUTA a un binario que NM ejecuta. Sirve para el método `shared` (compartir la conexión) y para el plugin de DNS con caché. Capacidad ausente, no dep rota" perfiles = ["escritorio-kde"] piden = ["networkmanager"] @@ -393,9 +393,9 @@ perfiles = ["escritorio-gnome", "escritorio-kde"] piden = ["mutter", "xwayland"] [candidato."eigen"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (opencv); mirá si es una feature opcional" +porque = "la receta pasa -DWITH_EIGEN=OFF explícito" perfiles = ["escritorio-kde"] piden = ["opencv"] @@ -479,9 +479,9 @@ perfiles = ["escritorio-gnome"] piden = ["libseccomp"] [candidato."gflags"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (opencv); mirá si es una feature opcional" +porque = "-DBUILD_LIST=core,imgproc: de todo OpenCV se construyen DOS módulos. gflags/glog son deps del módulo dnn, que no está en la lista" perfiles = ["escritorio-kde"] piden = ["opencv"] @@ -523,9 +523,9 @@ piden = ["go"] ausente = true # ya no aparece en el último barrido de la frontera [candidato."glog"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (opencv); mirá si es una feature opcional" +porque = "-DBUILD_LIST=core,imgproc: gflags/glog son deps del módulo dnn, que no se construye" perfiles = ["escritorio-kde"] piden = ["opencv"] @@ -574,7 +574,7 @@ piden = ["gnome-shell"] [candidato."gnome-keyring"] veredicto = "pendiente" sugerencia = "opcional?" -porque = "lo pide una sola receta (gnome-shell); mirá si es una feature opcional" +porque = "SIGUE PENDIENTE A PROPÓSITO: es el primer candidato del barrido que parece falta de verdad, y un 'hueco' nace como raíz en targets.toml y entra al drenaje ⇒ lo decide un humano. MEDIDO: (1) gnome-shell js/ui/components/keyring.js:221 hace own_name('org.gnome.keyring.SystemPrompter') ⇒ el shell PREGUNTA la contraseña, no guarda el secreto; (2) grep sobre el STORE ENTERO: NINGÚN artefacto declara org.freedesktop.secrets; (3) del lado KDE tampoco hay demonio — el artefacto de kwallet instala sólo libKF6Wallet.so y sus cabeceras, sin kwalletd6. O sea: los dos escritorios tienen el PROMPTER sellado (gnome-shell, y plasma-workspace publica org.kde.secretprompter.service) y NINGUNO tiene el almacén. Elegir gnome-keyring, kwalletd o los dos es decisión de diseño, no de triaje" perfiles = ["escritorio-gnome"] piden = ["gnome-shell"] @@ -686,9 +686,9 @@ perfiles = ["escritorio-gnome"] piden = ["colord"] [candidato."hdf5-cpp"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (opencv); mirá si es una feature opcional" +porque = "-DBUILD_LIST=core,imgproc: es la dep del módulo hdf, que no se construye. Y la receta ya recorta la E/S de imágenes entera (-DWITH_JPEG/PNG/TIFF/WEBP=OFF)" perfiles = ["escritorio-kde"] piden = ["opencv"] @@ -742,9 +742,9 @@ perfiles = ["cli", "escritorio-sway"] piden = ["fd"] [candidato."kaccounts-integration"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (plasma-desktop); mirá si es una feature opcional" +porque = "CMakeLists.txt:119-123 la declara TYPE OPTIONAL y su PURPOSE lo dice: «Required for building the OpenDesktop integration plugin». Sin cuentas en línea en la distro no hay qué integrar" perfiles = ["escritorio-kde"] piden = ["plasma-desktop"] @@ -762,9 +762,9 @@ perfiles = ["escritorio-kde"] piden = ["dolphin", "filelight", "gwenview", "kate", "kcalc", "kcharselect", "kded", "kdf", "kfind", "kio", "kmenuedit", "konsole"] # …y 7 más [candidato."kimageannotator"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (gwenview); mirá si es una feature opcional" +porque = "CMakeLists.txt:169 la declara TYPE OPTIONAL —anotar capturas— y arrastraría además kColorPicker-Qt6, que su rama pide REQUIRED. ⚠ Es un `find` AUTOMÁTICO sin apagar, pero eso NO es una escotilla del catálogo: el sandbox de hammer monta SÓLO las deps declaradas (docs/02-build-lab.md §3.4, raíz tmpfs + bind read-only de las deps) y agregarla a [deps] movería el ArtifactHash, o sea que se vería. La vía silenciosa es otra: que aparezca en el LAB, que no entra en hash_inputs. " perfiles = ["escritorio-kde"] piden = ["gwenview"] @@ -849,9 +849,9 @@ perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritor piden = ["pulseaudio"] [candidato."libavif"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (swayimg); mirá si es una feature opcional" +porque = "la receta pasa -Davif=disabled explícito" perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"] piden = ["swayimg"] @@ -863,9 +863,9 @@ perfiles = ["escritorio-kde"] piden = ["qtbase"] [candidato."libblake3"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (appstream); mirá si es una feature opcional" +porque = "⚠ DESFASE DE VERSIÓN: AppStream 1.0.5 no la nombra en ningún meson. Sale de una expresión de nixpkgs para una versión más nueva" perfiles = ["escritorio-gnome"] piden = ["appstream"] @@ -927,7 +927,7 @@ piden = ["qtbase"] [candidato."libdecor"] veredicto = "opcional" sugerencia = "opcional?" -porque = "sólo decora la ventana cuando Xwayland corre ROOTFUL (meson_options.txt:81); acá lo lanza el compositor en rootless. ⚠ Ojo: meson.build:210 la pide `required: false` con la opción en 'auto' ⇒ si libdecor entrara al catálogo y cayera en la clausura de xwayland, xwayland cambiaría de ArtifactHash sin que nadie lo pida" +porque = "sólo decora la ventana cuando Xwayland corre ROOTFUL (meson_options.txt:81); acá lo lanza el compositor en rootless. meson.build:210 la pide `required: false` con la opción en 'auto'. ⚠ CORRECCIÓN de cómo lo dije al principio: no es una escotilla del catálogo — el sandbox monta sólo las deps declaradas y agregarla movería el ArtifactHash. La vía silenciosa sería el LAB, que no entra en hash_inputs" perfiles = ["escritorio-kde"] piden = ["xwayland"] @@ -982,9 +982,9 @@ perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritor piden = ["pipewire"] [candidato."libfyaml"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (appstream); mirá si es una feature opcional" +porque = "⚠ DESFASE DE VERSIÓN: AppStream 1.0.5 no la nombra en ningún meson. El YAML de esta versión lo hace libyaml, que ya está en [deps]" perfiles = ["escritorio-gnome"] piden = ["appstream"] @@ -1003,9 +1003,9 @@ perfiles = ["escritorio-gnome"] piden = ["mutter"] [candidato."libheif"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (swayimg); mirá si es una feature opcional" +porque = "la receta pasa -Dheif=disabled explícito" perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"] piden = ["swayimg"] @@ -1035,9 +1035,9 @@ perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritor piden = ["opencv", "swayimg"] [candidato."libkdcraw"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (gwenview); mirá si es una feature opcional" +porque = "CMakeLists.txt:148-156 la declara TYPE OPTIONAL: es el decodificador de fotos RAW. Mismo criterio que -Draw=disabled en swayimg. ⚠ Es un `find` AUTOMÁTICO sin apagar, pero eso NO es una escotilla del catálogo: el sandbox de hammer monta SÓLO las deps declaradas (docs/02-build-lab.md §3.4, raíz tmpfs + bind read-only de las deps) y agregarla a [deps] movería el ArtifactHash, o sea que se vería. La vía silenciosa es otra: que aparezca en el LAB, que no entra en hash_inputs. " perfiles = ["escritorio-kde"] piden = ["gwenview"] @@ -1187,9 +1187,9 @@ perfiles = ["escritorio-kde"] piden = ["modemmanager"] [candidato."libraw"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (swayimg); mirá si es una feature opcional" +porque = "la receta pasa -Draw=disabled explícito (fotos RAW de cámara)" perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"] piden = ["swayimg"] @@ -1222,9 +1222,9 @@ perfiles = ["escritorio-kde"] piden = ["qtbase"] [candidato."libsixel"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (swayimg); mirá si es una feature opcional" +porque = "la receta pasa -Dsixel=disabled explícito: es el back-end que pinta imágenes DENTRO de un terminal, no en el compositor" perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"] piden = ["swayimg"] @@ -1249,9 +1249,9 @@ perfiles = ["escritorio-gnome"] piden = ["mutter"] [candidato."libstemmer"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (appstream); mirá si es una feature opcional" +porque = "la receta pasa -Dstemming=false explícito: es la raíz léxica para buscar «editor» y que encuentre «editores»" perfiles = ["escritorio-gnome"] piden = ["appstream"] @@ -1577,7 +1577,7 @@ piden = ["libpsl"] [candidato."lzo"] veredicto = "opcional" -porque = "libarchive pasa --without-lzo2 explícito. ⚠ cairo NO la apaga: meson.options:19 la declara feature 'auto' y meson.build:203 la tomaría si apareciera en el sandbox (sólo la usa util/cairo-script) ⇒ si algún día lzo entra al catálogo y cae en la clausura de cairo, cairo cambia de ArtifactHash sin que nadie lo haya pedido" +porque = "libarchive pasa --without-lzo2 explícito. cairo NO la apaga: meson.options:19 la declara feature 'auto' y meson.build:203 la tomaría si apareciera. ⚠ CORRECCIÓN de cómo lo dije al principio: eso NO es una escotilla del catálogo. El sandbox monta SÓLO las deps declaradas (docs/02-build-lab.md §3.4: raíz tmpfs + bind read-only de las deps) y agregarla a [deps] movería el ArtifactHash, o sea que se vería. La vía silenciosa sería que apareciera en el LAB, que no entra en hash_inputs. Sólo la usa util/cairo-script" perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"] piden = ["cairo", "libarchive"] @@ -1672,9 +1672,9 @@ perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritor piden = ["nodejs"] [candidato."newt"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (networkmanager); mirá si es una feature opcional" +porque = "es la dep de nmtui y el propio meson lo dice en el assert de meson.build:806 — «You must have libnewt installed to build nmtui. Use -Dnmtui=false to disable it»— que es exactamente lo que pasa la receta. Ojo: nmtui viene en TRUE por defecto (meson_options.txt:43)" perfiles = ["escritorio-kde"] piden = ["networkmanager"] @@ -1727,9 +1727,9 @@ perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritor piden = ["ffmpeg"] [candidato."openblas"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (opencv); mirá si es una feature opcional" +porque = "la receta pasa -DWITH_LAPACK=OFF explícito, que es por donde OpenCV toma un BLAS/LAPACK externo" perfiles = ["escritorio-kde"] piden = ["opencv"] @@ -1801,9 +1801,9 @@ perfiles = ["escritorio-kde"] piden = ["plasma-workspace"] [candidato."plasma-sdk"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (plasma-desktop); mirá si es una feature opcional" +porque = "cero referencias en el CMakeLists de plasma-desktop: son las herramientas de DESARROLLO de plasmoides (plasmoidviewer y compañía), un paquete aparte que el sembrador hereda de la expresión de nixpkgs" perfiles = ["escritorio-kde"] piden = ["plasma-desktop"] @@ -1971,9 +1971,9 @@ perfiles = ["escritorio-kde"] piden = ["obs-studio"] [candidato."qtimageformats"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (gwenview); mirá si es una feature opcional" +porque = "no aparece en ningún CMakeLists de gwenview: es un paquete de PLUGINS de Qt que se cargan en runtime para formatos extra. Sin él gwenview abre los formatos que trae qtbase; no falla nada al construir" perfiles = ["escritorio-kde"] piden = ["gwenview"] @@ -2136,9 +2136,9 @@ perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritor piden = ["nodejs"] [candidato."slang"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (networkmanager); mirá si es una feature opcional" +porque = "es el back-end de pantalla de newt ⇒ cae con él: la receta pasa -Dnmtui=false" perfiles = ["escritorio-kde"] piden = ["networkmanager"] @@ -2415,9 +2415,9 @@ perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritor piden = ["ffmpeg"] [candidato."xapian"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (appstream); mirá si es una feature opcional" +porque = "⚠ DESFASE DE VERSIÓN: AppStream 1.0.5 —la que pinea la receta— no la nombra en ningún meson (grep sobre el árbol entero). Sale de una expresión de nixpkgs más nueva" perfiles = ["escritorio-gnome"] piden = ["appstream"] @@ -2436,16 +2436,16 @@ perfiles = ["escritorio-kde"] piden = ["kinfocenter"] [candidato."xf86-input-evdev"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (plasma-desktop); mirá si es una feature opcional" +porque = "el otro driver de entrada de Xorg, misma familia que xf86-input-libinput: son drivers del SERVIDOR X, y la distro no corre uno (Xwayland no carga drivers xf86-input)" perfiles = ["escritorio-kde"] piden = ["plasma-desktop"] [candidato."xf86-input-libinput"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (plasma-desktop); mirá si es una feature opcional" +porque = "CMakeLists.txt:242 la busca por pkg-config (`xorg-libinput`) para encender HAVE_XORGLIBINPUT, que es el KCM de ratón/touchpad de X11. La distro es Wayland-only y plasma-desktop va con X11=OFF: la entrada la maneja kwin por libinput" perfiles = ["escritorio-kde"] piden = ["plasma-desktop"]