Files
hammer/recipes/incoming-gnome/libyaml-shared.toml
T
sergioandClaude Opus 5 aeac4a2ebb gnome: xdg-desktop-portal-gnome SELLA — isla de libadwaita + frontend a 1.19.4
Cae el último muro real de la cola GNOME. Cuatro piezas, ninguna en la receta
que fallaba:

1. SOMBRA de libadwaita en incoming-gnome/. El «relocation ... libfontconfig.a»
   no lo ponía xdp-gnome sino el cierre de la libadwaita del CORPUS, receta de
   la era estática. La del corpus no se toca (3 dependientes ahí).
2. libyaml-shared: la única no-PIC del cierre de libadwaita sin variante.
3. xdg-desktop-portal 1.19.4 en esta cola (COSMIC sigue en 1.18.4). xdp-gnome 48
   exige >=1.19.1, y el corte de la dep dura de gstreamer es 1.19.1 EXACTO
   —1.19.0 no la pide—, así que no hay versión que cumpla ambas. Se saca con dos
   sed: gstreamer alimenta un solo binario auxiliar (validate-sound) que el
   daemon invoca por exec, no linkea. Precio: notificaciones con sonido propio
   quedan rechazadas. Barato vs traer gstreamer+gst-plugins-base al corpus.
4. gettext-tiny + los cierres .pc de libadwaita-1 y gnome-desktop-4.

Y se corrige una regla que estaba MAL escrita en la receta: medir PIC con
`readelf -r x.a | grep R_X86_64_32` cuenta las reubicaciones de .rela.debug_*,
inocuas y presentes en todo objeto. Así medido libepoxy da 39.630 «no-PIC» y
sin embargo está embebida dentro de la libgtk-4.so de la isla, con 3.446
símbolos epoxy_ definidos. Excluyendo debug el control sale limpio (libepoxy=0,
fontconfig=1122), y el barrido dio 7 no-PIC en vez de 13: ahorró cinco builds,
dos de ellos openssl y curl.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-07 07:18:49 -04:00

38 lines
1.9 KiB
TOML

# libyaml-shared 0.2.5 — variante DINÁMICA de libyaml para la isla dinámica de GNOME.
#
# Por qué existe: libadwaita declara `Requires: appstream` en su .pc (es dep PÚBLICA desde 1.6, para
# las release-notes de AdwAboutDialog), y appstream parsea los catálogos DEP-11 con libyaml. En el
# mundo estático eso da igual, pero la SOMBRA dinámica de libadwaita mete todo ese cierre dentro de
# `libadwaita-1.so`, y la libyaml.a canónica NO es PIC: 226 reubicaciones R_X86_64_32/32S en secciones
# de código. Mismo muro que fontconfig/freetype/libpng/libjpeg-turbo/libtiff/libxml2, que ya tienen su
# sombra en esta cola. libyaml era la ÚNICA no-PIC del cierre de libadwaita sin variante.
#
# ⚠ CÓMO SE MIDE «no es PIC», porque la regla corta miente. `readelf -r x.a | grep R_X86_64_32` cuenta
# también las reubicaciones de `.rela.debug_*`, que son inocuas y existen en TODO objeto. Medido así,
# libepoxy da 39.630 «no-PIC» — y sin embargo está EMBEBIDA dentro de la libgtk-4.so de la isla, con
# 3.446 símbolos `epoxy_` definidos. Hay que excluir las secciones de debug:
# readelf -r x.a | awk '/^Relocation section/{s=$3} /R_X86_64_32/{if (s !~ /debug/) n++} END{print n}'
# Con esa prueba el control sale limpio: libepoxy=0 (embebe bien) y fontconfig=1122 (rompe el link).
#
# Mismo tarball y misma versión que la canónica: no se abre skew entre el mundo estático y el dinámico.
name = "libyaml-shared"
version = "0.2.5"
[source]
tarball = "https://github.com/yaml/libyaml/releases/download/0.2.5/yaml-0.2.5.tar.gz"
sha256 = "c642ae9b75fee120b2d96c712538bd2cf283228d2337df2cf2988e3c02678ef4"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
flags = []
[build.phases]
configure = './configure --build=$CBUILD --host=$CHOST --prefix=/usr --enable-shared --disable-static'
compile = 'make -j"$(nproc)"'
install = 'make DESTDIR=/out install'
[deps]
build = ["make", "pkgconf"]