Etapa G (GUI): cairo — preserva cairo-script-interpreter.pc (fix de regresión)
El patch anterior desactivaba el subdir cairo-script ENTERO para esquivar el link de pixman de los ejecutables csi-*, pero eso quitaba libcairoscript + cairo-script-interpreter.pc, que los demos GTK (gtk4-hello/adwaita-hello/sourceview-hello/hammer-edit) piden por pkg-config. Ahora el subdir se construye (librería estática + .pc) y solo los EJECUTABLES csi-* se envuelven en if false. cairo-trace queda saltado (nada pide su .pc). Verificado: cairo-script-interpreter.pc presente en el artefacto sellado. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+29
-20
@@ -1,16 +1,16 @@
|
||||
cairo bajo zig-cc/musl: dos parches para poder construir la librería en la granja.
|
||||
cairo bajo zig-cc/musl: parches para construir la librería + su cairo-script-interpreter.pc en la granja.
|
||||
|
||||
(1) meson.build — el loop `foreach name : check_funcs` corre `cc.has_function('ctime_r')` SIN
|
||||
prefix de header ⇒ meson genera un prototipo desnudo `char ctime_r();` que bajo zig-cc y gcc
|
||||
sobre musl choca con el builtin y el probe FALLA. Entonces cairo-ps-surface.c:105
|
||||
(`#ifndef HAVE_CTIME_R`) define un fallback `static char *ctime_r(...)` que colisiona con la
|
||||
declaración no-static de <time.h> (presente porque el build define _GNU_SOURCE) ⇒ error duro.
|
||||
musl SIEMPRE provee ctime_r; forzamos el define tras el loop (pasar _GNU_SOURCE en c_args NO
|
||||
alcanza: el probe es de prototipo desnudo, ignora el header).
|
||||
(1) meson.build — el loop `foreach name : check_funcs` corre `cc.has_function('ctime_r')` SIN prefix
|
||||
de header ⇒ prototipo desnudo que bajo zig-cc y gcc sobre musl choca con el builtin y el probe FALLA.
|
||||
Entonces cairo-ps-surface.c:105 (`#ifndef HAVE_CTIME_R`) define un fallback static que colisiona con
|
||||
<time.h> (presente por _GNU_SOURCE) ⇒ error duro. musl SIEMPRE provee ctime_r; forzamos el define.
|
||||
|
||||
(2) util/meson.build — los ejecutables util (csi-* del intérprete cairo-script, cairo-trace) no
|
||||
linkean libpixman-1.a bajo la estrategia `no_fallback` de zig-cc. Son herramientas de dev, no la
|
||||
librería que pango/gtk4 consumen. Saltamos esos subdirs; libcairo.a se construye e instala igual.
|
||||
(2) util/meson.build — cairo-trace: sus ejecutables no linkean libpixman-1.a bajo la estrategia
|
||||
`no_fallback` de zig-cc; nada aguas abajo pide cairo-trace ⇒ se salta entero.
|
||||
|
||||
(3) util/cairo-script/meson.build — el subdir cairo-script SÍ se construye (la librería libcairoscript
|
||||
y su `cairo-script-interpreter.pc` las piden los demos GTK), pero los EJECUTABLES csi-* fallan el mismo
|
||||
link de pixman ⇒ se envuelven en `if false`. Así queda la .pc sin los exe.
|
||||
|
||||
diff -Naur a/meson.build b/meson.build
|
||||
--- a/meson.build
|
||||
@@ -28,17 +28,26 @@ diff -Naur a/meson.build b/meson.build
|
||||
diff -Naur a/util/meson.build b/util/meson.build
|
||||
--- a/util/meson.build
|
||||
+++ b/util/meson.build
|
||||
@@ -7,10 +7,10 @@
|
||||
endif
|
||||
|
||||
-if conf.get('CAIRO_HAS_INTERPRETER', 0) == 1
|
||||
+if false # hammer: saltar ejecutables csi-* (interprete); link de pixman falla bajo zig no_fallback
|
||||
subdir('cairo-script')
|
||||
else
|
||||
libcairoscript_dep = dependency('', required: false)
|
||||
@@ -13,4 +13,4 @@
|
||||
endif
|
||||
|
||||
-if conf.get('CAIRO_HAS_TRACE', 0) == 1
|
||||
+if false # hammer: saltar cairo-trace (mismo link de pixman bajo zig)
|
||||
+if false # hammer: saltar cairo-trace (sus exe no linkean pixman bajo zig; nada pide su .pc)
|
||||
subdir('cairo-trace')
|
||||
diff -Naur a/util/cairo-script/meson.build b/util/cairo-script/meson.build
|
||||
--- a/util/cairo-script/meson.build
|
||||
+++ b/util/cairo-script/meson.build
|
||||
@@ -48,3 +48,6 @@
|
||||
meson.override_dependency('cairo-script-interpreter', libcairoscript_dep)
|
||||
|
||||
+# hammer: los ejecutables csi-* no linkean libpixman-1.a bajo zig no_fallback; la libreria
|
||||
+# libcairoscript y su cairo-script-interpreter.pc SI (los demos GTK las piden). Saltar solo los exe.
|
||||
+if false
|
||||
csi_replay_exe = executable('csi-replay', csi_replay_sources,
|
||||
@@ -64,4 +64,5 @@
|
||||
)
|
||||
endif
|
||||
+endif
|
||||
|
||||
install_headers(cairoscript_interpreter_headers, subdir: 'cairo')
|
||||
</content>
|
||||
|
||||
Reference in New Issue
Block a user