Files
Sergio e852f48491 takana etapa 5a: los comentarios de las 741 recetas
Barrido de TEXTO puro: 1427 líneas de comentario TOML. Cero ArtifactHash
movidos, y eso está MEDIDO, no deducido: hasheé las 741 antes y después y los
ficheros de hashes son idénticos byte a byte (723 con hash real + 18 que ya no
hasheaban de antes).

El guardián valió la pena: el primer barrido, filtrando por 'la línea empieza
con #', movió el hash de helix, lsof y steam-runtime-sniper. La causa es que una
fase se escribe como compile = <triple> ... <triple> y sus comentarios de SHELL
también empiezan con #, pero viven dentro del VALOR — y las fases sí entran en
hash_inputs. El barrido ahora calcula los rangos de las cadenas multilínea de
TOML y no entra ahí.

Quedan intactos a propósito: .hammer-zig-cc y .hammer-cargo-vendor (literales
dentro de fases), hammerd, hammer-recover y toda ruta que empiece por /
2026-09-09 19:23:26 +00:00

73 lines
4.2 KiB
TOML

# wlr-randr 0.5.0 — el `xrandr` de wlroots: lista y configura salidas hablando
# `wlr-output-management-unstable-v1`.
#
# Entra a takana con un rol acotado y explícito: es el **testigo ajeno** de que
# mirada sirve ese protocolo de verdad. La paridad cosmic no se demuestra con un
# cliente nuestro —eso probaría que nos entendemos con nosotros mismos—, se
# demuestra con la herramienta que el resto del mundo usa. Por eso se instala
# aunque el camino soberano (`mirada-ctl output` y el panel de pata) sea el que
# el usuario va a usar todos los días.
#
# Lo que hoy NO puede hacer, y conviene saberlo antes de acusar al paquete: en
# mirada `apply`/`test` de `zwlr_output_configuration_v1` contestan `failed`
# (`mirada-compositor/src/output_management.rs`), así que wlr-randr **lista**
# correctamente y **no cambia nada**. Cuando mirada implemente el apply, esta
# misma receta pasa a ser también la prueba de que el apply anda.
#
# Por lo mismo NO entran `kanshi` ni `way-displays`: no son herramientas sino una
# función —perfiles de salida por hotplug— y su lugar es adentro de mirada, que
# ya tiene el estado. Instalarlos hoy además sería inútil: rechazaría cada
# perfil que intentaran aplicar.
#
# C puro sobre meson. Trae el XML del protocolo adentro (`protocol/`), así que no
# necesita wayland-protocols — sólo `wayland-client` y `wayland-scanner`, que
# vienen de la receta `wayland`. `scdoc` es opcional (la man page); se omite.
name = "wlr-randr"
version = "0.5.0"
license = "MIT"
[source]
# Tarball de RELEASE, no el `-/archive/` autogenerado de GitLab: los archivos
# generados no son estables byte a byte en el tiempo y un sha256 pinneado sobre
# ellos se rompe solo. Mismo criterio que `recipes/wayland-protocols.toml`.
tarball = "https://gitlab.freedesktop.org/emersion/wlr-randr/-/releases/v0.5.0/downloads/wlr-randr-0.5.0.tar.gz"
sha256 = "a64b6eb296d1c75af098fa2d229f9aaf3ceae45eeff24056930bd4bc613c6a5e"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "static"
[build.phases]
# `-Dwerror=false`: el proyecto compila con `werror=true` por defecto y una
# versión de compilador distinta de la que usan sus CI convierte cualquier aviso
# nuevo en un fallo de build. La receta no está para pelearse con eso.
# `--prefer-static`: sin esto el `-lwayland-client` que sale de pkg-config resolvía a la
# `libwayland-client.so.0` —y `link = "static"` era mentira (audit 2026-08-31)—. La perilla hace
# que meson pida `pkg-config --static` y prefiera los `.a`; el artefacto de `wayland` trae
# `libwayland-client.a`, así que hay con qué. Además saca el `.so` de la línea de enlace, que es lo
# que hacía que el wrapper del lab tirara el `-static` inyectado (`sandbox.rs:597`).
configure = "meson setup output --prefix=/usr --buildtype=release -Dwerror=false --prefer-static"
compile = "ninja -C output"
install = "DESTDIR=/out ninja -C output install"
[deps]
# `python3` es OBLIGATORIO aunque no lo parezca: **meson es un script de Python**, no un binario.
# Sin él la fase configure muere con `exec: line 2: python3: not found` y **exit 127** — que se lee
# como «meson no está» cuando meson SÍ está (su artefacto se hidrata bien; lo que falta es el
# intérprete). Diagnosticado en el worker el 2026-08-07: gtk4, libadwaita y gtksourceview construyen
# ahí sin problema **precisamente porque sí declaran python3**, y ésta no lo hacía.
# ⇒ Regla: toda receta con meson en `[deps].build` necesita python3 al lado.
# El arreglo es hidratar la dep, NO instalar python3 en el rootfs del worker: engordar el rootfs
# haría que el build dependa de qué hay en una máquina concreta, que es justo lo que rompe la
# reproducibilidad (ver la nota `rootfs-laptop-worker-divergen`).
#
# `libffi` NO lo usa wlr-randr: lo exige `wayland-client.pc` en su línea `Requires`, y pkgconf
# resuelve el grafo de .pc COMPLETO antes de dar un cflag. O sea que falta la dep de la dep. Es el
# patrón ya documentado `.pc Requires` → `[deps].build` (nota `etapa-g-gui-chain-boundary`): el
# síntoma es «Package 'libffi', required by 'wayland-client', not found», que se lee como un problema
# de wayland y no lo es.
build = ["meson", "samurai", "python3", "pkgconf", "wayland", "libffi"]
run = ["wayland"]