gnome onda 2: gjs inyecta el cierre estático de cairo via cpp_link_args
cairo es dep obligatoria (sin -Dcairo). El link de gjs sólo pone -lcairo, no la cadena transitiva estática (fontconfig->expat, freetype->png/z, pixman) => undefined XML_GetCurrentLineNumber. Inyecto -lfontconfig,-lfreetype,-lpixman-1, -lpng16,-lexpat,-lz (todas no-GObject: sin doble-estado, a diferencia de --prefer-static con glib). Se limpia cuando cairo sea isla dinamica (#7). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Delta semántico
Ninguna definición cambió: el cambio es de texto, documentación o datos.
2 archivos · +14 −10
diff --git a/recipes/incoming-gnome-onda2/gjs.toml b/recipes/incoming-gnome-onda2/gjs.toml
index f3a4e15a..ef5b3d78 100644
--- a/recipes/incoming-gnome-onda2/gjs.toml
+++ b/recipes/incoming-gnome-onda2/gjs.toml
@@ -24,11 +24,13 @@ link = "dynamic"
[build.phases]
# -Dbsymbolic_functions=false: el linker zig/lld NO soporta -Bsymbolic-functions (meson.build:89 aborta).
-# -Dcairo=disabled: gjs (dinámico) linkea cairo.a→fontconfig.a→expat, pero meson no arrastra la cadena
-# transitiva estática ⇒ 'undefined symbol: XML_GetCurrentLineNumber'. Es la deuda del cierre C [[#7]].
-# Desactivado para SELLAR el hito (motor JS + introspección GjsPrivate); los bindings cairo (que
-# gnome-shell necesita) vuelven cuando cairo sea isla dinámica. Ver [[gnome-introspection-dinamica]].
-configure = "PKG_CONFIG_PATH=/usr/lib/pkgconfig PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release --wrap-mode=nodownload -Dbsymbolic_functions=false -Dcairo=disabled -Dinstalled_tests=false -Dprofiler=disabled -Dskip_dbus_tests=true -Dskip_gtk_tests=true -Dreadline=enabled -Dc_args=-Wno-error=date-time"
+# cpp_link_args: cairo es dep OBLIGATORIA de gjs (no hay -Dcairo). gjs (dinámico) linkea cairo.a que
+# arrastra fontconfig.a→expat, freetype→libpng/zlib, pixman — cadena estática que meson NO pone en la
+# línea (sólo -lcairo) ⇒ 'undefined symbol: XML_GetCurrentLineNumber'. Las inyecto explícitas: son
+# libs NO-GObject ⇒ embeberlas estáticas NO da doble-estado (a diferencia de --prefer-static con glib,
+# que sí daría el SIGSEGV del keystone). Orden = cada lib resuelve símbolos de la anterior. Cuando
+# cairo sea isla dinámica (cierre C, #7) esto se limpia. Ver [[gnome-introspection-dinamica]].
+configure = "PKG_CONFIG_PATH=/usr/lib/pkgconfig PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release --wrap-mode=nodownload -Dbsymbolic_functions=false -Dcpp_link_args=-lfontconfig,-lfreetype,-lpixman-1,-lpng16,-lexpat,-lz -Dinstalled_tests=false -Dprofiler=disabled -Dskip_dbus_tests=true -Dskip_gtk_tests=true -Dreadline=enabled -Dc_args=-Wno-error=date-time"
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/gjs.toml b/recipes/incoming-gnome/gjs.toml
index f3a4e15a..ef5b3d78 100644
--- a/recipes/incoming-gnome/gjs.toml
+++ b/recipes/incoming-gnome/gjs.toml
@@ -24,11 +24,13 @@ link = "dynamic"
[build.phases]
# -Dbsymbolic_functions=false: el linker zig/lld NO soporta -Bsymbolic-functions (meson.build:89 aborta).
-# -Dcairo=disabled: gjs (dinámico) linkea cairo.a→fontconfig.a→expat, pero meson no arrastra la cadena
-# transitiva estática ⇒ 'undefined symbol: XML_GetCurrentLineNumber'. Es la deuda del cierre C [[#7]].
-# Desactivado para SELLAR el hito (motor JS + introspección GjsPrivate); los bindings cairo (que
-# gnome-shell necesita) vuelven cuando cairo sea isla dinámica. Ver [[gnome-introspection-dinamica]].
-configure = "PKG_CONFIG_PATH=/usr/lib/pkgconfig PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release --wrap-mode=nodownload -Dbsymbolic_functions=false -Dcairo=disabled -Dinstalled_tests=false -Dprofiler=disabled -Dskip_dbus_tests=true -Dskip_gtk_tests=true -Dreadline=enabled -Dc_args=-Wno-error=date-time"
+# cpp_link_args: cairo es dep OBLIGATORIA de gjs (no hay -Dcairo). gjs (dinámico) linkea cairo.a que
+# arrastra fontconfig.a→expat, freetype→libpng/zlib, pixman — cadena estática que meson NO pone en la
+# línea (sólo -lcairo) ⇒ 'undefined symbol: XML_GetCurrentLineNumber'. Las inyecto explícitas: son
+# libs NO-GObject ⇒ embeberlas estáticas NO da doble-estado (a diferencia de --prefer-static con glib,
+# que sí daría el SIGSEGV del keystone). Orden = cada lib resuelve símbolos de la anterior. Cuando
+# cairo sea isla dinámica (cierre C, #7) esto se limpia. Ver [[gnome-introspection-dinamica]].
+configure = "PKG_CONFIG_PATH=/usr/lib/pkgconfig PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release --wrap-mode=nodownload -Dbsymbolic_functions=false -Dcpp_link_args=-lfontconfig,-lfreetype,-lpixman-1,-lpng16,-lexpat,-lz -Dinstalled_tests=false -Dprofiler=disabled -Dskip_dbus_tests=true -Dskip_gtk_tests=true -Dreadline=enabled -Dc_args=-Wno-error=date-time"
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"