Files
takana/recipes/wlr-randr.toml
T
SergioandClaude Opus 5 33f1384742 wlr-randr: --prefer-static, o pkg-config devolvia la .so de wayland
El `-lwayland-client` que salia de pkg-config resolvia a libwayland-client.so.0
y `link = "static"` era mentira (audit 2026-08-31). `--prefer-static` hace que
meson pida `pkg-config --static` y prefiera los .a; el artefacto de wayland
trae libwayland-client.a, asi que hay con que.

De paso saca el .so de la linea de enlace, que es lo que hacia que el wrapper
del lab tirara el `-static` inyectado (`sandbox.rs:597`) — misma raiz que htop.

Control: NEEDED=0 en todos los ejecutables ELF, lista de ficheros intacta.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ACUcwo9mZsE5ocYVE9npih
2026-08-31 14:54:59 +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 hammer 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"]