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 1299Shell 92Rust 63Markdown 561634 Definitions

gnome isla: glib default_library=both (.a + .so)

g-i (link=static) compila binarios internos que hacen `-static -lglib-2.0`; con la
glib sólo-shared, zig falla "unable to find static system library glib-2.0" (no hay
.a). La isla necesita AMBOS: el .so para que g-ir-scanner resuelva la introspección
(y gjs lo dlopee en runtime), el .a para el link estático interno de los consumidores.
default_library=shared → both.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

b57ce69311ff2fd88da9ef1972b0477d7aab24c2 · by sergio · (3 months ago) · parent 319cfd83e · browse the tree at this commit

Semantic delta

No definition changed: this change is text, documentation or data.

2 files · +22 −10

diff --git a/recipes/incoming-gnome-onda1/glib.toml b/recipes/incoming-gnome-onda1/glib.toml
index 61ae4ea7..f300b261 100644
--- a/recipes/incoming-gnome-onda1/glib.toml
+++ b/recipes/incoming-gnome-onda1/glib.toml
@@ -10,9 +10,15 @@
 # del resolver (hermano incoming-gnome/ → padre recipes/), SOMBREA la corpus SÓLO para las recetas
 # GNOME; el resto del árbol sigue con la estática. Ver [[gnome-introspection-dinamica]].
 #
-# Deps internas (libffi/pcre2/zlib) siguen estáticas: el .so las embebe (self-contained para ésas).
+# Deps internas (libffi/pcre2/zlib) estáticas: el .so las embebe (self-contained para ésas).
 # Runtime: el rootfs de la imagen GNOME necesitará el loader musl (ld-musl-x86_64.so.1) — paso de
 # ensamblado de imagen, no del build (el sandbox ya lo tiene).
+#
+# default_library=BOTH (no shared): la isla necesita AMBOS. El `.so` (con SONAME) es lo que
+# g-ir-scanner resuelve para la introspección y lo que gjs dlopea en runtime; el `.a` es para el
+# link ESTÁTICO INTERNO de los consumidores (el propio g-i compila binarios que hacen `-static
+# -lglib-2.0` — sin el `.a` zig falla "unable to find static system library glib-2.0"). Con ambos,
+# el consumidor estático encuentra el `.a` y el scanner encuentra el `.so`.
 name    = "glib"
 version = "2.88.1"
 
@@ -26,10 +32,10 @@ target   = "x86_64-linux-musl"
 link     = "dynamic"
 
 [build.phases]
-# default_library=shared ⇒ libglib-2.0.so.0 &co. con SONAME (lo que g-ir-scanner resuelve).
-# introspection=disabled a propósito: los typelibs de GLib/GObject los produce gobject-introspection
-# escaneando este .so (externo), no glib a sí misma (evita el ciclo glib↔g-i en el bootstrap).
-configure = "PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release -Ddefault_library=shared -Dtests=false -Dnls=disabled -Dlibmount=disabled -Dselinux=disabled -Dman-pages=disabled -Dintrospection=disabled -Dglib_debug=disabled -Dglib_assert=false -Dglib_checks=false"
+# default_library=both ⇒ libglib-2.0.{a,so.0} &co. introspection=disabled a propósito: los typelibs
+# de GLib/GObject los produce gobject-introspection escaneando este .so (externo), no glib a sí misma
+# (evita el ciclo glib↔g-i en el bootstrap).
+configure = "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"
 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"
 
diff --git a/recipes/incoming-gnome/glib.toml b/recipes/incoming-gnome/glib.toml
index 61ae4ea7..f300b261 100644
--- a/recipes/incoming-gnome/glib.toml
+++ b/recipes/incoming-gnome/glib.toml
@@ -10,9 +10,15 @@
 # del resolver (hermano incoming-gnome/ → padre recipes/), SOMBREA la corpus SÓLO para las recetas
 # GNOME; el resto del árbol sigue con la estática. Ver [[gnome-introspection-dinamica]].
 #
-# Deps internas (libffi/pcre2/zlib) siguen estáticas: el .so las embebe (self-contained para ésas).
+# Deps internas (libffi/pcre2/zlib) estáticas: el .so las embebe (self-contained para ésas).
 # Runtime: el rootfs de la imagen GNOME necesitará el loader musl (ld-musl-x86_64.so.1) — paso de
 # ensamblado de imagen, no del build (el sandbox ya lo tiene).
+#
+# default_library=BOTH (no shared): la isla necesita AMBOS. El `.so` (con SONAME) es lo que
+# g-ir-scanner resuelve para la introspección y lo que gjs dlopea en runtime; el `.a` es para el
+# link ESTÁTICO INTERNO de los consumidores (el propio g-i compila binarios que hacen `-static
+# -lglib-2.0` — sin el `.a` zig falla "unable to find static system library glib-2.0"). Con ambos,
+# el consumidor estático encuentra el `.a` y el scanner encuentra el `.so`.
 name    = "glib"
 version = "2.88.1"
 
@@ -26,10 +32,10 @@ target   = "x86_64-linux-musl"
 link     = "dynamic"
 
 [build.phases]
-# default_library=shared ⇒ libglib-2.0.so.0 &co. con SONAME (lo que g-ir-scanner resuelve).
-# introspection=disabled a propósito: los typelibs de GLib/GObject los produce gobject-introspection
-# escaneando este .so (externo), no glib a sí misma (evita el ciclo glib↔g-i en el bootstrap).
-configure = "PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release -Ddefault_library=shared -Dtests=false -Dnls=disabled -Dlibmount=disabled -Dselinux=disabled -Dman-pages=disabled -Dintrospection=disabled -Dglib_debug=disabled -Dglib_assert=false -Dglib_checks=false"
+# default_library=both ⇒ libglib-2.0.{a,so.0} &co. introspection=disabled a propósito: los typelibs
+# de GLib/GObject los produce gobject-introspection escaneando este .so (externo), no glib a sí misma
+# (evita el ciclo glib↔g-i en el bootstrap).
+configure = "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"
 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"