From 2f0ff5d0d3a9a2e17a522a391a9a9a1a553eaaa8 Mon Sep 17 00:00:00 2001 From: Sergio Date: Tue, 11 Aug 2026 21:41:21 +0000 Subject: [PATCH] =?UTF-8?q?python3:=20declarar=20libffi=20=E2=80=94=20sin?= =?UTF-8?q?=20el,=20CPython=20se=20construye=20SIN=20=5Fctypes=20en=20sile?= =?UTF-8?q?ncio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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) --- recipes/python3.toml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) 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\""