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 1471Shell 174Rust 105Markdown 943556 Sutichaykuna

python3: declarar libffi — sin el, CPython se construye SIN _ctypes en silencio

Destapado reconstruyendo el corpus: gjs y el build de mozjs morian con
`ModuleNotFoundError: No module named '_ctypes'`. La causa no estaba ahi: el
artefacto de python3 se sella SIN ese modulo y arranca perfectamente; el
fallo aparece mucho despues, en otra receta. 310 recetas dependen de python3.

El rootfs del lab trae libffi (runtime) pero NO sus headers — no hay
libffi-dev en el lock. El configure de CPython no encuentra ffi y omite
_ctypes sin fallar. recipes/libffi.toml si instala headers y .pc, y pkgconf
—ya declarado— los ve en la capa overlay.

Por que aparece AHORA y no antes: el artefacto viejo de python3 tenia _ctypes
porque el rootfs de entonces traia los headers, y el cache-hit lo mantuvo
congelado hasta que el corpus se re-hasheo. Mismo patron que
make/--disable-load: reconstruir destapa lo que la cache sostenia.

Se arregla ahora y no mas tarde a proposito: mover el hash de python3 mueve
el de sus 310 dependientes, y con solo ~48 recetas selladas eso es barato.
Dentro de dos dias no lo habria sido.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

2f0ff5d0d3a9a2e17a522a391a9a9a1a553eaaa8 · ruwaq Sergio · (2 killa ñawpaq) · tayta 5142a87ba · kay commitpi sach'ata qhaway

Semántico sayk'uy

Mana ima sutichaypas t'ikrakurqanchu: qillqalla, yachachiylla utaq willaylla t'ikrakurqan.

1 qillqakuna · +14 −1

diff --git a/recipes/python3.toml b/recipes/python3.toml
index 9768d703..a616e31e 100644
--- a/recipes/python3.toml
+++ b/recipes/python3.toml
@@ -37,7 +37,20 @@ link        = "dynamic"
 zig_version = "0.13.0"
 
 [deps]
-build = ["zlib", "pkgconf"]
+# `libffi` NO es opcional aunque el build no falle sin él: sin libffi el `configure` de CPython
+# construye un intérprete SIN el módulo `_ctypes`, y lo hace en SILENCIO — sella un python3 que
+# arranca perfectamente y revienta más tarde, en otra receta, con
+# `ModuleNotFoundError: No module named '_ctypes'` (destapado 2026-08-11 en gjs y en el build de
+# mozjs). **310 recetas dependen de python3**, así que el fallo no se parece a su causa ni de lejos.
+#
+# Por qué aparece AHORA: el rootfs del lab trae `libffi` (runtime) pero NO sus headers — no hay
+# `libffi-dev` en el lock. El artefacto viejo de python3 sí tenía `_ctypes` porque el rootfs de
+# entonces los traía, y el cache-hit lo mantuvo congelado hasta que el corpus se re-hasheó entero.
+# Mismo patrón que `make`/`--disable-load`: reconstruir destapa lo que la caché sostenía.
+#
+# El arreglo va en `[deps]`, NUNCA engordando el rootfs: `recipes/libffi.toml` instala los headers
+# y el `.pc`, y `pkgconf` (ya declarado) los encuentra en la capa overlay.
+build = ["zlib", "pkgconf", "libffi"]
 
 [build.phases]
 configure = "./configure --prefix=/usr --without-ensurepip --disable-test-modules --with-ensurepip=no CFLAGS=\"-Wno-error=date-time\""