Files
takana/recipes/incoming-cosmic/cosmic-bg.toml
T
sergioandClaude Opus 5 a6a9d59e4f licencias: 936 de 1141 (82%) — detección por evidencia, con sus dos imprecisiones declaradas
Esta mañana eran 0. Tras la tabla curada (228) y este paso, 936. Ninguna receta se
re-hasheó: verificado en 30 de las 708 tocadas, 30 hashes idénticos, 0 cambiados.

DE DÓNDE SALE EL DATO, Y POR QUÉ NO ES ADIVINAR. `scripts/licencias-detectar.sh` consulta
la API /repos/{o}/{r}/license de GitHub para las 673 recetas cuya fuente vive allí. Eso
devuelve el resultado de DETECTAR el fichero LICENSE que el repo tiene de verdad
(licensee), no una etiqueta escrita a mano en una web: es la misma evidencia que veríamos
abriendo el tarball, obtenida sin bajar 673 tarballs por un enlace de 8 Mbps. 610 con SPDX
definido; las 63 que GitHub marca NOASSERTION/other se DESCARTAN — un «no sé» de la fuente
se propaga como hueco, no se redondea a una licencia plausible.

Las familias no-GitHub van curadas por la URL DE FUENTE, que es la evidencia que el nombre
no da. Y ahí cometí el error simétrico al que este mismo fichero advertía: había puesto
`knighttime` entre las «herramientas Go» POR SU NOMBRE, y su tarball sale de
download.kde.org — es un Framework de KDE, LGPL. Descartar por nombre falla igual que
aceptar por nombre. Corregido en la cabecera.

LAS DOS IMPRECISIONES, contables con `licencias.sh --revisar` en vez de escondidas:

 1. SPDX OBSOLETOS Y AMBIGUOS (71 recetas). GitHub devuelve `GPL-3.0`, `LGPL-2.1`,
    `AGPL-3.0`… identificadores que SPDX declaró obsoletos PRECISAMENTE porque no
    distinguen `-only` de `-or-later`, y esa diferencia decide con qué se puede combinar el
    paquete. NO se normalizan a ciegas: mapear GPL-3.0 → GPL-3.0-or-later sería inventar el
    dato que falta. Quedan marcadas para resolver mirando el fuente.

 2. LICENCIAS DOBLES COLAPSADAS. La API devuelve UNA sola licencia y muchos proyectos Rust
    son «MIT OR Apache-2.0» (p.ej. `fd` quedó como Apache-2.0). No es falso —cumplir una de
    las opciones concedidas basta— pero es incompleto. Lo resuelve el cierre estructural:
    leer el campo `license` del Cargo.toml en la fase de fetch.

Y un fallo que habría escrito basura en silencio: `licencias-detectadas.tsv` tiene TRES
columnas (añade el owner/repo consultado, para poder auditar) y el sembrador leía dos, así
que la licencia se habría llevado pegado el slug — `license = "MIT<TAB>owner/repo"`, sin
que nada lo validara. Arreglado antes de sembrar.

Quedan 205 sin licencia y 71 por desambiguar.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-07 13:26:22 -04:00

55 lines
3.4 KiB
TOML

# cosmic-bg — el que pinta el fondo de pantalla. Es un cliente Wayland normal, uno de los que
# `cosmic-session` levanta después del compositor.
#
# ── POR QUÉ ES EL SEGUNDO CLIENTE QUE SE CONSTRUYE ──────────────────────────────────────────────
# Porque separa dos preguntas que en el resto de la suite vienen pegadas. cosmic-bg habla Wayland con
# `smithay-client-toolkit` —la implementación en Rust del protocolo, sin libwayland— y decodifica
# imágenes con crates puros (image, jxl-oxide, fast_image_resize). **No toca libcosmic ni iced.**
# Así que si el fondo pinta y el panel no, el problema es de la capa de UI, no del transporte.
#
# ── PERO NO ES RUST PURO, Y ESO SE MIDIÓ, NO SE SUPUSO ──────────────────────────────────────────
# El primer intento salió sin `[deps]` con el argumento «un cliente Wayland en Rust no toca C», y
# reventó en el `build.rs` de smithay-client-toolkit pidiendo `xkbcommon.pc`. **sctk ENLAZA
# libxkbcommon; no la dlopea** — el que la dlopea es winit, que es otra capa. La regla que sale:
# «habla el protocolo en Rust» dice cómo viaja el byte, no con qué se interpreta un teclado.
# Como el artefacto de libxkbcommon trae `.a` además de `.so`, el `link = "static"` sigue siendo
# verdad y no una etiqueta.
#
# El árbol es un workspace con `config/` como miembro (cosmic-bg-config), que es lo que leen los
# demás componentes para saber qué fondo hay puesto. Los defaults van a `/usr/share/cosmic/<APPID>/`
# con la misma convención de cosmic-config que en cosmic-comp: **el nombre del fichero ES la clave**.
name = "cosmic-bg"
version = "1.5.0"
license = "MPL-2.0"
[source]
tarball = "https://github.com/pop-os/cosmic-bg/archive/epoch-1.5.0/cosmic-bg-epoch-1.5.0.tar.gz"
sha256 = "12b30c60e15ac6c0f4b3eca8c37642145683e830833b429958222dfc395db177"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
# ── DINÁMICO, Y NO ES UNA PREFERENCIA ──────────────────────────────────────────────────────────
# `wayland-client` entra con la feature `dlopen`: no ENLAZA libwayland-client, la carga en runtime.
# Un binario musl ESTÁTICO no tiene dlopen funcional, así que el cliente arranca y muere con
# «The wayland library could not be loaded» — con el .so presente en el rootfs, que es lo que hace
# el diagnóstico confuso: no falta la librería, falta poder abrirla.
link = "dynamic"
# Un único target para `cargo rustc --` (ver el comentario de cosmic-comp): el workspace trae también
# la lib de config.
flags = ["--bin", "cosmic-bg"]
[build.phases]
install = '''
mkdir -p /out/usr/bin /out/usr/share/cosmic/com.system76.CosmicBackground
cp target/release/cosmic-bg /out/usr/bin/cosmic-bg
chmod 755 /out/usr/bin/cosmic-bg
cd data && find v1 -type f -exec install -Dm0644 {} /out/usr/share/cosmic/com.system76.CosmicBackground/{} \;
'''
[deps]
# dav1d: NO lo pide cosmic-bg sino la unificación de features de cargo — el crate `image`
# termina con AVIF prendida por otro consumidor del árbol aunque acá esté declarada sin
# defaults. Ver el comentario de recipes/incoming-cosmic/dav1d.toml.
build = ["libxkbcommon", "pkgconf", "dav1d"]