Commit Graph
133 Commits
Author SHA1 Message Date
sergio 0f2f9ec2ee estado: cosecha granja 2026-08-03T18:20:16Z — avance del árbol KDE 2026-08-03 14:20:16 -04:00
sergio 0639675e4d estado: cosecha granja 2026-08-03T17:49:18Z — avance del árbol KDE 2026-08-03 13:49:18 -04:00
sergioandClaude Opus 5 570fd3747e 🧮 cosmic: trazarle la yupana — el frente existía en el store y el ábaco no lo veía
Faltaba la mitad del método.  SÍ cruzaba incoming-cosmic (lo usé
antes de tocar libdisplay-info, pipewire y glib), pero la campaña no estaba en el
KHIPU: build-state.py sólo conocía --kde y --gnome, y targets.toml no declaraba
perfil.

Y eso no era cosmético. Antes de este commit,  decía
21 dependientes transitivos y dos imágenes; ahora dice 31 y TRES —
escritorio-cosmic entre ellas, con incoming-cosmic=10 en el reparto por cola. O
sea que el próximo que tocara libinput, libudev-zero o mesa habría MEDIDO DE
MENOS, que es exactamente el punto ciego que la metodología existe para cerrar.

Tres piezas:
- build-state.py --cosmic (y su build-state-cosmic.json).
- perfil.escritorio-cosmic en targets.toml, con las raíces que cosmic-session
  levanta MÁS los datos que ningún [deps] alcanza (iconos, xkb, fuentes, bash,
  dbus). Primera medición: 54/61 listo, faltan 7.
- el LATIDO lo regenera, por la misma razón por la que se le agregó GNOME en su
  momento: un frente que el cron no regenera envejece en silencio, y un grafo
  viejo miente con la misma cara que uno fresco.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-03 13:44:18 -04:00
sergio 590da1ea1a estado: cosecha granja 2026-08-03T17:18:53Z — avance del árbol KDE 2026-08-03 13:18:53 -04:00
sergio 7e2d4cd1cd estado: cosecha granja 2026-08-03T15:48:15Z — avance del árbol KDE 2026-08-03 11:48:15 -04:00
sergio 6dfe8e7fad estado: cosecha granja 2026-08-03T15:17:54Z — avance del árbol KDE 2026-08-03 11:17:54 -04:00
sergio 2d604d5641 estado: cosecha granja 2026-08-03T14:47:35Z — avance del árbol KDE 2026-08-03 10:47:35 -04:00
sergio e4b6c0f127 estado: cosecha granja 2026-07-30T23:51:17Z — avance del árbol KDE 2026-07-30 19:51:18 -04:00
sergio 7190cc48a3 estado: cosecha granja 2026-07-30T23:20:59Z — avance del árbol KDE 2026-07-30 19:20:59 -04:00
sergio 845e842579 estado: cosecha granja 2026-07-30T21:04:12Z — avance del árbol KDE 2026-07-30 17:04:12 -04:00
sergio 4fe0f0f9ea estado: cosecha granja 2026-07-30T20:33:59Z — avance del árbol KDE 2026-07-30 16:33:59 -04:00
sergio 1e5313a412 estado: cosecha granja 2026-07-30T17:02:59Z — avance del árbol KDE 2026-07-30 13:03:00 -04:00
sergio 05ad4f5540 estado: cosecha granja 2026-07-30T11:30:56Z — avance del árbol KDE 2026-07-30 07:30:56 -04:00
sergioandClaude Opus 5 17b86cf85e estado: deuda del corpus CERRADA — base, cli y mirada al 100%
sealed  765 → 768        debt  3 → 0        never  2 (los dos con bloqueo documentado)
  base    50/51 → 51/51    cli   73/74 → 74/74    escritorio-mirada  29/31 → 31/31

Cierre de la deuda que yo mismo abrí al parchear libudev-zero (una hoja del cierre de las
CINCO imágenes): reconstruidas `usbutils` (b3:245c718b — depende de libudev por pkg-config),
`mirada-compositor` (b3:c906e244) y `mirada-greeter` (b3:c7dfcf09).

Ojo con la aritmética, que casi me confunde: `yupana radio libudev-zero` dice 58 dependientes
transitivos y build-state sólo veía 3 en deuda. No es contradicción — **build-state cubre el
catálogo canónico `recipes/`, no las colas `incoming-*`**, y 47 de esos 58 están en
incoming-kde. Los 8 de incoming-gnome ya se habían reconstruido ayer.

Los dos `never` NO son trabajo pendiente disfrazado; los dos tienen bloqueo real y ya escrito:

