From 5fe6e7e3c931f280a4108196544a4efa2e98ed72 Mon Sep 17 00:00:00 2001 From: sergio Date: Mon, 27 Jul 2026 14:03:16 -0400 Subject: [PATCH] gnome onda 2: cairo-shared usa la fuente GitLab + cairo-ctime-r.patch MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit cairo-shared murió 'Nonexistent build file boilerplate/meson.build': el release de cairographics.org strippea boilerplate/; el canónico usa el archive de GitLab (git tree completo) + el patch HAVE_CTIME_R. Alineo la fuente al canónico. Co-Authored-By: Claude Opus 4.8 --- .../incoming-gnome-onda2/cairo-ctime-r.patch | 53 +++++++++++++++++++ .../incoming-gnome-onda2/cairo-shared.toml | 8 ++- recipes/incoming-gnome/cairo-ctime-r.patch | 53 +++++++++++++++++++ recipes/incoming-gnome/cairo-shared.toml | 8 ++- 4 files changed, 118 insertions(+), 4 deletions(-) create mode 100644 recipes/incoming-gnome-onda2/cairo-ctime-r.patch create mode 100644 recipes/incoming-gnome/cairo-ctime-r.patch diff --git a/recipes/incoming-gnome-onda2/cairo-ctime-r.patch b/recipes/incoming-gnome-onda2/cairo-ctime-r.patch new file mode 100644 index 00000000..212d4c5d --- /dev/null +++ b/recipes/incoming-gnome-onda2/cairo-ctime-r.patch @@ -0,0 +1,53 @@ +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 ⇒ 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 — 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 ++++ b/meson.build +@@ -708,4 +708,9 @@ + endif + endforeach + ++# hammer: has_function('ctime_r') sin prefix falla bajo zig/gcc+musl (prototipo desnudo choca ++# con el builtin); musl SIEMPRE provee ctime_r => forzar y evitar el fallback static de ++# cairo-ps-surface.c:105 que colisiona con la declaracion no-static de . ++conf.set('HAVE_CTIME_R', 1) ++ + conf.set('HAVE_STRNDUP', cc.has_function('strndup', prefix : '#include ')) +diff -Naur a/util/meson.build b/util/meson.build +--- a/util/meson.build ++++ b/util/meson.build +@@ -13,4 +13,4 @@ + endif + +-if conf.get('CAIRO_HAS_TRACE', 0) == 1 ++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') + diff --git a/recipes/incoming-gnome-onda2/cairo-shared.toml b/recipes/incoming-gnome-onda2/cairo-shared.toml index 9b10f4bd..b284dc17 100644 --- a/recipes/incoming-gnome-onda2/cairo-shared.toml +++ b/recipes/incoming-gnome-onda2/cairo-shared.toml @@ -12,9 +12,13 @@ name = "cairo-shared" version = "1.18.4" +# MISMA fuente que el canónico: el archive de GitLab incluye boilerplate/ (el release de cairographics +# lo strippea ⇒ 'Nonexistent build file boilerplate/meson.build'). + el patch HAVE_CTIME_R (probe +# has_function de meson falla bajo zig/musl). [source] -tarball = "https://cairographics.org/releases/cairo-1.18.4.tar.xz" -sha256 = "445ed8208a6e4823de1226a74ca319d3600e83f6369f99b14265006599c32ccb" +tarball = "https://gitlab.freedesktop.org/cairo/cairo/-/archive/1.18.4/cairo-1.18.4.tar.bz2" +sha256 = "6d9281e786fd289d382324d4588d59973a36911e1865b40e64f9ec39936ceba8" +patches = ["cairo-ctime-r.patch"] [build] compiler = "zig-cc" diff --git a/recipes/incoming-gnome/cairo-ctime-r.patch b/recipes/incoming-gnome/cairo-ctime-r.patch new file mode 100644 index 00000000..212d4c5d --- /dev/null +++ b/recipes/incoming-gnome/cairo-ctime-r.patch @@ -0,0 +1,53 @@ +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 ⇒ 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 — 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 ++++ b/meson.build +@@ -708,4 +708,9 @@ + endif + endforeach + ++# hammer: has_function('ctime_r') sin prefix falla bajo zig/gcc+musl (prototipo desnudo choca ++# con el builtin); musl SIEMPRE provee ctime_r => forzar y evitar el fallback static de ++# cairo-ps-surface.c:105 que colisiona con la declaracion no-static de . ++conf.set('HAVE_CTIME_R', 1) ++ + conf.set('HAVE_STRNDUP', cc.has_function('strndup', prefix : '#include ')) +diff -Naur a/util/meson.build b/util/meson.build +--- a/util/meson.build ++++ b/util/meson.build +@@ -13,4 +13,4 @@ + endif + +-if conf.get('CAIRO_HAS_TRACE', 0) == 1 ++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') + diff --git a/recipes/incoming-gnome/cairo-shared.toml b/recipes/incoming-gnome/cairo-shared.toml index 9b10f4bd..b284dc17 100644 --- a/recipes/incoming-gnome/cairo-shared.toml +++ b/recipes/incoming-gnome/cairo-shared.toml @@ -12,9 +12,13 @@ name = "cairo-shared" version = "1.18.4" +# MISMA fuente que el canónico: el archive de GitLab incluye boilerplate/ (el release de cairographics +# lo strippea ⇒ 'Nonexistent build file boilerplate/meson.build'). + el patch HAVE_CTIME_R (probe +# has_function de meson falla bajo zig/musl). [source] -tarball = "https://cairographics.org/releases/cairo-1.18.4.tar.xz" -sha256 = "445ed8208a6e4823de1226a74ca319d3600e83f6369f99b14265006599c32ccb" +tarball = "https://gitlab.freedesktop.org/cairo/cairo/-/archive/1.18.4/cairo-1.18.4.tar.bz2" +sha256 = "6d9281e786fd289d382324d4588d59973a36911e1865b40e64f9ec39936ceba8" +patches = ["cairo-ctime-r.patch"] [build] compiler = "zig-cc"