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 /
51 lines
4.2 KiB
TOML
51 lines
4.2 KiB
TOML
# gjs 1.84.2 — los bindings JavaScript de GNOME (GNOME 48). gnome-shell cuelga de gjs, y gjs cuelga de
|
|
# spidermonkey (mozjs-128), que YA está sellado en este repo (recipes/incoming-gnome/spidermonkey.toml,
|
|
# provee mozjs-128.pc). gjs 1.84 requiere mozjs 128 ✓ — coincide con el spidermonkey sellado.
|
|
#
|
|
# ⚠ PRIMER BORRADOR feature-minimal — NO garantiza sellar a la primera. Notas de diseño:
|
|
# · Build = meson (idioma GNOME, auto-detectado por el lab; calcado de gtk4/glib/libadwaita).
|
|
# · compiler = zig-cc (como todo el stack meson GNOME del corpus). gjs es cpp+c; zig lo cubre.
|
|
# · link = DYNAMIC (NO static como gtk4/glib): spidermonkey sólo provee libmozjs-128.so (shared-js);
|
|
# no hay .a de mozjs contra la que enlazar estáticamente, así que gjs enlaza la .so ⇒ dynamic.
|
|
# · Feature-minimal: sin instalar tests, sin profiler (evita la dep sysprof-capture), tests de
|
|
# DBus/GTK saltados, sin x11 (gjs no tiene backend x11 propio; cairo-xlib es `required: false`).
|
|
# readline SÍ (la receta readline existe y da la shell interactiva/depurador).
|
|
name = "gjs"
|
|
version = "1.84.2"
|
|
license = "MIT AND LGPL-2.0-or-later"
|
|
|
|
[source]
|
|
tarball = "https://download.gnome.org/sources/gjs/1.84/gjs-1.84.2.tar.xz"
|
|
sha256 = "35142edf345705636300291ec3a7d583f14969ff3fae0ff30f4a95b1e6740166"
|
|
|
|
[build]
|
|
compiler = "zig-cc"
|
|
target = "x86_64-linux-musl"
|
|
link = "dynamic"
|
|
|
|
[build.phases]
|
|
# -Dbsymbolic_functions=false: el linker zig/lld NO soporta -Bsymbolic-functions (meson.build:89 aborta).
|
|
# BLOQUEADO en el link por cairo: cairo es dep OBLIGATORIA (no hay -Dcairo) y el cairo estático arrastra
|
|
# fontconfig.a→expat, freetype→png/z, pixman ⇒ 'undefined symbol: XML_GetCurrentLineNumber'. cpp_link_args
|
|
# global rompe el sanity-check de meson. Fix real = cairo isla DINÁMICA (cierre C #7): entonces gjs linkea
|
|
# libcairo.so con NEEDED libfontconfig.so y la cadena resuelve al cargar. Ver [[gnome-introspection-dinamica]].
|
|
# sed: gjs incluye INCONDICIONALMENTE el subproyecto gobject-introspection-tests (Regress/WarnLib,
|
|
# con 'cairo=true') + subdirs installed-tests/test. Sus g-ir-scanner piden cairo-1.0.gir, que nuestro
|
|
# g-i (cairo=disabled) no instala ⇒ "Couldn't find include 'cairo-1.0.gir'". Son SÓLO fixtures de test;
|
|
# los removemos (gi_tests no se usa fuera del bloque). Deja la libgjs + GjsPrivate typelib, que es el hito.
|
|
configure = "sed -i \"/gi_tests = subproject('gobject-introspection-tests'/,/install_dir=@0@/d; /subdir('installed-tests')/d; /subdir('test')/d\" meson.build; PKG_CONFIG_PATH=/usr/lib/pkgconfig PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release --wrap-mode=nodownload -Dbsymbolic_functions=false -Dinstalled_tests=false -Dprofiler=disabled -Dskip_dbus_tests=true -Dskip_gtk_tests=true -Dreadline=disabled -Dc_args=-Wno-error=date-time"
|
|
compile = "PYTHONPATH=/usr/lib/python3.12/site-packages ninja -C output"
|
|
install = "PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson install -C output --no-rebuild"
|
|
|
|
[deps]
|
|
# spidermonkey → mozjs-128.pc (sellado); glib → glib-2.0/gobject-2.0/gio-2.0/gthread-2.0; cairo →
|
|
# cairo + cairo-gobject; libffi, readline, pkgconf existen en el corpus. meson/samurai/python3 = tooling.
|
|
# gobject-introspection: g-ir-scanner ⇒ typelib GjsPrivate + gobject-introspection-1.0.pc en link.
|
|
# glib-introspected: gjs escanea GjsPrivate, que referencia GObject/GLib ⇒ el scan necesita los .gir
|
|
# CORE (GObject-2.0.gir/GLib-2.0.gir) que SÓLO produce glib-introspected. takana hidrata deps DIRECTAS,
|
|
# no transitivas de g-i ⇒ hay que declararla aquí (misma lección del keystone [[gnome-introspection-dinamica]]).
|
|
# cairo-shared (+ su cierre -shared) = cairo DINÁMICO: gjs linkea libcairo.so y la cadena resuelve por
|
|
# NEEDED (no undefined XML_GetCurrentLineNumber). glib-2.0.pc → libpcre2-8 (pcre2 canónico da el .pc).
|
|
# pixman canónico ya es dinámico. expat canónico (--with-pic, embebido en el cierre).
|
|
build = ["spidermonkey", "nspr", "glib", "glib-introspected", "cairo-shared", "freetype-shared", "fontconfig-shared", "pixman", "libpng-shared", "zlib-shared", "expat", "libffi", "readline", "ncurses", "gobject-introspection", "meson", "samurai", "python3", "py3-setuptools", "pkgconf", "pcre2"]
|