- **dwarves**: su cmake no halla libdw. La receta ya lo documentaba y el build lo confirmó
  palabra por palabra («Could NOT find libdw include dir / library»): `elfutils.toml`
  empaqueta sólo LIBELF —lo que kbuild necesita— y es INTOCABLE porque es build-dep de los
  kernels sellados. La salida es una receta hermana `elfutils-libdw`, que en musl arrastra
  shims de argp/fts/obstack. Campaña propia, no un arreglo.
- **llimphi-counter**: es una PLANTILLA, no un paquete. Su commit es `000…0`, un placeholder
  que nunca se llenó. Gasté un build en descubrirlo, así que ahora la receta lo dice en la
  primera línea: ` ESTO ES UNA PLANTILLA, NO UN PAQUETE. NO INTENTES CONSTRUIRLA.` El estado
  `never` del grafo era técnicamente cierto y semánticamente engañoso.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-30 07:10:36 -04:00
sergio ccb13a075a estado: cosecha granja 2026-07-30T10:29:46Z — avance del árbol KDE 2026-07-30 06:29:46 -04:00
sergio 04569d9972 estado: cosecha granja 2026-07-30T07:58:56Z — avance del árbol KDE 2026-07-30 03:58:56 -04:00
sergio 03ad0f0581 estado: cosecha granja 2026-07-30T02:56:59Z — avance del árbol KDE 2026-07-29 22:56:59 -04:00
sergio 5ca11de820 estado: cosecha granja 2026-07-30T02:26:40Z — avance del árbol KDE 2026-07-29 22:26:40 -04:00
sergio c8bb73bae6 estado: cosecha granja 2026-07-30T01:56:27Z — avance del árbol KDE 2026-07-29 21:56:27 -04:00
sergio db58125b5f estado: cosecha granja 2026-07-30T01:26:10Z — avance del árbol KDE 2026-07-29 21:26:10 -04:00
sergio ce0c44217e estado: cosecha granja 2026-07-30T00:55:55Z — avance del árbol KDE 2026-07-29 20:55:55 -04:00
sergio d57fb8c5c7 estado: cosecha granja 2026-07-30T00:25:06Z — avance del árbol KDE 2026-07-29 20:25:06 -04:00
sergio d250d57c2b estado: cosecha granja 2026-07-29T23:54:54Z — avance del árbol KDE 2026-07-29 19:54:54 -04:00
sergio 579107b6db estado: cosecha granja 2026-07-29T23:24:42Z — avance del árbol KDE 2026-07-29 19:24:42 -04:00
sergio df43352786 estado: cosecha granja 2026-07-29T22:54:32Z — avance del árbol KDE 2026-07-29 18:54:32 -04:00
sergio 330850182b estado: cosecha granja 2026-07-29T22:24:15Z — avance del árbol KDE 2026-07-29 18:24:15 -04:00
sergio 517c1bb4ff estado: cosecha granja 2026-07-29T19:32:09Z — avance del árbol KDE 2026-07-29 15:32:09 -04:00
sergio f70c4a2339 estado: cosecha granja 2026-07-29T19:02:00Z — avance del árbol KDE 2026-07-29 15:02:00 -04:00
sergio 7642b4fbbc estado: cosecha granja 2026-07-29T18:31:51Z — avance del árbol KDE 2026-07-29 14:31:51 -04:00
sergio 0a76ead129 estado: cosecha granja 2026-07-29T18:01:41Z — avance del árbol KDE 2026-07-29 14:01:41 -04:00
sergio e73d205f4a estado: cosecha granja 2026-07-29T17:00:53Z — avance del árbol KDE 2026-07-29 13:00:53 -04:00
sergio 94400009a9 estado: cosecha granja 2026-07-29T16:30:43Z — avance del árbol KDE 2026-07-29 12:30:43 -04:00
sergio ac04990af1 estado: cosecha granja 2026-07-29T16:00:29Z — avance del árbol KDE 2026-07-29 12:00:29 -04:00
sergio b29bdbb346 estado: cosecha granja 2026-07-29T15:30:17Z — avance del árbol KDE 2026-07-29 11:30:17 -04:00
sergio 609fabdb76 estado: cosecha granja 2026-07-29T15:00:05Z — avance del árbol KDE 2026-07-29 11:00:05 -04:00
sergio 61bd5a5844 estado: cosecha granja 2026-07-29T11:00:10Z — avance del árbol KDE 2026-07-29 07:00:10 -04:00
sergio fc627eb8a7 estado: cosecha granja 2026-07-29T10:30:35Z — avance del árbol KDE 2026-07-29 06:30:36 -04:00
sergio fed6130199 estado: cosecha granja 2026-07-29T01:00:04Z — avance del árbol KDE 2026-07-28 21:00:04 -04:00
sergioandClaude Opus 5 50a934966b estado: regenerar grafo tras la cima de GNOME (13 recetas nuevas)
El grafo cierra y el topo-sort da OK con las 13 recetas de la cadena
eds/nss/pulseaudio incorporadas.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-28 20:47:30 -04:00
sergio 94f311177b estado: cosecha granja 2026-07-29T00:38:41Z — avance del árbol KDE 2026-07-28 20:38:41 -04:00
sergio 5779cceae7 estado: cosecha granja 2026-07-29T00:08:28Z — avance del árbol KDE 2026-07-28 20:08:28 -04:00
sergio f07163aba0 estado: cosecha granja 2026-07-28T12:00:04Z — avance del árbol KDE 2026-07-28 08:00:04 -04:00
sergioandClaude Opus 5 9f9f2303b4 gnome onda 3: MUTTER SELLADO (b3:50c37a83) — cae el muro de logind
El compositor construye: /usr/bin/mutter + gdctl, libmutter-*.so, los typelibs Clutter-16 y
Cogl-16, y libmutter-16.pc — que es exactamente lo que gnome-shell enlaza e importa.

