tawasuyu

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 1488Shell 182Rust 107Markdown 963619 Sutichaykuna

⎇ 5e4dd7ab9d9fe9dbddb0e532e85260b81f12d1f0 recipes/incoming-gnome/gjs.toml TOML · 47 siq'ikuna · 3.8 KB Ñawpa willay ch'uya

gnome onda 2: gjs inyecta el cierre estático de cairo via cpp_link_args 5e4dd7ab9 · sergio ·

1# gjs 1.84.2 — los bindings JavaScript de GNOME (GNOME 48). gnome-shell cuelga de gjs, y gjs cuelga de
2# spidermonkey (mozjs-128), que YA está sellado en este repo (recipes/incoming-gnome/spidermonkey.toml,
3# provee mozjs-128.pc). gjs 1.84 requiere mozjs 128 ✓ — coincide con el spidermonkey sellado.
4#
5# ⚠ PRIMER BORRADOR feature-minimal — NO garantiza sellar a la primera. Notas de diseño:
6#   · Build = meson (idioma GNOME, auto-detectado por el lab; calcado de gtk4/glib/libadwaita).
7#   · compiler = zig-cc (como todo el stack meson GNOME del corpus). gjs es cpp+c; zig lo cubre.
8#   · link = DYNAMIC (NO static como gtk4/glib): spidermonkey sólo provee libmozjs-128.so (shared-js);
9#     no hay .a de mozjs contra la que enlazar estáticamente, así que gjs enlaza la .so ⇒ dynamic.
10#   · Feature-minimal: sin instalar tests, sin profiler (evita la dep sysprof-capture), tests de
11#     DBus/GTK saltados, sin x11 (gjs no tiene backend x11 propio; cairo-xlib es `required: false`).
12#     readline SÍ (la receta readline existe y da la shell interactiva/depurador).
13name    = "gjs"
14version = "1.84.2"
15
16[source]
17tarball = "https://download.gnome.org/sources/gjs/1.84/gjs-1.84.2.tar.xz"
18sha256  = "35142edf345705636300291ec3a7d583f14969ff3fae0ff30f4a95b1e6740166"
19
20[build]
21compiler = "zig-cc"
22target   = "x86_64-linux-musl"
23link     = "dynamic"
24
25[build.phases]
26# -Dbsymbolic_functions=false: el linker zig/lld NO soporta -Bsymbolic-functions (meson.build:89 aborta).
27# cpp_link_args: cairo es dep OBLIGATORIA de gjs (no hay -Dcairo). gjs (dinámico) linkea cairo.a que
28# arrastra fontconfig.a→expat, freetype→libpng/zlib, pixman — cadena estática que meson NO pone en la
29# línea (sólo -lcairo) ⇒ 'undefined symbol: XML_GetCurrentLineNumber'. Las inyecto explícitas: son
30# libs NO-GObject ⇒ embeberlas estáticas NO da doble-estado (a diferencia de --prefer-static con glib,
31# que sí daría el SIGSEGV del keystone). Orden = cada lib resuelve símbolos de la anterior. Cuando
32# cairo sea isla dinámica (cierre C, #7) esto se limpia. Ver [[gnome-introspection-dinamica]].
33configure = "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 -Dcpp_link_args=-lfontconfig,-lfreetype,-lpixman-1,-lpng16,-lexpat,-lz -Dinstalled_tests=false -Dprofiler=disabled -Dskip_dbus_tests=true -Dskip_gtk_tests=true -Dreadline=enabled -Dc_args=-Wno-error=date-time"
34compile   = "PYTHONPATH=/usr/lib/python3.12/site-packages ninja -C output"
35install   = "PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson install -C output --no-rebuild"
36
37[deps]
38# spidermonkey → mozjs-128.pc (sellado); glib → glib-2.0/gobject-2.0/gio-2.0/gthread-2.0; cairo →
39# cairo + cairo-gobject; libffi, readline, pkgconf existen en el corpus. meson/samurai/python3 = tooling.
40# gobject-introspection: g-ir-scanner ⇒ typelib GjsPrivate + gobject-introspection-1.0.pc en link.
41# glib-introspected: gjs escanea GjsPrivate, que referencia GObject/GLib ⇒ el scan necesita los .gir
42# CORE (GObject-2.0.gir/GLib-2.0.gir) que SÓLO produce glib-introspected. hammer hidrata deps DIRECTAS,
43# no transitivas de g-i ⇒ hay que declararla aquí (misma lección del keystone [[gnome-introspection-dinamica]]).
44# Cierre .pc (pkgconf resuelve Requires.private de glib-2.0 y cairo, NO transitivo en hammer):
45# glib-2.0.pc → libpcre2-8; cairo.pc → freetype/fontconfig/pixman/libpng/expat/zlib. Sin declararlos,
46# `meson setup` aborta "Package 'libpcre2-8' required by 'glib-2.0' not found" (patrón .pc→[deps]).
47build = ["spidermonkey", "nspr", "glib", "glib-introspected", "cairo", "freetype", "fontconfig", "pixman", "libpng", "expat", "libffi", "readline", "ncurses", "gobject-introspection", "meson", "samurai", "python3", "py3-setuptools", "pkgconf", "pcre2", "zlib"]