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"]