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…
arquitectura: el trío de fuentes se publica con `--with-pic` — decisión del operador
1# libpng 1.6.58 → libpng16.a (C, autotools). Lib base imágenes: png crates, cola gráfica.
2# De-Alpinizada: compiler=zig-cc (migrado de gcc, matar-gcc 2026-07-16), configure-split, contra zlib del corpus, estático.
3name = "libpng"
4version = "1.6.58"
5license = "Libpng"
6[source]
7tarball = "https://downloads.sourceforge.net/libpng/libpng-1.6.58.tar.gz"
8sha256 = "8c9b05b675ca7301a458df2c2e46f26e1d41ff36b8863f8c33530bc58c2e6225"
9[build]
10compiler = "zig-cc"
11target = "x86_64-linux-musl"
12link = "static"
13flags = []
14[build.phases]
15# ── ⚠ `--with-pic`: DECISIÓN DE ARQUITECTURA DEL CORPUS, tomada el 2026-10-19 ──────────────────
16# Este `.a` se publicaba SIN PIC, y un `.a` no-PIC **no puede entrar en una biblioteca compartida**.
17# Mientras todo lo que el corpus produjera fueran ejecutables estáticos, eso no estorbaba: un
18# ejecutable sí enlaza un `.a` no-PIC.
19#
20# Lo destapó `fcitx5`, que produce OCHO `.so` porque sus métodos de entrada se cargan con `dlopen`:
21# 7365 × ld.lld: error: relocation R_X86_64_32 cannot be used against local symbol;
22# recompile with -fPIC
23# >>> in archive /usr/lib/libpng16.a · /usr/lib/libfreetype.a · /usr/lib/libfontconfig.a
24# y los pide `libclassicui.so`, que ES la barra de candidatos del IME — no un módulo opcional que se
25# pueda apagar.
26#
27# ⚠ **ESTO ES LO CONTRARIO DE LA DECISIÓN DEL 2026-08-21, y el cambio es deliberado.** Ese día el
28# operador decidió NO PIC-ificar `libpng` para arreglar `gdk-pixbuf`: «tiene dependientes en cuatro
29# colas y es estático por diseño; eso es arquitectura del corpus», y allá la salida correcta fue
30# desactivar el único `.so` que estorbaba (`-Dgif=disabled`). La diferencia de hoy no es el coste
31# —que se midió y es el mismo— sino QUÉ SE COMPRA: allá, salvar un `.so` que nadie quería; acá,
32# una capacidad entera (escribir chino, japonés y coreano) y cualquier app futura que necesite
33# enlazar desde un `.so`. Coste medido antes de decidir: **40 recetas** en la unión de los
34# dependientes transitivos de los tres (no 133: se solapan) y las CINCO imágenes de escritorio.
35#
36# `--with-pic` es la forma de libtool y la convención del repo (17 recetas la usaban ya). El coste
37# técnico de PIC es una indirección por acceso a global; los ejecutables estáticos siguen enlazando
38# igual, y `-no-pie` del `compile` no se toca: un ejecutable no-PIE puede enlazar objetos PIC.
39configure = './configure --build=$CBUILD --host=$CHOST --prefix=/usr --disable-shared --enable-static --with-pic CPPFLAGS=-I/usr/include LDFLAGS=-L/usr/lib'
40compile = 'make LDFLAGS="-all-static -no-pie" -j"$(nproc)"'
41install = 'make DESTDIR=/out install LDFLAGS="-all-static -no-pie"'
42[deps]
43build = ["zlib", "make"]