LO QUE DESTRABÓ TODO: libelogind (b3:a6058906), receta nueva sobre `arje-sdlogin-compat`, un
crate que escribí en tawasuyu para esto. arje-logind-compat ya publicaba el estado de sesión
en /run/systemd/{sessions,users,seats}; faltaba la librería C que lo LEYERA, porque la API
sd-login no es cliente D-Bus: lee esos ficheros. mutter probó libsystemd (no), después
libelogind (sí) y siguió de largo. No es un stub: lee estado real que el daemon publica.

Después del muro aparecieron cinco cosas más, todas resueltas y ninguna de fondo:
  udev-pc (b3:69e2d418)   mutter pide DOS pkg-config: `libudev` (lo da libudev-zero) y `udev`
                          (metadata: udevdir). Receta aparte y no agregado a libudev-zero
                          porque `yupana radio` daba 51 SELLADOS cayendo a deuda en las cinco
                          imágenes. Un .pc de 4 líneas no justifica medio catálogo.
  libxcvt (b3:ab8ede67)   mutter corre `cvt` en build-time para generar meta-default-modes.h.
                          El app/cvt clásico vive en xorg.freedesktop.org, que desde acá no
                          responde (probé x.org, kernel.org y Lysator). libxcvt es la
                          extracción moderna del mismo código, está en el pool de Debian y no
                          arrastra nada de X11.
  -Dbash_completion=false y el sed de subdir('doc/man') (pedía rst2man).
  py3-setuptools          el distutils del g-ir-scanner, mismo precedente que polkit y gjs.
  cierre C dinámico       freetype/fontconfig/cairo/libpng/zlib/libjpeg/libtiff pasan a sus
                          variantes -shared: mutter ya es .so y las estáticas canónicas no
                          entran («relocation R_X86_64_32 … recompile with -fPIC»). Mismas
                          variantes que usa gtk4.

Y gsettings-desktop-schemas pasa a introspection=true + isla dinámica: su gir GDesktopEnums
entra en el de Meta, y sin él el scanner cortaba en el ÚLTIMO target (721/722). Es exactamente
el caso que el comentario de esa receta dejaba previsto («si mutter/gjs lo pidieran vía
typelib, se re-activa»). Costo medido: 1 sellado (gnome-desktop), reconstruido acá mismo.

PENDIENTE: la receta apunta al commit de gitea que todavía NO está pusheado (ver el informe).
El artefacto ya es el correcto — la URL no entra al ArtifactHash, sólo el commit, así que
construir desde el clon local dio el MISMO hash que dará desde gitea.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-28 07:54:09 -04:00
sergio 67bd7b169e estado: cosecha granja 2026-07-28T11:39:12Z — avance del árbol KDE 2026-07-28 07:39:12 -04:00
sergio ea1dc77ff9 estado: cosecha granja 2026-07-28T11:09:02Z — avance del árbol KDE 2026-07-28 07:09:02 -04:00
sergioandClaude Opus 5 a79cc8d1ab gnome onda 3: gcr SELLADO (b3:698096b0) + p11-kit + las variantes shared de libgcrypt/libgpg-error
Tercera de la cima. gnome-shell la exige por gcr-4 (meson.build:74) y su JS importa gi://Gcr
(js/ui/components/keyring.js) ⇒ tenía que ser .so con typelib, no había opción estática.

Cadena nueva: p11-kit (b3:8dbec390) → gcr. p11-kit va con -Dtrust_module=disabled, que es lo
único que arrastraba libtasn1: una receta menos.

