gioser

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…

⎇ main recipes/incoming-gnome/glib.toml TOML · 44 siq'ikuna · 2.7 KB Ñawpa willay ch'uya

licencias: campo `license` en la receta — de 0 a 228 de 1141, sin re-hashear nada 346cd5970 · sergio ·

1# glib 2.88.1 — VARIANTE DINÁMICA de la ISLA GNOME (SHADOW de recipes/glib.toml estática).
2#
3# Por qué existe: el shell de GNOME (gjs/gnome-shell) usa GObject-introspection en RUNTIME — un
4# typelib mapea cada tipo a una biblioteca COMPARTIDA que gjs `dlopen`ea. g-ir-scanner exige lo mismo
5# al BUILDear: `can't resolve libraries to shared libraries: glib-2.0` si glib es sólo `.a`. Ergo la
6# isla GNOME necesita glib como `.so` real (libglib/gobject/gio/gmodule-2.0.so.0 con SONAME).
7#
8# Por qué NO tocar recipes/glib.toml: la estática la consume el árbol entero (KDE, corpus). Cambiarla
9# re-hashearía cientos de sellados. En su lugar esta variante vive en la cola GNOME y, por el orden
10# del resolver (hermano incoming-gnome/ → padre recipes/), SOMBREA la corpus SÓLO para las recetas
11# GNOME; el resto del árbol sigue con la estática. Ver [[gnome-introspection-dinamica]].
12#
13# Deps internas (libffi/pcre2/zlib) estáticas: el .so las embebe (self-contained para ésas).
14# Runtime: el rootfs de la imagen GNOME necesitará el loader musl (ld-musl-x86_64.so.1) — paso de
15# ensamblado de imagen, no del build (el sandbox ya lo tiene).
16#
17# default_library=BOTH (no shared): la isla necesita AMBOS. El `.so` (con SONAME) es lo que
18# g-ir-scanner resuelve para la introspección y lo que gjs dlopea en runtime; el `.a` es para el
19# link ESTÁTICO INTERNO de los consumidores (el propio g-i compila binarios que hacen `-static
20# -lglib-2.0` — sin el `.a` zig falla "unable to find static system library glib-2.0"). Con ambos,
21# el consumidor estático encuentra el `.a` y el scanner encuentra el `.so`.
22name    = "glib"
23version = "2.88.1"
24license = "LGPL-2.1-or-later"
25
26[source]
27tarball = "https://download.gnome.org/sources/glib/2.88/glib-2.88.1.tar.xz"
28sha256  = "51ab804c56f6eab3e5045c774d1290ac5e4c923d4f9a3d8e33123bee45c1840e"
29
30[build]
31compiler = "zig-cc"
32target   = "x86_64-linux-musl"
33link     = "dynamic"
34
35[build.phases]
36# default_library=both ⇒ libglib-2.0.{a,so.0} &co. introspection=disabled a propósito: los typelibs
37# de GLib/GObject los produce gobject-introspection escaneando este .so (externo), no glib a sí misma
38# (evita el ciclo glib↔g-i en el bootstrap).
39configure = "PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release -Ddefault_library=both -Dtests=false -Dnls=disabled -Dlibmount=disabled -Dselinux=disabled -Dman-pages=disabled -Dintrospection=disabled -Dglib_debug=disabled -Dglib_assert=false -Dglib_checks=false"
40compile   = "PYTHONPATH=/usr/lib/python3.12/site-packages ninja -C output"
41install   = "PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson install -C output --no-rebuild"
42
43[deps]
44build = ["meson", "samurai", "python3", "pkgconf", "libffi", "pcre2", "zlib"]