Siete recetas decían «lo vigila `scripts/audit-needed.sh`» y ese script ya no
existe: lo borré yo mismo en 02facebe, bien borrado, porque duplicaba a
`scripts/vigia-sonames.py` — que además ya estaba en el repo y ahora corre en el
latido. Pero las referencias quedaron, escritas por mí unas horas antes.
Es exactamente la etiqueta que se lee como el hecho, y en mi propia letra: un
comentario que afirma que existe un guardián manda a quien dude de una dep de
runtime a correr un script que no está. En el mejor caso pierde diez minutos; en
el peor concluye que no hay con qué comprobarlo.
Ahora apuntan a `vigia-sonames.py` y a `docs/state/sonames.txt`, que es el
fichero que el latido regenera y donde se ve si algo empeora entre cosechas.
Ningún ArtifactHash se mueve: los siete comentarios caen fuera de campos
hasheados. Verificado uno por uno antes y después, incluido
firefox-instrumentado, que tiene un build en vuelo y se habría invalidado.
Lo levantó hammer-99 desde el frente atuq. `recipes/atuq.toml` NO se toca: su
mención es una nota histórica ya corregida por ellos («…y NO audit-needed.sh»),
y mi primer grep casi la «arregla» por no leerla.
Y la advertencia que traían vale para cualquiera con pruebas de runtime: si el
runner monta `.dev-fs/alpine` debajo, `libstdc++.so.6` se resuelve contra el LAB
y la prueba es ciega. Comprobado que la mía NO lo estaba: el rootfs hidratado
trae el del corpus (20.850.968 bytes) y no el del lab (2.804.104), y el bwrap de
la prueba nunca montó .dev-fs.
58 lines
4.2 KiB
TOML
58 lines
4.2 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]
|
|
# ⚠ DEP DE EJECUCIÓN, NO DE BUILD — Y NO ES DECORACIÓN (2026-09-06).
|
|
# Este artefacto declara `NEEDED libstdc++.so.6` / `libgcc_s.so.1`, y hasta hoy NADIE en el corpus
|
|
# las proveía: sólo existían en `.dev-fs/alpine`, o sea en el LAB. El binario sellaba, REPRODUCÍA
|
|
# bit a bit, pasaba todos los guardianes… y no arrancaba fuera del lab. Se descubrió corriendo
|
|
# `atuq` bajo un sway headless, no leyendo el grafo.
|
|
# `runtime` NO entra en el ArtifactHash (igual que `license`), así que declararlo NO re-hashea:
|
|
# lo que cambia es la CLAUSURA, que es lo que se hidrata en la imagen. Lo vigila
|
|
# `scripts/vigia-sonames.py`, que corre en el latido y deja `docs/state/sonames.txt`.
|
|
runtime = ["gcc-libs"]
|
|
build = ["nspr", "nasm", "cbindgen", "python3", "make", "zlib", "pkgconf"]
|