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>
49 lines
3.5 KiB
TOML
49 lines
3.5 KiB
TOML
# spidermonkey (mozjs 128 ESR) — el motor JavaScript de Mozilla. KEYSTONE del frente GNOME: gjs cuelga
|
|
# de él, y gnome-shell cuelga de gjs. Es de lo más DIFÍCIL que hay en cualquier distro.
|
|
#
|
|
# ⚠ PRIMER BORRADOR — NO va a sellar a la primera. mozjs sobre musl nunca compila de un saque; el
|
|
# sistema de build de Mozilla (mach/configure) NO es uno de los auto-detectados por el lab, así que las
|
|
# fases van A MANO y hay que ITERARLAS EN EL WORKER (ccx33 o mayor: el compile C++ come ~8GB+ y quiere
|
|
# swap; ccx23 va justo). Anclado al APKBUILD de mozjs128 de Alpine (misma libc musl). Decisiones:
|
|
# · Fuente = tarball del SOURCE de Firefox 128.14.0esr (mozjs se construye desde js/src de ese árbol).
|
|
# · clang (el rootfs trae LLVM 22); mozjs prefiere clang fuerte a gcc.
|
|
# · icu IN-TREE (--without-system-icu): evita casar versiones de un icu del sistema (una dep menos).
|
|
# · nspr y zlib del sistema (recetas nspr + zlib del corpus).
|
|
# · shared-js (libmozjs-128.so) — lo que gjs enlaza.
|
|
# Cosas que MUY probablemente haya que tocar al iterar: el nombre exacto del build dir/mach vs configure,
|
|
# --enable-release/--enable-hardening, flags de linker (lld), y RUST/CBINDGEN en PATH. Cuando selle en
|
|
# el worker, se congela el hash y se promueve.
|
|
name = "spidermonkey"
|
|
version = "128.14.0"
|
|
license = "MPL-2.0"
|
|
|
|
[source]
|
|
tarball = "https://ftp.mozilla.org/pub/firefox/releases/128.14.0esr/source/firefox-128.14.0esr.source.tar.xz"
|
|
sha256 = "93b9ef6229f41cb22ff109b95bbf61a78395a0fe4b870192eeca22947cb09a53"
|
|
strip_components = 1
|
|
|
|
[build]
|
|
compiler = "clang"
|
|
target = "x86_64-linux-musl"
|
|
link = "dynamic"
|
|
|
|
[build.phases]
|
|
# MOZBUILD_STATE_PATH: mach crea ahí su virtualenv de build. CADA fase es un bwrap aparte con
|
|
# `--tmpfs /tmp`, así que un venv en /tmp NO sobrevive de configure a compile ("bin/python: No such
|
|
# file or directory"). Lo anclamos a /src/.mozbuild (bind RW, persiste entre fases; es scratch, no
|
|
# entra a /out ⇒ no afecta el artefacto). MOZ_NOSPAM calla la telemetría. Va en las tres fases.
|
|
# Se construye en un obj-dir separado dentro de js/src (idioma de mozjs). CC/CXX=clang explícitos.
|
|
# AR=llvm-ar: mozjs con clang quiere la suite binutils de LLVM (llvm-ar/llvm-objdump/llvm-profdata).
|
|
# El rootfs las provee vía el paquete `llvm22` con symlinks en /usr/bin (bootstrap-devfs.sh); antes
|
|
# faltaban (sólo estaba `clang`) y configure abortaba "Cannot find ar/llvm-objdump".
|
|
# TRIPLE: mozjs exige que el --host de configure COINCIDA con el host que reporta rustc. El rustc del
|
|
# rootfs (Alpine) es `x86_64-alpine-linux-musl` (vendor `alpine`, no `pc` ni `unknown`); con cualquier
|
|
# otro, mozjs aborta ("rust compiler host ... not suitable for the configure host"). Fijamos ese triple
|
|
# exacto — clang lo acepta (vendor genérico) y así C-host == rust-host, que es lo que mozjs valida.
|
|
configure = "export MOZBUILD_STATE_PATH=/src/.mozbuild MOZ_NOSPAM=1 SHELL=/bin/sh PYTHON=python3 && cd js/src && mkdir -p obj && cd obj && CC=clang CXX=clang++ AR=llvm-ar ../configure --prefix=/usr --host=x86_64-alpine-linux-musl --target=x86_64-alpine-linux-musl --disable-debug --enable-optimize --enable-release --enable-hardening --disable-jemalloc --enable-shared-js --disable-tests --without-system-icu --with-system-nspr --with-system-zlib"
|
|
compile = "export MOZBUILD_STATE_PATH=/src/.mozbuild MOZ_NOSPAM=1 && cd js/src/obj && make -j\"$(nproc)\""
|
|
install = "export MOZBUILD_STATE_PATH=/src/.mozbuild MOZ_NOSPAM=1 && cd js/src/obj && make DESTDIR=/out install"
|
|
|
|
[deps]
|
|
build = ["nspr", "nasm", "cbindgen", "python3", "make", "zlib", "pkgconf"]
|