Files
takana/recipes/sqlite-shared.toml
T
Sergio b2ff678301 readline-shared: la .so que python3 y sqlite piden (b3:79355aad)
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.
2026-09-06 22:27:59 +00:00

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"]