diff --git a/recipes/cairo-ctime-r.patch b/recipes/cairo-ctime-r.patch index 9abb7b05..212d4c5d 100644 --- a/recipes/cairo-ctime-r.patch +++ b/recipes/cairo-ctime-r.patch @@ -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 (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 + (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')