sombras -shared: 8 promovidas al corpus, 0 hashes movidos — y cairo se para en un muro real
Decisión del usuario: promover una por una, verificando. Hecho así, y valió la pena. EL RIESGO QUE SE TEMÍA NO APLICABA. La nota de `granja-promote-colisiones` advierte que promover a ciegas hace que variantes homónimas pisen recetas canónicas. Acá no: los nombres `*-shared` son DISTINTOS de los canónicos —`zlib-shared` no pisa a `zlib`— y se comprobó que ninguna de las 19 sombras del catálogo choca con un nombre del corpus. Decirlo importa: repetir una advertencia donde no aplica es tan malo como ignorarla donde sí. VERIFICADO EMPÍRICAMENTE, no razonado: se calcularon los hashes de LAS 1153 recetas antes y después de promover. **Ninguna cambió**, y las 8 nuevas tienen hash idéntico a su original ⇒ sus artefactos ya están sellados y no hay que reconstruir nada. Promovidas: zlib, libpng, freetype, fontconfig, libjpeg-turbo, libtiff, libxml2 y libyaml (todas en su variante -shared). ⛔ `cairo-shared` NO SE PROMOVIÓ, y el porqué es el hallazgo: su hash SÍ cambia al moverla, porque una de sus deps —`glib`— resuelve distinto desde el corpus. En `incoming-gnome-onda2` hay una SOMBRA DE GLIB CON EL MISMO NOMBRE que la canónica (`link=dynamic`, `-Ddefault_library=both` en vez de static), y `cairo-shared` está construida contra ella. ⇒ O sea que el riesgo de homónimos SÍ existe, pero un nivel más abajo del que se miraba: no en las `-shared`, sino en el `glib` sombra. Promoverlo pisaría la receta canónica de glib y re-hashearía en silencio todo lo que cuelga de ella, que es medio catálogo. El camino limpio es renombrarla a `glib-shared` —nombre que YA existe en incoming-cosmic— y reapuntar cairo-shared; eso cambia hashes de la cadena GNOME y merece su propia decisión, no colarla acá de madrugada. Con esto la cadena estática del corpus (gtk4 y las 6 que cuelgan) sigue bloqueada, pero ahora se sabe exactamente por qué y cuál es el siguiente paso concreto. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
# 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"
|
||||
license = "MIT"
|
||||
|
||||
[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"]
|
||||
|
||||
# ── PROMOVIDA AL CORPUS 2026-08-08 ──────────────────────────────────────────────────────────────
|
||||
# Copia literal de la sombra que vivía en una cola `incoming-*`. Se promovió porque la resolución de
|
||||
# deps es hermano→padre: una receta del corpus NO ve las de `incoming-*`, así que sin esto ninguna
|
||||
# receta canónica puede usar las variantes dinámicas.
|
||||
#
|
||||
# NO hay riesgo de colisión —el que advierte la nota de `granja-promote-colisiones`— porque el nombre
|
||||
# `*-shared` es DISTINTO del canónico: `zlib-shared` no pisa a `zlib`. Verificado además de forma
|
||||
# empírica antes de commitear: se calcularon los hashes de LAS 1153 recetas antes y después, y
|
||||
# **ninguna cambió**. El hash de esta copia es idéntico al del original, así que su artefacto ya está
|
||||
# sellado y no hay que reconstruir nada.
|
||||
Reference in New Issue
Block a user