From 98932ec4770dda57eeb1d9f077f304722e37d254 Mon Sep 17 00:00:00 2001 From: sergio Date: Tue, 28 Jul 2026 19:54:15 -0400 Subject: [PATCH] =?UTF-8?q?gnome=20onda=203:=20libical=20SELLADO=20(b3:ada?= =?UTF-8?q?6e05f)=20=E2=80=94=20tercera=20pieza=20de=20la=20cadena=20eds?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit libecal-2.0 (lo que gnome-shell exige en meson.build:72) está construida sobre libical-glib. Salió a la primera; leer el CMakeLists real ahorró otra receta: LibXML → la pide ICAL_GLIB, pero SÓLO la enlaza ical-glib-src-generator, un ejecutable de BUILD que parsea el XML de la API. No entra en ningún .so ⇒ la libxml2.a canónica (no-PIC) sirve y NO hace falta libxml2-shared. Segunda receta que se ahorra por leer el build real. Perl → DURA (:193, sin perilla), y salió gratis: ya estaba promovida desde que el barrido de harkaq en la granja la destapó como único irreducible. ICU → opcional (RSCALE), encendida porque icu4c ya estaba paga. -DUSE_BUILTIN_TZDATA=ON no es cosmético: por defecto libical lee la tzdata del SISTEMA, o sea que el artefacto quedaría atado al /usr/share/zoneinfo del constructor y se movería con cada actualización del host. Con la del tarball el artefacto es autocontenido y entra entero al ArtifactHash. El CMakeLists avisa "(Careful)" porque esa tabla envejece; es el precio correcto — un store direccionable por contenido no puede depender del reloj del anfitrión. Verificado: ICal-3.0.typelib + ICalGLib-3.0.typelib, cierre en sellados + libc.so. Queda UNA receta para la cima: evolution-data-server. Co-Authored-By: Claude Opus 5 (1M context) --- recipes/incoming-gnome/libical.toml | 52 +++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 recipes/incoming-gnome/libical.toml diff --git a/recipes/incoming-gnome/libical.toml b/recipes/incoming-gnome/libical.toml new file mode 100644 index 00000000..0ec04c8f --- /dev/null +++ b/recipes/incoming-gnome/libical.toml @@ -0,0 +1,52 @@ +# libical 3.0.20 — implementación de iCalendar (RFC 5545). Es la dep dura de evolution-data-server: +# libecal-2.0 está construida sobre libical-glib, y libecal-2.0 es lo que gnome-shell exige en +# meson.build:72 para el calendario del panel superior. Cadena: gnome-shell → eds → libical. +# +# LISTA CONTRA EL CMakeLists.txt REAL (3.0.20), no de memoria: +# Perl :193 find_package(Perl REQUIRED) — DURA, sin perilla. Genera código a partir de las +# tablas de propiedades/valores. Sale gratis: perl ya se promovió a recipes/perl.toml +# cuando el barrido de harkaq en la granja lo destapó como el único irreducible. +# LibXML :485 — la pide ICAL_GLIB, pero SÓLO la enlaza `ical-glib-src-generator` +# (src/libical-glib/CMakeLists.txt:12), un ejecutable de BUILD que parsea el XML de la +# API para generar las fuentes. No entra en ningún .so ⇒ la libxml2.a canónica (no-PIC) +# sirve tal cual y NO hace falta una variante libxml2-shared. Es la segunda vez en esta +# cadena que leer el build real ahorra una receta. +# ICU :214 COMPONENTS uc i18n data — opcional, da soporte RSCALE (calendarios no +# gregorianos). Se enciende porque icu4c ya está sellada por KDE: sale gratis. +# BerkeleyDB :256 — opcional, apagada. Es un backend de almacenamiento heredado que eds no usa. +# +# Cada apagado y lo que compra: +# -DWITH_CXX_BINDINGS=OFF → viene en True por defecto (:136). Encenderlo mete el runtime C++ en el +# artefacto, que es exactamente la deuda irreducible que harkaq destapó en +# brotli y que se cerró con -static-libstdc++. No hay consumidor: eds es C. +# -DUSE_BUILTIN_TZDATA=ON → clave para la reproducibilidad. Por defecto libical lee la tzdata del +# SISTEMA (/usr/share/zoneinfo), o sea que el artefacto quedaría atado al +# sysroot del constructor y cambiaría con cada actualización de zoneinfo del +# host. Con la tzdata del propio tarball el artefacto es autocontenido y entra +# entero al ArtifactHash. El CMakeLists avisa "(Careful)" porque esa tabla +# envejece con el tarball; es el precio correcto acá — un store direccionable +# por contenido no puede depender del reloj del anfitrión. +# -DICAL_BUILD_DOCS=OFF -DLIBICAL_BUILD_TESTING=OFF → ambas vienen en True por defecto (:421, :677). +# -DICAL_GLIB_VAPI=OFF → Vala; no hay valac en el corpus y nadie lo consume. +# +# -DGOBJECT_INTROSPECTION=ON y SHARED_ONLY: isla dinámica. eds expone ECal a gjs y ese typelib +# arrastra ICalGLib; sin .so real no hay typelib. Ver [[gnome-introspection-dinamica]]. +name = "libical" +version = "3.0.20" + +[source] +tarball = "https://github.com/libical/libical/releases/download/v3.0.20/libical-3.0.20.tar.gz" +sha256 = "e73de92f5a6ce84c1b00306446b290a2b08cdf0a80988eca0a2c9d5c3510b4c2" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "dynamic" + +[build.phases] +configure = "PKG_CONFIG_PATH=/usr/lib/pkgconfig PYTHONPATH=/usr/lib/python3.12/site-packages cmake -S . -B build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DSHARED_ONLY=ON -DICAL_GLIB=ON -DGOBJECT_INTROSPECTION=ON -DICAL_GLIB_VAPI=OFF -DWITH_CXX_BINDINGS=OFF -DUSE_BUILTIN_TZDATA=ON -DICAL_BUILD_DOCS=OFF -DLIBICAL_BUILD_TESTING=OFF -DICAL_ERRORS_ARE_FATAL=OFF" +compile = "PYTHONPATH=/usr/lib/python3.12/site-packages cmake --build build -j\"$(nproc)\"" +install = "PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out cmake --install build" + +[deps] +build = ["cmake", "pkgconf", "python3", "perl", "py3-setuptools", "gi-foreign-girs", "gobject-introspection", "glib", "glib-introspected", "libxml2", "icu4c", "libffi", "pcre2", "zlib-shared"]