Files
SergioandClaude Opus 5 93362fc21b el TLS arreglado en la caja, la distro con nombre, y el ENOSPC que no era de la raíz
**curl ya valida**: `ca-certificates` re-sellado con **119 hash-links en el capath**, generados en el
build, y la caja baja por HTTPS sin apaño (200). Tardó tres intentos y los dos primeros los cazó la
guarda de la propia receta: `c_rehash` no estaba en el PATH (lo instala esa misma receta en
`/out/usr/bin`) y los certificados no están sueltos en `usr/share/ca-certificates/` sino en
`mozilla/`, así que sólo veía el bundle y lo saltaba —correctamente— con «does not contain exactly
one certificate». Sin la guarda habría sellado un capath vacío las tres veces.

**fastfetch 2.68.1 corre en la caja** (pedido del usuario) y al correrlo destapó que
**`/etc/os-release` no existía**: la distro era anónima para cualquier programa que no fuera suyo.
Ahora `OS: takana x86_64`. Va como receta propia (`source.dir`) y no como constante de
`takana-bootstrap`: meterlo ahí re-sellaría el product-rootfs —el baseline del selfhost— por cinco
líneas. Sin VERSION_ID ni fecha: un sello con la fecha del build cambiaría el hash cada día sin
motivo, y con él la clausura de toda imagen que lo lleve.

🧨 Y el hallazgo estructural: `upgrade apply` falló dos veces con **No space left on device teniendo
3 G libres en la raíz**. No era `/` ni los inodos (9%): el estado de generaciones vive en
**`/var/lib/hammer`, que es sda3 y mide 487 MB** — la partición «estado» del layout. Cada generación
guarda una copia del árbol aplicado (272 MB el nuestro), así que dos no caben. Movido a `/work` por
symlink, igual que qorpa, y la generación 6 entró. El layout de la imagen necesita revisión: 512 MB
no alcanzan para un mecanismo que guarda un árbol por generación, y el síntoma apunta al sitio
equivocado.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016Tf9T4vGzsMoT7eS8YzMFn
2026-09-14 21:40:45 +00:00

45 lines
3.1 KiB
TOML

# fastfetch — la tarjeta de presentación del sistema: qué distro, qué kernel, qué CPU, qué RAM.
#
# Pedido por el usuario (2026-09-14). No es adorno: en una distro propia es la primera herramienta
# que contesta «¿qué estoy corriendo?» sin leerse tres ficheros de `/proc`, y en una caja recién
# instalada es lo que distingue «arrancó» de «arrancó lo que yo creía».
#
# ══ CMake + zig: la línea que no se puede olvidar ══════════════════════════════════════════════
# `-DCMAKE_LINK_DEPENDS_USE_LINKER=OFF`. Sin eso, el `lld` de zig **segfaultea** al recibir
# `--dependency-file` y el error no menciona a zig ni a lld — dice `Error running link command:
# Segmentation fault`. Cinco de las quince recetas CMake barridas estaban selladas Y rotas por esto.
#
# ══ LO QUE SE APAGA, Y POR QUÉ ═════════════════════════════════════════════════════════════════
# fastfetch detecta MUCHO por `dlopen` de librerías opcionales (X11, Vulkan, DConf, ImageMagick…).
# Con `link = "static"` eso no aplica: el binario no abre nada en runtime. Se apagan explícitamente
# los módulos que traerían dependencias que esta distro no tiene —o que las tiene por otra vía— para
# que el build no dependa de qué haya en el lab **el día que se construya**: una detección que entra
# «porque estaba» es un artefacto distinto en cada máquina, con el mismo nombre.
name = "fastfetch"
version = "2.68.1"
license = "MIT"
[source]
repo = "https://github.com/fastfetch-cli/fastfetch"
commit = "1c1136ebd1e943d6d2ba7c204a11deee3e948dd8"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "static"
flags = []
[deps]
build = ["cmake", "linux-headers"]
[build.phases]
# ⚠ `-Wno-error=date-time`: `version.c` usa `__DATE__`/`__TIME__` y el lab compila con
# `-Werror=date-time` —la política de reproducibilidad del sandbox, que aquí hizo exactamente su
# trabajo y paró el build—. Desactivarlo es SEGURO **porque el sandbox exporta `SOURCE_DATE_EPOCH`**:
# con esa variable definida, clang hace que `__DATE__`/`__TIME__` rindan esa fecha fija en vez de la
# del reloj, así que el binario sigue siendo determinista. Sin `SOURCE_DATE_EPOCH` esto sería
# hornear la hora del build dentro del artefacto, que es justo lo que el warning previene.
configure = "cmake -S . -B build -DCMAKE_C_FLAGS=-Wno-error=date-time -DCMAKE_LINK_DEPENDS_USE_LINKER=OFF -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DENABLE_SYSTEM_YYJSON=OFF -DENABLE_VULKAN=OFF -DENABLE_OPENCL=OFF -DENABLE_X11=OFF -DENABLE_XRANDR=OFF -DENABLE_WAYLAND=OFF -DENABLE_DCONF=OFF -DENABLE_IMAGEMAGICK7=OFF -DENABLE_CHAFA=OFF -DENABLE_DBUS=OFF -DENABLE_PULSE=OFF -DENABLE_DDCUTIL=OFF -DENABLE_SQLITE3=OFF -DENABLE_RPM=OFF -DENABLE_LIBNM=OFF -DENABLE_LIBZFS=OFF -DENABLE_EGL=OFF -DENABLE_GLX=OFF -DENABLE_OSMESA=OFF -DENABLE_DRM=OFF -DENABLE_ELF=OFF -DENABLE_LIBCJSON=OFF"
compile = "cmake --build build"
install = "DESTDIR=/out cmake --install build"