# libadwaita 1.7.6 — VARIANTE ISLA DINÁMICA (SHADOW de recipes/libadwaita.toml estática). # Los widgets modernos de GNOME sobre GTK4. Compila sus estilos SCSS con sassc en build. # # POR QUÉ EXISTE: `xdg-desktop-portal-gnome` no sellaba. El link moría con # relocation R_X86_64_64 cannot be used against local symbol ... libfontconfig.a(fccfg.o) # y no era culpa de xdp-gnome: sus deps ya estaban en `-shared`. El cierre lo metía libadwaita, que # resuelve a la del CORPUS —receta entera de la era estática, con fontconfig/freetype/libpng/... todas # canónicas—. El artefacto monta esas `.a` y el linker las prefiere. No le faltaba una variante a la # receta del corpus: NO PERTENECE a la isla. De ahí esta sombra. La del corpus NO se toca: la comparten # otras colas (`yupana radio libadwaita` = 4 dependientes, 3 en corpus). # # vs corpus (mundo estático), REVERTIDO: # · link=dynamic, default_library=shared, SIN --prefer-static. # · default_library=SHARED y no `both` a propósito: producir también una `.a` reintroduciría justo el # fallo que esta receta arregla —una estática montada que el linker elige por encima de la `.so`—. # · las deps no-PIC pasan a su variante `-shared` (ver abajo). # · introspection sigue disabled: el único consumidor de la isla (xdp-gnome) es C y no dlopea Adw. # # 🔬 CÓMO SE ELIGIÓ LA LISTA DE DEPS — medido, no adivinado. Se barrió el cierre entero preguntando # «¿esta .a puede embeberse en una .so?». Resultado: las ÚNICAS no-PIC son fontconfig, freetype, # libpng, libjpeg-turbo, libtiff, libxml2 y libyaml — o sea EXACTAMENTE las que ya tenían sombra # `-shared` en esta cola, más libyaml, que era la única sin variante y por eso se escribió # `libyaml-shared.toml`. appstream, libxmlb, curl, openssl y zstd son PIC y se embeben tal cual: NO # hacen falta variantes para ellas (creerlo habría costado 5 builds de openssl/curl al pedo). # # ⚠ Y OJO CON LA REGLA CORTA, QUE MIENTE: `readelf -r x.a | grep R_X86_64_32` cuenta también 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 (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}' # Control: libepoxy=0 (embebe bien) · fontconfig=1122 (rompe el link). Ver [[gnome-introspection-dinamica]]. name = "libadwaita" version = "1.7.6" license = "LGPL-2.1-or-later" [source] tarball = "https://download.gnome.org/sources/libadwaita/1.7/libadwaita-1.7.6.tar.xz" sha256 = "5eacc5550f0bdbba6a1568aebf25a3d88f5ee07d6b558becc6fd9487579c9a29" [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 meson setup output --prefix=/usr --buildtype=release --wrap-mode=nodownload -Ddefault_library=shared -Dexamples=false -Dtests=false -Dvapi=false -Dintrospection=disabled -Dgtk_doc=false -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" [deps] # gtk4/pango/gdk-pixbuf/graphene/glib/harfbuzz resuelven a las ISLAS (shadow de esta misma cola). # appstream entra porque libadwaita-1.pc lo declara `Requires:` (dep PÚBLICA desde 1.6, release-notes # de AdwAboutDialog) y arrastra libxmlb/libyaml/curl/openssl/zstd. build = ["meson", "samurai", "python3", "pkgconf", "sassc", "appstream", "libyaml-shared", "curl", "openssl", "libxmlb", "libxml2-shared", "zstd", "gtk4", "pango", "gdk-pixbuf", "cairo-shared", "graphene", "glib", "harfbuzz", "fribidi", "fontconfig-shared", "freetype-shared", "pixman", "libpng-shared", "expat", "libjpeg-turbo-shared", "libtiff-shared", "libepoxy", "wayland", "wayland-protocols", "libxkbcommon", "libdrm", "pcre2", "libffi", "zlib-shared", "mesa"]