EL NUDO REAL fue el PIC, otra vez. libgcrypt y libgpg-error del corpus son estáticas SIN PIC
(y libgcrypt además está afinada para binarios -all-static -no-pie, con la advertencia escrita
de que el flag va en compile e install pero nunca en configure). Meterlas en un .so da
«relocation R_X86_64_32 ... recompile with -fPIC».

NO se tocaron las canónicas: `yupana radio` dio 5 sellados cayendo a deuda en base/cli, y
mostró además que existe OTRA libgpg-error en incoming-kde con 39 dependientes — justo el
tipo de colisión que el radio existe para ver. Se hicieron variantes -shared en la cola, que
es el idioma que este frente ya tiene (zlib-shared, cairo-shared, freetype-shared…).

libgcrypt-shared compiló con ZIG-CC, no gcc como la canónica: evidencia de que esa receta puede
migrar cuando le toque el turno de matar-gcc. Necesitó -fno-sanitize=undefined (el runtime UBSan
que inyecta zig deja __ubsan_handle_* sin definir en el .so), remedio ya documentado en zlib-shared.

Otros dos apagados de gcr, cada uno ahorrando una receta: -Dssh_agent=false (libsecret sólo la
pide el agente ssh) y -Dgpg_path fijo (gcr sólo quiere la RUTA de gpg para hornearla, no ejecuta
nada). Y el sed de subdir('po'): el msgfmt de gettext-tiny ABORTA con SIGABRT en po/ar.po. Es la
segunda vez que ese msgfmt marca el límite; si hay una tercera, conviene autorar el gettext de GNU.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-28 06:54:14 -04:00
sergioandClaude Opus 5 92977572a1 gnome onda 3: at-spi2-core SELLADO (b3:33f4a891) y retira el atk suelto que iba a chocar
Segunda de la cima. Da atk.pc, atk-bridge-2.0.pc y atspi-2.pc + los typelibs Atk-1.0 y
Atspi-2.0. gnome-shell la exige por atk-bridge-2.0 (meson.build:71).

El choque que atk.toml anticipaba se confirmó: el tarball de at-spi2-core trae `atk/` adentro
e instala su propio atk-1.0. Dos recetas con el mismo .pc se pisan en el sandbox, y NO era
hipotético: el cierre de gnome-shell contiene a las dos, porque mutter es dep suya. Se retira
atk.toml y at-spi2-core queda como único proveedor — que es lo que hace upstream desde 2.51.90.

Medido antes de tocar, con `yupana radio atk`: 1 dependiente directo (mutter), 0 sellados que
caigan a deuda. mutter repuntado a at-spi2-core llega EXACTAMENTE al mismo muro de logind, sin
ninguno nuevo.

DBus-1.0.gir lo pedía el scanner y ya lo provee gi-foreign-girs (no hizo falta receta nueva).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-28 06:39:34 -04:00
sergio 4e9d564b66 estado: cosecha granja 2026-07-28T10:38:53Z — avance del árbol KDE 2026-07-28 06:38:53 -04:00
sergioandClaude Opus 5 7de2ebd030 gnome onda 3: polkit SELLADO (b3:27d93b4c) — sólo librerías, el demonio ya lo pone arje
Primera de la cima. Da polkit-agent-1.pc (lo que gnome-shell enlaza en C) y los typelibs
Polkit-1.0 + PolkitAgent-1.0 (lo que su JS importa: gi://Polkit aparece en polkitAgent.js,
endSessionDialog.js, status/thunderbolt.js y environment.js — verificado, no supuesto).

-Dlibs-only=true y acá la opción SÍ recorta, al revés que en colord: el bloque `if not
libs_only` (:145-159) es justo el que pide expat, duktape y threads. Y no es un recorte a
desgana — la Semilla de arje ya trae compat-polkit implementando el servicio D-Bus; construir
polkitd sería competirle, no completarlo.

-Dsession_tracking=ConsoleKit no es preferencia por ConsoleKit: es la ÚNICA de las tres que no
exige una C-ABI de logind (logind→libsystemd, elogind→libelogind), y son LAS MISMAS funciones
sd-login que traban a mutter (sd_uid_get_display, sd_pidfd_get_session). Con libs-only ese
camino queda inerte. Cuando exista el shim, vuelve a `logind`.

-Dauthfw=shadow (no hay linux-pam). Isla dinámica, como manda la regla del registro único de
GType. Las 3 deps de tooling que faltaban salieron de precedentes ya escritos del frente:
gettext-tiny (msgfmt), py3-setuptools (distutils de g-ir-scanner) y glib-introspected
(Gio-2.0.gir para el scanner).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-28 06:36:01 -04:00
sergio 8262e97722 estado: cosecha granja 2026-07-28T01:35:57Z — avance del árbol KDE 2026-07-27 21:35:57 -04:00