**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
45 lines
3.1 KiB
TOML
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"
|