tawasuyu

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…

TOML 1531Shell 196Rust 108Markdown 983686 Definitions

⎇ main recipes/fontconfig.toml TOML · 43 lines · 2.8 KB History raw

arquitectura: el trío de fuentes se publica con `--with-pic` — decisión del operador a64fb640e · Sergio ·

1# fontconfig 2.18.1 — configuración/cache de fuentes (lo usa cairo/pango). autotools static.
2name    = "fontconfig"
3version = "2.18.1"
4license = "MIT"
5[source]
6tarball = "https://gitlab.freedesktop.org/api/v4/projects/890/packages/generic/fontconfig/2.18.1/fontconfig-2.18.1.tar.xz"
7sha256  = "2300f3dbfa7253b3a44f4feecdbc8dfa45dde5dc2cfb71fceaf31f394cb41031"
8[build]
9compiler = "zig-cc"
10target   = "x86_64-linux-musl"
11link     = "static"
12[build.phases]
13# ── ⚠ `--with-pic`: DECISIÓN DE ARQUITECTURA DEL CORPUS, tomada el 2026-10-19 ──────────────────
14# Este `.a` se publicaba SIN PIC, y un `.a` no-PIC **no puede entrar en una biblioteca compartida**.
15# Mientras todo lo que el corpus produjera fueran ejecutables estáticos, eso no estorbaba: un
16# ejecutable sí enlaza un `.a` no-PIC.
17#
18# Lo destapó `fcitx5`, que produce OCHO `.so` porque sus métodos de entrada se cargan con `dlopen`:
19#     7365 × ld.lld: error: relocation R_X86_64_32 cannot be used against local symbol;
20#                    recompile with -fPIC
21#     >>> in archive /usr/lib/libpng16.a · /usr/lib/libfreetype.a · /usr/lib/libfontconfig.a
22# y los pide `libclassicui.so`, que ES la barra de candidatos del IME — no un módulo opcional que se
23# pueda apagar.
24#
25# ⚠ **ESTO ES LO CONTRARIO DE LA DECISIÓN DEL 2026-08-21, y el cambio es deliberado.** Ese día el
26# operador decidió NO PIC-ificar `libpng` para arreglar `gdk-pixbuf`: «tiene dependientes en cuatro
27# colas y es estático por diseño; eso es arquitectura del corpus», y allá la salida correcta fue
28# desactivar el único `.so` que estorbaba (`-Dgif=disabled`). La diferencia de hoy no es el coste
29# —que se midió y es el mismo— sino QUÉ SE COMPRA: allá, salvar un `.so` que nadie quería; acá,
30# una capacidad entera (escribir chino, japonés y coreano) y cualquier app futura que necesite
31# enlazar desde un `.so`. Coste medido antes de decidir: **40 recetas** en la unión de los
32# dependientes transitivos de los tres (no 133: se solapan) y las CINCO imágenes de escritorio.
33#
34# `--with-pic` es la forma de libtool y la convención del repo (17 recetas la usaban ya). El coste
35# técnico de PIC es una indirección por acceso a global; los ejecutables estáticos siguen enlazando
36# igual, y `-no-pie` del `compile` no se toca: un ejecutable no-PIE puede enlazar objetos PIC.
37configure = "./configure --prefix=/usr --sysconfdir=/etc --disable-shared --enable-static --with-pic --disable-docs"
38compile   = 'make LDFLAGS="-all-static -no-pie" -j"$(nproc)"'
39install   = 'make install DESTDIR=/out LDFLAGS="-all-static -no-pie"'
40# libpng+zlib: freetype se compila --with-png, así que freetype2.pc trae `Requires: libpng`
41# (y libpng.pc → zlib); sin ellos pkg-config no resuelve freetype2 y ./configure aborta.
42[deps]
43build = ["freetype", "expat", "pkgconf", "gperf", "python3", "libpng", "zlib", "make"]