From 5e4dd7ab9d9fe9dbddb0e532e85260b81f12d1f0 Mon Sep 17 00:00:00 2001 From: sergio Date: Mon, 27 Jul 2026 13:51:53 -0400 Subject: [PATCH] =?UTF-8?q?gnome=20onda=202:=20gjs=20inyecta=20el=20cierre?= =?UTF-8?q?=20est=C3=A1tico=20de=20cairo=20via=20cpp=5Flink=5Fargs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- recipes/incoming-gnome-onda2/gjs.toml | 12 +++++++----- recipes/incoming-gnome/gjs.toml | 12 +++++++----- 2 files changed, 14 insertions(+), 10 deletions(-) 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"