From 893b126c31f23998561d50b36e1aebb498df7225 Mon Sep 17 00:00:00 2001 From: Sergio Date: Wed, 9 Sep 2026 17:04:16 +0000 Subject: [PATCH] =?UTF-8?q?triaje:=20de=20365=20candidatos=20quedan=20TRES?= =?UTF-8?q?=20pendientes=20=E2=80=94=20y=20ninguno=20es=20=C2=ABopcional?= =?UTF-8?q?=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cierran las 24 que quedaban de una vuelta. El barrido de la frontera queda así: 327 opcional, 25 provisto, 10 nix-ismo, 3 pendientes. Arrancó la jornada en 152 pendientes. ⚠ SÉPTIMO ALIAS, y resuelve el enigma que dejé abierto esta mañana. libmpc → mpc: nixpkgs llama `libmpc` a GNU MPC y `mpc` al cliente de MPD; acá GNU MPC se llama `mpc`. O sea que el «lo piden mpc y yambar» de libmpdclient no era un error del sembrador cruzando mal: es que los dos catálogos usan el MISMO nombre para paquetes DISTINTOS. Las dos puntas de esa confusión quedan cerradas. Van siete alias y cinco formas: puntuación, mayúsculas, prefijo `lib`, versión en el nombre, y ahora homonimia cruzada. Lo demás, cada uno con su prueba en la receta o en el fuente: libev cae por el mismo --enable-lib-only de nghttp2 que c-ares (configure.ac:230); graphite2 por -Dgraphite=disabled; libliftoff por -Dlibliftoff=disabled; libtasn1 por -Dtrust_module=disabled; libasyncns por -Dasyncns=disabled; inih por -DEXIV2_ENABLE_INIH=OFF contra un default ON; rdma-core por --disable-rdma. nanosvg y resvg caen juntas porque fuzzel VENDORIZA nanosvg (su receta ya lo decía) y fcft va con -Dsvg-backend=none. boost-build no hace falta porque la receta de boost es sólo cabeceras. validate-pkg-config no es una librería sino un setup hook de nixpkgs → nix-ismo. CAPACIDADES AUSENTES que quedan dichas: sin polkitd no corren las reglas .rules de JavaScript (duktape); no se regula el brillo de un monitor EXTERNO por DDC/CI (ddcutil); los PDF con tipografías CJK no incrustadas se ven mal (poppler-data); dolphin navega sin panel de metadatos ni etiquetas (baloo-widgets). ⚠ LOS TRES QUE NO FIRMO, y por qué. No son «opcional»: son huecos de RUNTIME que ninguna receta delata al construir, y decidirlos es elegir alcance de la distro, no triaje. Los tres con la medición hecha y escrita en su `porque`: gnome-keyring NINGÚN artefacto del store declara org.freedesktop.secrets (grep sobre el store entero), y el artefacto de kwallet trae sólo libKF6Wallet.so, sin kwalletd6. Los dos escritorios tienen el PROMPTER sellado y ninguno tiene el ALMACÉN glib-networking los usr/lib/gio/modules/ de los cuatro artefactos de glib están VACÍOS ⇒ GIO no tiene TLS, y libsoup 3 delega el TLS en GIO ⇒ HTTPS mudo en el stack GNOME xdg-desktop-portal-kde los únicos backends de portal sellados son el de cosmic y el de gnome; la cola kde no tiene ni receta de xdg-desktop-portal ⇒ en Plasma la captura de pantalla de obs-studio (linux-pipewire → portal ScreenCast) no tiene con quién hablar, mientras que en GNOME y COSMIC sí Los tres son el mismo patrón que ya nos costó una noche con las fuentes: una raíz que no resuelve queda `wanted` y NINGUNA métrica lo dice. Marcarlos `hueco` los mete como raíz en targets.toml y al drenaje; eso lo decide el usuario. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01LCt3ettR4Z7b6wPCBmbvEV --- docs/state/alias-triaje.txt | 1 + docs/state/frontera-triaje.toml | 101 ++++++++++++++++---------------- docs/state/nixismos-triaje.txt | 1 + 3 files changed, 53 insertions(+), 50 deletions(-) diff --git a/docs/state/alias-triaje.txt b/docs/state/alias-triaje.txt index 5740d0d0..8898c1cf 100644 --- a/docs/state/alias-triaje.txt +++ b/docs/state/alias-triaje.txt @@ -7,6 +7,7 @@ desktop-file-utils desktop-file-utils glad2 glad gmp-with-cxx gmp gusb libgusb +libmpc mpc libxcb-cursor xcb-util-cursor libxcb-image xcb-util-image libxcb-keysyms xcb-util-keysyms diff --git a/docs/state/frontera-triaje.toml b/docs/state/frontera-triaje.toml index ef762e84..08bd2536 100644 --- a/docs/state/frontera-triaje.toml +++ b/docs/state/frontera-triaje.toml @@ -161,9 +161,9 @@ perfiles = ["escritorio-kde"] piden = ["dolphin", "gwenview", "plasma-desktop", "plasma-workspace"] [candidato."baloo-widgets"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (dolphin); mirá si es una feature opcional" +porque = "dolphin la declara TYPE OPTIONAL (CMakeLists.txt:131-135) y su rama exige además KF6Baloo. Es el panel de metadatos y etiquetas; sin él dolphin navega igual" perfiles = ["escritorio-kde"] piden = ["dolphin"] @@ -189,9 +189,9 @@ perfiles = ["base", "cli", "escritorio-cosmic", "escritorio-gnome", "escritorio- piden = ["python3"] [candidato."boost-build"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (boost); mirá si es una feature opcional" +porque = "la receta de boost construye SÓLO cabeceras — su fase configure es un `true` y su [deps].build está vacío —, así que no hay nada que compilar y b2 no hace falta" perfiles = ["escritorio-kde"] piden = ["boost"] @@ -276,9 +276,9 @@ perfiles = ["escritorio-gnome", "escritorio-kde"] piden = ["libsecret", "modemmanager"] [candidato."ddcutil"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (powerdevil); mirá si es una feature opcional" +porque = "powerdevil la declara TYPE OPTIONAL (CMakeLists.txt:70-77) con su PURPOSE: «Set monitor settings over DDC/CI channel». Capacidad ausente: no se regula el brillo de un monitor EXTERNO por DDC/CI; el de un portátil va por sysfs" perfiles = ["escritorio-kde"] piden = ["powerdevil"] @@ -360,9 +360,9 @@ perfiles = ["escritorio-kde"] piden = ["xwayland"] [candidato."duktape"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (polkit); mirá si es una feature opcional" +porque = "la receta de polkit ya lo tenía escrito: -Dlibs-only=true deja fuera polkitd, y el bloque `if not libs_only` del meson es justo el que pide expat y duktape (el motor JS de las reglas). ⚠ Capacidad ausente que conviene tener dicha: sin polkitd no corren las reglas .rules de JavaScript" perfiles = ["escritorio-gnome", "escritorio-kde"] piden = ["polkit"] @@ -472,9 +472,9 @@ perfiles = ["escritorio-gnome"] piden = ["gnome-shell"] [candidato."getopt"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (libseccomp); mirá si es una feature opcional" +porque = "el `getopt` de nixpkgs es el BINARIO suelto de util-linux. Lo que libseccomp usa es getopt(3), que provee musl: no hay librería que traer" perfiles = ["escritorio-gnome"] piden = ["libseccomp"] @@ -511,7 +511,7 @@ piden = ["libplacebo"] [candidato."glib-networking"] veredicto = "pendiente" sugerencia = "opcional?" -porque = "lo pide una sola receta (evolution-data-server); mirá si es una feature opcional" +porque = "PENDIENTE A PROPÓSITO, no es 'opcional': es el back-end TLS de GIO y se carga como módulo, no se enlaza. MEDIDO: los directorios usr/lib/gio/modules/ de los CUATRO artefactos de glib del store están VACÍOS ⇒ GIO no tiene TLS, y libsoup 3 (que es quien habla HTTP en el stack GNOME) delega el TLS en GIO. Consecuencia: HTTPS mudo para eds y para todo lo que use libsoup. No hay receta de glib-networking ni de gnutls en el catálogo. Que la distro quiera o no HTTPS en el stack GNOME es decisión de diseño, no de triaje" perfiles = ["escritorio-gnome"] piden = ["evolution-data-server"] @@ -612,9 +612,9 @@ perfiles = ["escritorio-kde"] piden = ["plasma-workspace", "plasma5support"] [candidato."graphite2"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (harfbuzz); mirá si es una feature opcional" +porque = "harfbuzz va con -Dgraphite=disabled explícito: es el motor de tipografías Graphite (escrituras complejas de SIL), no el moldeado normal" perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"] piden = ["harfbuzz"] @@ -716,9 +716,9 @@ perfiles = ["escritorio-kde"] piden = ["sonnet"] [candidato."inih"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (exiv2); mirá si es una feature opcional" +porque = "exiv2 va con -DEXIV2_ENABLE_INIH=OFF explícito contra un default ON (CMakeLists.txt:38), y la receta lo documenta. Es el parser del fichero de configuración" perfiles = ["escritorio-kde"] piden = ["exiv2"] @@ -771,9 +771,9 @@ perfiles = ["escritorio-kde"] piden = ["gwenview"] [candidato."kimageformats"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (kscreen); mirá si es una feature opcional" +porque = "no aparece en el CMakeLists de kscreen: son PLUGINS de imagen de Qt que se cargan en runtime (avif, heif, psd…). Nada de esto se enlaza" perfiles = ["escritorio-kde"] piden = ["kscreen"] @@ -844,9 +844,9 @@ perfiles = ["escritorio-kde"] piden = ["kfilemetadata"] [candidato."libasyncns"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (pulseaudio); mirá si es una feature opcional" +porque = "pulseaudio va con -Dasyncns=disabled explícito, y además con -Ddaemon=false -Dclient=true: de pulseaudio se construye la librería cliente (para las apps que hablan su protocolo), no el servidor, que acá es PipeWire" perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"] piden = ["pulseaudio"] @@ -970,9 +970,9 @@ piden = ["kwin"] ausente = true # ya no aparece en el último barrido de la frontera [candidato."libev"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (nghttp2); mirá si es una feature opcional" +porque = "configure.ac:230 de nghttp2 pone request_libev=no DENTRO del bloque --enable-lib-only, que es lo que la receta pasa. Mismo mecanismo que c-ares" perfiles = ["escritorio-gnome"] piden = ["nghttp2"] @@ -1057,9 +1057,9 @@ perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritor piden = ["pipewire"] [candidato."libliftoff"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (wlroots); mirá si es una feature opcional" +porque = "wlroots va con -Dlibliftoff=disabled explícito: descarga la composición en los planos de hardware del KMS. Optimización, no función" perfiles = ["escritorio-sway"] piden = ["wlroots"] @@ -1085,9 +1085,10 @@ perfiles = ["base", "cli", "escritorio-sway"] piden = ["iproute2"] [candidato."libmpc"] -veredicto = "pendiente" +veredicto = "provisto" sugerencia = "opcional?" -porque = "lo pide una sola receta (kcalc); mirá si es una feature opcional" +provee = "mpc" +porque = "no falta, y cierra el enigma de libmpdclient: nixpkgs llama `libmpc` a GNU MPC y `mpc` al cliente de MPD; acá GNU MPC se llama `mpc` (recipes/mpc.toml, --with-gmp --with-mpfr) y ya figura en el [deps].build de kcalc junto a gmp y mpfr. Séptimo alias, quinta forma: el mismo nombre significa DOS paquetes distintos en los dos catálogos" perfiles = ["escritorio-kde"] piden = ["kcalc"] @@ -1271,9 +1272,9 @@ perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritor piden = ["glib"] [candidato."libtasn1"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (p11-kit); mirá si es una feature opcional" +porque = "p11-kit va con -Dtrust_module=disabled, que es el módulo que parsea certificados y lo único que pediría libtasn1" perfiles = ["escritorio-gnome"] piden = ["p11-kit"] @@ -1653,16 +1654,16 @@ perfiles = ["base", "cli", "escritorio-cosmic", "escritorio-gnome", "escritorio- piden = ["python3"] [candidato."mutest"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (graphene); mirá si es una feature opcional" +porque = "es el marco de tests de graphene y la receta va con -Dtests=false -Dinstalled_tests=false" perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-sway"] piden = ["graphene"] [candidato."nanosvg"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (fcft); mirá si es una feature opcional" +porque = "fcft va con -Dsvg-backend=none. Y donde SÍ se usa —fuzzel, -Dsvg-backend=nanosvg— va VENDORIZADO en el árbol, cosa que la receta de fuzzel ya documenta: por eso no aparece como dep" perfiles = ["escritorio-gnome", "escritorio-sway"] piden = ["fcft"] @@ -1810,9 +1811,9 @@ perfiles = ["escritorio-kde"] piden = ["plasma-desktop"] [candidato."plasma-systemmonitor"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (kinfocenter); mirá si es una feature opcional" +porque = "no aparece en el CMakeLists de kinfocenter: es una APP aparte que kinfocenter puede lanzar. El sembrador la hereda de la expresión de nixpkgs" perfiles = ["escritorio-kde"] piden = ["kinfocenter"] @@ -1839,16 +1840,16 @@ piden = ["kauth", "plasma-workspace"] ausente = true # ya no aparece en el último barrido de la frontera [candidato."pop-icon-theme"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (cosmic-icons); mirá si es una feature opcional" +porque = "es un tema de ICONOS: datos, no código, y cosmic-icons ya provee el suyo. Nada lo enlaza ni lo exige para construir" perfiles = ["escritorio-cosmic"] piden = ["cosmic-icons"] [candidato."poppler-data"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (poppler); mirá si es una feature opcional" +porque = "son las TABLAS de codificación CJK que poppler busca en runtime para PDFs con tipografías asiáticas sin incrustar. El build no las necesita. Capacidad ausente acotada: PDFs CJK sin fuentes incrustadas se ven mal" perfiles = ["escritorio-kde"] piden = ["poppler"] @@ -1881,9 +1882,9 @@ perfiles = ["escritorio-gnome", "escritorio-kde"] piden = ["evolution-data-server", "libei", "opencv"] [candidato."protobuf-c"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (libei); mirá si es una feature opcional" +porque = "libei 1.5.0 —la que pinea la receta— no nombra protobuf en NINGÚN fichero (grep sobre el árbol entero). Su generación de código va por jinja2, que sí está en [deps]" perfiles = ["escritorio-gnome"] piden = ["libei"] @@ -2019,9 +2020,9 @@ perfiles = ["escritorio-kde"] piden = ["qcoro"] [candidato."rdma-core"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (libpcap); mirá si es una feature opcional" +porque = "libpcap va con --disable-rdma explícito: es la captura sobre InfiniBand/RoCE" perfiles = ["escritorio-kde"] piden = ["libpcap"] @@ -2034,9 +2035,9 @@ piden = ["jq"] ausente = true # ya no aparece en el último barrido de la frontera [candidato."resvg"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (fuzzel); mirá si es una feature opcional" +porque = "fuzzel va con -Dsvg-backend=nanosvg, que es su default y viene vendorizado ⇒ no entra NINGUNA librería SVG externa, ni librsvg ni resvg" perfiles = ["escritorio-sway"] piden = ["fuzzel"] @@ -2273,9 +2274,9 @@ perfiles = ["base", "cli", "escritorio-sway"] piden = ["shadow"] [candidato."tcl"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (sqlite); mirá si es una feature opcional" +porque = "sólo lo pide el arnés de tests de sqlite y las ligaduras tclsqlite; la receta construye la amalgamación con ./configure --disable-shared --enable-static" perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-sway"] piden = ["sqlite"] @@ -2361,9 +2362,9 @@ perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritor piden = ["libdrm", "mesa", "pipewire"] [candidato."validate-pkg-config"] -veredicto = "pendiente" +veredicto = "nix-ismo" sugerencia = "opcional?" -porque = "lo pide una sola receta (jansson); mirá si es una feature opcional" +porque = "no es una librería: es un SETUP HOOK de nixpkgs (validatePkgConfig) que revisa los .pc al final del build. Andamiaje del otro sistema" perfiles = ["escritorio-kde"] piden = ["jansson"] @@ -2433,7 +2434,7 @@ piden = ["gitui"] [candidato."xdg-desktop-portal-kde"] veredicto = "pendiente" sugerencia = "opcional?" -porque = "lo pide una sola receta (kinfocenter); mirá si es una feature opcional" +porque = "PENDIENTE A PROPÓSITO, no es 'opcional': kinfocenter no lo necesita para construir, pero el candidato destapa un hueco de RUNTIME del perfil KDE. MEDIDO sobre el store: los únicos backends de portal sellados son org.freedesktop.impl.portal.desktop.cosmic y .desktop.gnome; no hay ninguno de KDE, y la cola kde ni siquiera tiene receta de xdg-desktop-portal. Consecuencia concreta: en Plasma, la captura de pantalla de obs-studio —que va por linux-pipewire → portal ScreenCast— no tiene con quién hablar, mientras que en GNOME y COSMIC sí (ese frente está cerrado). Decidirlo es elegir alcance del perfil KDE, no triaje" perfiles = ["escritorio-kde"] piden = ["kinfocenter"] @@ -2510,9 +2511,9 @@ piden = ["rsync"] ausente = true # ya no aparece en el último barrido de la frontera [candidato."yasm"] -veredicto = "pendiente" +veredicto = "opcional" sugerencia = "opcional?" -porque = "lo pide una sola receta (libass); mirá si es una feature opcional" +porque = "libass va con --enable-asm y su [deps].build declara `nasm`, que es el ensamblador que usa todo el corpus (ffmpeg incluido). El artefacto sella con eso: yasm es el ensamblador ALTERNATIVO, no uno que falte" perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"] piden = ["libass"] diff --git a/docs/state/nixismos-triaje.txt b/docs/state/nixismos-triaje.txt index d16af816..ca3e96ca 100644 --- a/docs/state/nixismos-triaje.txt +++ b/docs/state/nixismos-triaje.txt @@ -9,3 +9,4 @@ lzip python3-3.14.6-env python3-3.14.7-env remove-references-to +validate-pkg-config