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…

TOML 1483Shell 180Rust 107Markdown 963619 Definiciones

gnome isla: glib dinámica (shadow de la corpus) para destrabar introspección

El fork elegido: isla dinámica para GNOME. Piedra angular = glib como .so real,
porque g-ir-scanner exige "shared libraries" (el typelib mapea a una lib que gjs
dlopea en runtime) y la corpus es sólo libglib-2.0.a.

Variante link=dynamic (-Ddefault_library=shared) en la cola GNOME. NO toca
recipes/glib.toml (estática, la consume KDE/corpus entero — cambiarla re-hashea
cientos). Por el orden del resolver (hermano→padre) SOMBREA la corpus SÓLO para
recetas GNOME; el resto del árbol intacto. Deps internas (libffi/pcre2/zlib) siguen
estáticas embebidas en el .so. introspection=disabled (los typelibs los produce g-i
externamente, evita el ciclo glib↔g-i).

g-i re-hashea a 8c3e5dd1 (dep glib static→dynamic); prueba de fuego en worker.

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

319cfd83ecdc169deab1aff91e8f88611f6cf616 · por sergio · (hace 2 meses) · padre d4eb77df1 · ver el árbol en este commit

Delta semántico

Ninguna definición cambió: el cambio es de texto, documentación o datos.

2 archivos · +74 −0

diff --git a/recipes/incoming-gnome-onda1/glib.toml b/recipes/incoming-gnome-onda1/glib.toml
new file mode 100644
index 00000000..61ae4ea7
--- /dev/null
+++ b/recipes/incoming-gnome-onda1/glib.toml
@@ -0,0 +1,37 @@
+# glib 2.88.1 — VARIANTE DINÁMICA de la ISLA GNOME (SHADOW de recipes/glib.toml estática).
+#
+# Por qué existe: el shell de GNOME (gjs/gnome-shell) usa GObject-introspection en RUNTIME — un
+# typelib mapea cada tipo a una biblioteca COMPARTIDA que gjs `dlopen`ea. g-ir-scanner exige lo mismo
+# al BUILDear: `can't resolve libraries to shared libraries: glib-2.0` si glib es sólo `.a`. Ergo la
+# isla GNOME necesita glib como `.so` real (libglib/gobject/gio/gmodule-2.0.so.0 con SONAME).
+#
+# Por qué NO tocar recipes/glib.toml: la estática la consume el árbol entero (KDE, corpus). Cambiarla
+# re-hashearía cientos de sellados. En su lugar esta variante vive en la cola GNOME y, por el orden
+# 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).
+# 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).
+name    = "glib"
+version = "2.88.1"
+
+[source]
+tarball = "https://download.gnome.org/sources/glib/2.88/glib-2.88.1.tar.xz"
+sha256  = "51ab804c56f6eab3e5045c774d1290ac5e4c923d4f9a3d8e33123bee45c1840e"
+
+[build]
+compiler = "zig-cc"
+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"
+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]
+build = ["meson", "samurai", "python3", "pkgconf", "libffi", "pcre2", "zlib"]
diff --git a/recipes/incoming-gnome/glib.toml b/recipes/incoming-gnome/glib.toml
new file mode 100644
index 00000000..61ae4ea7
--- /dev/null
+++ b/recipes/incoming-gnome/glib.toml
@@ -0,0 +1,37 @@
+# glib 2.88.1 — VARIANTE DINÁMICA de la ISLA GNOME (SHADOW de recipes/glib.toml estática).
+#
+# Por qué existe: el shell de GNOME (gjs/gnome-shell) usa GObject-introspection en RUNTIME — un
+# typelib mapea cada tipo a una biblioteca COMPARTIDA que gjs `dlopen`ea. g-ir-scanner exige lo mismo
+# al BUILDear: `can't resolve libraries to shared libraries: glib-2.0` si glib es sólo `.a`. Ergo la
+# isla GNOME necesita glib como `.so` real (libglib/gobject/gio/gmodule-2.0.so.0 con SONAME).
+#
+# Por qué NO tocar recipes/glib.toml: la estática la consume el árbol entero (KDE, corpus). Cambiarla
+# re-hashearía cientos de sellados. En su lugar esta variante vive en la cola GNOME y, por el orden
+# 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).
+# 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).
+name    = "glib"
+version = "2.88.1"
+
+[source]
+tarball = "https://download.gnome.org/sources/glib/2.88/glib-2.88.1.tar.xz"
+sha256  = "51ab804c56f6eab3e5045c774d1290ac5e4c923d4f9a3d8e33123bee45c1840e"
+
+[build]
+compiler = "zig-cc"
+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"
+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]
+build = ["meson", "samurai", "python3", "pkgconf", "libffi", "pcre2", "zlib"]