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>
This commit is contained in:
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user