libreadline.so.8, 970.144 bytes. Hermana de ncurses-shared y por la misma fuga: python3 y sqlite-shared salen con NEEDED libreadline.so.8 y la readline del catálogo es --disable-shared, así que sólo produce libreadline.a. En el rootfs hidratado eso se resolvía contra el sysroot Alpine DEL LAB. Versión 8.2 y no la 8.3.3 de Alpine, a propósito: es la que ya usa recipes/readline.toml y tener las dos variantes en versiones distintas es pedir que diverjan sin que nadie lo note. TRES GUARDIANES, y el segundo es de Alpine casi literal. readline sale MAL ENLAZADA por diseño de upstream —libreadline.so no enlaza contra ncurses salvo que se lo fuerces, y queda con tgetent y compañía sin resolver—; Alpine lo arregla con un parche y con un check que falla si el NEEDED de ncurses no aparece. Acá se consigue sin parche con SHLIB_LIBS=-lncursesw, que es la perilla que el propio Makefile expone. El guardián verifica que quedó enlazada, porque si no el fallo reaparece en el consumidor, a un eslabón de distancia y sin nombrar a esta receta. La dep es ncurses-shared y no ncurses: con la estática, libreadline.so.8 se llevaría los objetos de libncursesw.a dentro en vez de declarar el NEEDED — la misma lección que el cairo estático de waterfox. Se promueve además sqlite-shared de incoming-gnome al catálogo canónico: python3 la necesita como dep de ejecución y una receta de recipes/ no ve las de una cola. Sin variantes en conflicto y ya sellada, así que la promoción no cuesta un build.
56 lines
3.3 KiB
TOML
56 lines
3.3 KiB
TOML
# ── ⚠ VERRUGA MEDIDA (2026-09-05), sin decidir ─────────────────────────────────────────────────
|
|
# `usr/bin/sqlite3` —el shell de la CLI, NO `libsqlite3.so.0`— sale con `NEEDED libreadline.so.8`, y
|
|
# el `readline` canónico del corpus es `.a`. O sea que en la imagen GNOME ese comando no carga: lo
|
|
# resolvía contra el sysroot Alpine DEL LAB. Lo cazó `scripts/vigia-sonames.py`; las APPS están bien,
|
|
# porque la librería no lo lleva.
|
|
#
|
|
# Las dos salidas cuestan cosas distintas y por eso no se decide de paso:
|
|
# · construir `readline-shared` y sumarla de raíz a `escritorio-gnome` — 1 build nuevo, pero la
|
|
# imagen carga una librería más sólo para que ande un comando. (`ncurses-shared` ya es raíz del
|
|
# perfil, así que la cadena cierra.)
|
|
# · configurar acá `--disable-readline` y no instalar una CLI que nadie pidió — más limpio, pero
|
|
# re-hashea: `yupana radio sqlite-shared` da **6 dependientes en incoming-gnome** que caen a
|
|
# deuda.
|
|
# Se paga barato el día que sqlite-shared se re-selle por otro motivo.
|
|
|
|
# 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]
|
|
# ✅ DECIDIDA 2026-09-06, y la decisión cambió porque cambió el cálculo. La verruga de arriba dejaba
|
|
# dos salidas sin elegir, y el argumento contra la primera era «la imagen carga una librería más sólo
|
|
# para que ande un comando». Ya no es cierto: `python3` sale con el MISMO `NEEDED libreadline.so.8`
|
|
# y es raíz de los cuatro perfiles, así que `readline-shared` entra en la clausura igual. El coste
|
|
# marginal de arreglar además el `sqlite3` de la CLI es CERO.
|
|
# `runtime` no entra en el ArtifactHash ⇒ no re-hashea, y los 6 dependientes que menciona la nota de
|
|
# arriba no se tocan. Esa era la otra mitad del precio y tampoco se paga.
|
|
runtime = ["readline-shared"]
|
|
build = ["make", "pkgconf"]
|