gioser

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 1572Shell 203Rust 109Markdown 993728 Definitions

⎇ main recipes/freetype.toml TOML · 59 lines · 3.6 KB History raw

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

1# freetype 2.14.3 — lib C base (de-Alpinizada, Etapa G). compiler=zig-cc (migrado de gcc, matar-gcc 2026-07-16), configure-split, estático.
2name    = "freetype"
3version = "2.14.3"
4license = "FTL OR GPL-2.0-or-later"
5
6[source]
7tarball = "https://download.savannah.gnu.org/releases/freetype/freetype-2.14.3.tar.xz"
8sha256  = "36bc4f1cc413335368ee656c42afca65c5a3987e8768cc28cf11ba775e785a5f"
9patches = ["pcf-family-names.patch", "subpixel.patch", "table-validation-modules.patch"]
10
11[build]
12compiler = "zig-cc"
13target   = "x86_64-linux-musl"
14link     = "static"
15flags    = []
16
17[build.phases]
18# `--with-bzip2=no` EXPLÍCITO, como ya lo están harfbuzz y brotli. Sin él freetype AUTODETECTA
19# bzip2, y desde que el lab trae `bzip2-dev` (2026-08-12) lo encuentra y lo graba en su
20# `freetype2.pc` como `Requires: zlib, bzip2, libpng`. A partir de ahí, TODA receta que enlace
21# freetype con `-all-static` resuelve ese Requires vía pkg-config, pide `-lbz2` y muere:
22# «unable to find static system library 'bz2'» — porque los `-dev` de Alpine traen `.so` pero NO `.a`.
23# Se llevó por delante `fontconfig` y con él las 27 recetas del escritorio (KDE, GNOME y COSMIC
24# dependen de fontconfig).
25#
26# Se arregla acá y no quitando `bzip2-dev` del lab porque esto mueve el hash de freetype y sus
27# dependientes; lo otro re-hashearía el corpus ENTERO por tercera vez en un día.
28# freetype no necesita bz2: sólo sirve para fuentes PCF comprimidas con bzip2.
29# ── ⚠ `--with-pic`: DECISIÓN DE ARQUITECTURA DEL CORPUS, tomada el 2026-10-19 ──────────────────
30# Este `.a` se publicaba SIN PIC, y un `.a` no-PIC **no puede entrar en una biblioteca compartida**.
31# Mientras todo lo que el corpus produjera fueran ejecutables estáticos, eso no estorbaba: un
32# ejecutable sí enlaza un `.a` no-PIC.
33#
34# Lo destapó `fcitx5`, que produce OCHO `.so` porque sus métodos de entrada se cargan con `dlopen`:
35#     7365 × ld.lld: error: relocation R_X86_64_32 cannot be used against local symbol;
36#                    recompile with -fPIC
37#     >>> in archive /usr/lib/libpng16.a · /usr/lib/libfreetype.a · /usr/lib/libfontconfig.a
38# y los pide `libclassicui.so`, que ES la barra de candidatos del IME — no un módulo opcional que se
39# pueda apagar.
40#
41# ⚠ **ESTO ES LO CONTRARIO DE LA DECISIÓN DEL 2026-08-21, y el cambio es deliberado.** Ese día el
42# operador decidió NO PIC-ificar `libpng` para arreglar `gdk-pixbuf`: «tiene dependientes en cuatro
43# colas y es estático por diseño; eso es arquitectura del corpus», y allá la salida correcta fue
44# desactivar el único `.so` que estorbaba (`-Dgif=disabled`). La diferencia de hoy no es el coste
45# —que se midió y es el mismo— sino QUÉ SE COMPRA: allá, salvar un `.so` que nadie quería; acá,
46# una capacidad entera (escribir chino, japonés y coreano) y cualquier app futura que necesite
47# enlazar desde un `.so`. Coste medido antes de decidir: **40 recetas** en la unión de los
48# dependientes transitivos de los tres (no 133: se solapan) y las CINCO imágenes de escritorio.
49#
50# `--with-pic` es la forma de libtool y la convención del repo (17 recetas la usaban ya). El coste
51# técnico de PIC es una indirección por acceso a global; los ejecutables estáticos siguen enlazando
52# igual, y `-no-pie` del `compile` no se toca: un ejecutable no-PIE puede enlazar objetos PIC.
53configure = './configure --build=$CBUILD --host=$CHOST --prefix=/usr --disable-shared --enable-static --with-pic --without-harfbuzz --without-brotli --with-bzip2=no --with-zlib=yes --with-png=yes CPPFLAGS=-I/usr/include LDFLAGS=-L/usr/lib'
54compile   = 'make'
55install   = 'make DESTDIR=/out install'
56
57
58[deps]
59build = ["zlib", "libpng", "make"]