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