gnome: xdp-gnome a la isla dinámica + diagnóstico del muro que queda
Deps canónicas -> variantes -shared, y link=static -> dynamic: la receta era de la era estática y el link moría con «relocation R_X86_64_64 ... recompile with -fPIC» sobre libfontconfig.a. No sella todavía, y el muro queda MEDIDO en la receta para que nadie itere en falso: el cierre tiene un único camino a la fontconfig estática, xdp-gnome -> libadwaita -> fontconfig, y esa libadwaita es la del CORPUS, una receta entera de la era estática (gtk4/glib/cairo/pango canónicas). No le falta una variante: no pertenece a la isla dinámica. El paso siguiente es una sombra de libadwaita en incoming-gnome, como se hizo con glib. `yupana radio libadwaita` = 4 dependientes, 0 sellados cayendo. El frontend generico xdg-desktop-portal SI sello (b3:db5e5cf8). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Semantic delta
No definition changed: this change is text, documentation or data.
1 files · +27 −3
diff --git a/recipes/incoming-gnome/xdg-desktop-portal-gnome.toml b/recipes/incoming-gnome/xdg-desktop-portal-gnome.toml
index c5e880a0..cd6807f3 100644
--- a/recipes/incoming-gnome/xdg-desktop-portal-gnome.toml
+++ b/recipes/incoming-gnome/xdg-desktop-portal-gnome.toml
@@ -13,10 +13,13 @@ sha256 = "cd15aca2e1364da308eb3796bb8ae4a577e60ca4fe12006b315232cfd19c8861"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
-link = "static"
+# DINÁMICA, como mutter/gtk4 y el resto de la isla. Con `link=static` + `--prefer-static` el linker
+# elegía `libfontconfig.a` —que sigue montada porque alguna dep transitiva depende de la fontconfig
+# canónica— por encima de la `.so` de fontconfig-shared, y las `.a` del corpus no son PIC.
+link = "dynamic"
[build.phases]
-configure = "PKG_CONFIG_PATH=/usr/lib/pkgconfig PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release --wrap-mode=nodownload --prefer-static -Ddefault_library=static -Dc_args=-Wno-error=date-time"
+configure = "PKG_CONFIG_PATH=/usr/lib/pkgconfig PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release --wrap-mode=nodownload -Ddefault_library=shared -Dc_args=-Wno-error=date-time"
compile = "PYTHONPATH=/usr/lib/python3.12/site-packages ninja -C output"
install = "PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson install -C output --no-rebuild"
@@ -29,4 +32,25 @@ install = "PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson ins
# la misma glib. Mismo patrón que ya se había medido con pipewire.
# FRONTERA: gnome-desktop → ya en incoming-gnome/ (thumbnails/settings).
[deps]
-build = ["meson", "samurai", "python3", "pkgconf", "gobject-introspection", "gsettings-desktop-schemas", "gnome-desktop", "gtk4", "libadwaita", "glib", "cairo", "pango", "graphene", "libepoxy", "wayland", "wayland-protocols", "libdrm", "harfbuzz", "fribidi", "libpng", "pixman", "freetype", "expat", "libffi", "pcre2", "zlib", "gdk-pixbuf", "libjpeg-turbo", "libtiff", "mesa", "fontconfig", "xdg-desktop-portal"]
+# ⚠ LAS DEPS VAN EN VARIANTE `-shared`, NO EN LA ESTÁTICA CANÓNICA. Esta receta se escribió antes de
+# que GNOME pasara a ISLA DINÁMICA y declaraba las estáticas; el link muere con
+# «relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC» sobre
+# `libfontconfig.a(fccfg.o)`. Las `.a` del corpus no son PIC y no entran en nada dinámico. mutter,
+# gtk4 y el resto de la isla ya tomaban las `-shared`; ésta era la única rezagada. Antes de gastar un
+# build en un caso así: `readelf -r <lib>.a | grep R_X86_64_32`.
+#
+# ⛔ NO SELLA TODAVÍA, Y EL MURO ESTÁ MEDIDO — no vuelvas a iterar sobre ESTA receta.
+# Con las deps ya en `-shared` y `link=dynamic`, el link SIGUE tomando `libfontconfig.a`. El rastreo
+# del cierre da un único camino:
+# xdg-desktop-portal-gnome -> libadwaita -> fontconfig (la ESTÁTICA canónica)
+# y `libadwaita` resuelve a `recipes/libadwaita.toml`, o sea la del CORPUS, que es una receta entera
+# de la era estática: declara `gtk4`, `glib`, `cairo`, `freetype`, `pango`… todas canónicas. No es que
+# le falte una variante: NO PERTENECE a la isla dinámica.
+#
+# ⇒ El paso siguiente es una SOMBRA de libadwaita en `incoming-gnome/` construida contra la isla
+# (gtk4/glib/pango dinámicas + las `-shared`), igual que se hizo con `glib`. `yupana radio
+# libadwaita` = 4 dependientes, 0 sellados cayendo a deuda, así que es barato — pero es un frente
+# propio, no un remiendo de esta receta. NO tocar la libadwaita del corpus: la comparten otras colas.
+#
+# El frontend genérico `xdg-desktop-portal` SÍ está sellado (b3:db5e5cf8) — ése ya no bloquea.
+build = ["meson", "samurai", "python3", "pkgconf", "gobject-introspection", "gsettings-desktop-schemas", "gnome-desktop", "gtk4", "libadwaita", "glib", "cairo-shared", "pango", "graphene", "libepoxy", "wayland", "wayland-protocols", "libdrm", "harfbuzz", "fribidi", "libpng-shared", "pixman", "freetype-shared", "expat", "libffi", "pcre2", "zlib-shared", "gdk-pixbuf", "libjpeg-turbo-shared", "libtiff-shared", "mesa", "fontconfig-shared", "xdg-desktop-portal"]