gnome onda 3: libsoup SELLADO (b3:79d6bf81) + sqlite-shared

Segunda pieza de la cadena eds. Leer el meson.build real (y no el mapa de
memoria) corrigió dos cosas del presupuesto:

  libxml2 → libsoup 3.x NO la usa (era de la era 2.x, SoupXMLRPC). Se ahorra
            una variante -shared que estaba presupuestada.
  sqlite3 → DURA, no opcional: meson.build:123-136 termina en dependency()
            sin `required:false`. Y el libsqlite3.a canónico NO es PIC, así que
            no entra en un .so — mismo muro R_X86_64_32 que frenó a mutter
            contra freetype. De ahí sqlite-shared (b3:7aba78e7), hermana de
            zlib-shared/cairo-shared, sin tocar la canónica.

El apagado que más compra es -Dtls_check=false: el meson ASSERTEA que exista
glib-networking para TLS, y eso arrastraba gnutls o openssl+p11-kit. Apagar el
CHECK no apaga el TLS — GIO resuelve el backend por módulo en runtime, así que
el día que haya receta de glib-networking basta hidratarla, sin recompilar.

Verificado: Soup-3.0.typelib producido (la isla dinámica lo exige) y el NEEDED
cierra en artefactos sellados + libc.so, sin fuga al sysroot Alpine.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-28 19:51:14 -04:00
co-authored by Claude Opus 5
parent a9f40e15bc
commit 1283215173
2 changed files with 80 additions and 0 deletions
+48
View File
@@ -0,0 +1,48 @@
# libsoup 3.6.6 — cliente HTTP sobre GLib. Entra al frente GNOME como dep dura de
# evolution-data-server: libedataserver enlaza soup-3.0 (ESoupSession) y los backends de calendario
# CalDAV/WebDAV son HTTP. O sea que llega por la cima: gnome-shell → eds → libsoup.
#
# LISTA CONTRA EL meson.build REAL (3.6.6), no de memoria. Corrige el mapa que traía la campaña:
# libxml2 → NO la usa. libsoup 2.x la necesitaba para SoupXMLRPC; en libsoup 3.x no aparece ni
# una vez en meson.build. Se ahorra una variante -shared que ya estaba presupuestada.
# sqlite3 → DURA (:123-136). El fallback termina en `dependency('sqlite3')` sin `required:false`,
# así que no hay perilla. Es el HSTS enforcer, que persiste en disco.
# libnghttp2, libpsl, zlib, glib → duras. Las cuatro ya selladas en esta cola.
#
# Cada apagado, y lo que compra:
# -Dtls_check=false → meson.build:~200 corre un test que ASSERTEA `libsoup requires
# glib-networking for TLS support`. glib-networking no está en el corpus y
# arrastraría gnutls o openssl+p11-kit. Apagar el CHECK no apaga el TLS: GIO
# resuelve el backend por módulo en runtime, así que el día que exista una
# receta de glib-networking basta hidratarla y libsoup habla HTTPS sin
# recompilar. Lo que se pierde HOY es HTTPS en runtime, no la API.
# -Dbrotli=disabled → brotli está en el corpus pero SÓLO estático y no-PIC (mismo caso que
# sqlite), o sea que habilitarlo costaba otra variante -shared. Es sólo
# Content-Encoding: br; el calendario de eds no lo necesita.
# -Dgssapi=disabled -Dntlm=disabled → autenticación Kerberos/NTLM corporativa; krb5 no existe acá.
# -Dsysprof=disabled -Dtests=false -Ddocs=disabled -Dvapi=disabled -Dpkcs11_tests=disabled
# → sysprof, gnutls y las suites de test (que quieren apache/httpd) fuera.
# -Dintrospection=enabled → NO es opcional acá: gnome-shell es JavaScript y eds expone typelibs
# que arrastran Soup-3.0. Es la isla dinámica: sin .so no hay typelib.
#
# ISLA DINÁMICA: shared, con sqlite-shared/zlib-shared en vez de las canónicas estáticas — sus .a no
# son PIC y no entran en un .so (es el muro que frenó a mutter contra freetype).
name = "libsoup"
version = "3.6.6"
[source]
tarball = "https://download.gnome.org/sources/libsoup/3.6/libsoup-3.6.6.tar.xz"
sha256 = "51ed0ae06f9d5a40f401ff459e2e5f652f9a510b7730e1359ee66d14d4872740"
[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 -Dtls_check=false -Dbrotli=disabled -Dgssapi=disabled -Dntlm=disabled -Dsysprof=disabled -Dtests=false -Ddocs=disabled -Ddoc_tests=false -Dinstalled_tests=false -Dpkcs11_tests=disabled -Dautobahn=disabled -Dintrospection=enabled -Dvapi=disabled -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]
build = ["meson", "samurai", "python3", "pkgconf", "py3-setuptools", "gi-foreign-girs", "gobject-introspection", "glib", "glib-introspected", "libpsl", "nghttp2", "sqlite-shared", "zlib-shared", "icu4c", "libffi", "pcre2"]
+32
View File
@@ -0,0 +1,32 @@
# sqlite-shared 3.46.1 — variante DINÁMICA de sqlite para la isla dinámica de GNOME.
#
# Por qué existe: el sqlite canónico (recipes/sqlite.toml) es `--disable-shared --enable-static` y su
# libsqlite3.a NO es PIC (verificado: trae reubicaciones R_X86_64_32). libsoup 3.6 lo pide DURO
# (meson.build:123-136 cae a `dependency('sqlite3')` sin `required:false`) y libsoup es un .so ⇒
# meter el .a no-PIC adentro corta con el mismo `relocation R_X86_64_32 ... recompile with -fPIC`
# que frenó a mutter contra freetype. Mismo patrón y misma solución que zlib-shared/cairo-shared:
# una variante hermana, sin tocar la canónica (su radio son cientos de sellados).
#
# El único cambio real frente a la canónica es --enable-shared --disable-static y sacar el
# `-all-static -no-pie` de LDFLAGS, que es justo lo que impide producir un .so. Misma versión y mismo
# tarball a propósito: el sqlite3.pc que consume libsoup declara la misma versión que el resto del
# corpus, así que no se abre un skew de versiones entre el mundo estático y el dinámico.
name = "sqlite-shared"
version = "3.46.1"
[source]
tarball = "https://sqlite.org/2024/sqlite-autoconf-3460100.tar.gz"
sha256 = "67d3fe6d268e6eaddcae3727fce58fcc8e9c53869bdd07a0c61e38ddf2965071"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
[build.phases]
configure = "./configure --prefix=/usr --enable-shared --disable-static"
compile = 'make -j"$(nproc)"'
install = "make install DESTDIR=/out"
[deps]
build = ["make", "pkgconf"]