sergio/takana
> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…
readline-shared: la .so que python3 y sqlite piden (b3:79355aad)
1# ── ⚠ VERRUGA MEDIDA (2026-09-05), sin decidir ─────────────────────────────────────────────────
2# `usr/bin/sqlite3` —el shell de la CLI, NO `libsqlite3.so.0`— sale con `NEEDED libreadline.so.8`, y
3# el `readline` canónico del corpus es `.a`. O sea que en la imagen GNOME ese comando no carga: lo
4# resolvía contra el sysroot Alpine DEL LAB. Lo cazó `scripts/vigia-sonames.py`; las APPS están bien,
5# porque la librería no lo lleva.
6#
7# Las dos salidas cuestan cosas distintas y por eso no se decide de paso:
8# · construir `readline-shared` y sumarla de raíz a `escritorio-gnome` — 1 build nuevo, pero la
9# imagen carga una librería más sólo para que ande un comando. (`ncurses-shared` ya es raíz del
10# perfil, así que la cadena cierra.)
11# · configurar acá `--disable-readline` y no instalar una CLI que nadie pidió — más limpio, pero
12# re-hashea: `yupana radio sqlite-shared` da **6 dependientes en incoming-gnome** que caen a
13# deuda.
14# Se paga barato el día que sqlite-shared se re-selle por otro motivo.
15
16# sqlite-shared 3.46.1 — variante DINÁMICA de sqlite para la isla dinámica de GNOME.
17#
18# Por qué existe: el sqlite canónico (recipes/sqlite.toml) es `--disable-shared --enable-static` y su
19# libsqlite3.a NO es PIC (verificado: trae reubicaciones R_X86_64_32). libsoup 3.6 lo pide DURO
20# (meson.build:123-136 cae a `dependency('sqlite3')` sin `required:false`) y libsoup es un .so ⇒
21# meter el .a no-PIC adentro corta con el mismo `relocation R_X86_64_32 ... recompile with -fPIC`
22# que frenó a mutter contra freetype. Mismo patrón y misma solución que zlib-shared/cairo-shared:
23# una variante hermana, sin tocar la canónica (su radio son cientos de sellados).
24#
25# El único cambio real frente a la canónica es --enable-shared --disable-static y sacar el
26# `-all-static -no-pie` de LDFLAGS, que es justo lo que impide producir un .so. Misma versión y mismo
27# tarball a propósito: el sqlite3.pc que consume libsoup declara la misma versión que el resto del
28# corpus, así que no se abre un skew de versiones entre el mundo estático y el dinámico.
29name = "sqlite-shared"
30version = "3.46.1"
31
32[source]
33tarball = "https://sqlite.org/2024/sqlite-autoconf-3460100.tar.gz"
34sha256 = "67d3fe6d268e6eaddcae3727fce58fcc8e9c53869bdd07a0c61e38ddf2965071"
35
36[build]
37compiler = "zig-cc"
38target = "x86_64-linux-musl"
39link = "dynamic"
40
41[build.phases]
42configure = "./configure --prefix=/usr --enable-shared --disable-static"
43compile = 'make -j"$(nproc)"'
44install = "make install DESTDIR=/out"
45
46[deps]
47# ✅ DECIDIDA 2026-09-06, y la decisión cambió porque cambió el cálculo. La verruga de arriba dejaba
48# dos salidas sin elegir, y el argumento contra la primera era «la imagen carga una librería más sólo
49# para que ande un comando». Ya no es cierto: `python3` sale con el MISMO `NEEDED libreadline.so.8`
50# y es raíz de los cuatro perfiles, así que `readline-shared` entra en la clausura igual. El coste
51# marginal de arreglar además el `sqlite3` de la CLI es CERO.
52# `runtime` no entra en el ArtifactHash ⇒ no re-hashea, y los 6 dependientes que menciona la nota de
53# arriba no se tocan. Esa era la otra mitad del precio y tampoco se paga.
54runtime = ["readline-shared"]
55build = ["make", "pkgconf"]