Hidratando el rootfs de sway aparecieron 945 ficheros sueltos en la raíz — `AnyDBM_File.0`,
`App::Cpan.0`, … Son las páginas nroff de perl: su `Configure -des` no encuentra nroff, elige
`man1ext='0'` y `man1dir=' '` (la convención de perl para «no instales man»), pero `installman` las
GENERA igual y con el directorio vacío `make install DESTDIR=/out` las deja en `/out/`.
Ninguna métrica sobre recetas puede ver esto: hay que hidratar un rootfs de verdad y mirarlo.
El guardián va en `hydrate-profile.py` y mira **por artefacto**, no sobre el árbol fundido: en el
árbol fundido el nombre del culpable ya se perdió y 945 ficheros en `/` no se parecen en nada a
«una fase install con el destino vacío», que es lo que son. Barrido el store entero: **perl es el
único** — `.times`/`.dmerge` son internos del store y `product-rootfs`/`seed-zig` son especiales.
El arreglo es UNA línea (`-Dman1dir=… -Dman3dir=… -Dman1ext=1 -Dman3ext=3`) y NO se aplica hoy:
yupana radio perl → transitivos 347 · sellados que CAEN a deuda 305 · TODAS las imágenes
305 rebuilds para mover páginas de man de sitio no se paga solo. Queda escrito en la receta para ir
con el próximo bump de perl, cuando el re-hash ya esté pagado. Comprobado que el comentario NO entra
en `hash_inputs`: el ArtifactHash es idéntico antes y después (b3:1af26f6b).
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CGyBj4QyeCZiwLMkP9GJp6
58 lines
3.0 KiB
TOML
58 lines
3.0 KiB
TOML
# Perl 5.40.2 — intérprete. PROMOVIDA desde recipes/incoming-kde/ (2026-07-15): la necesitan DOS
|
|
# campañas que llegaron a ella por separado. harkaq (SDD 16 §4.10) la señaló como la ÚNICA deuda
|
|
# IRREDUCIBLE del primer barrido de la granja: ca-certificates y curl usan el perl del rootfs de
|
|
# Alpine sin declararlo. El comentario de ca-certificates YA lo decía en prosa ("el resto del build
|
|
# usa el perl + coreutils del rootfs") — estaba escrito, pero era invisible para el sistema.
|
|
# Construida y sellada (b3:c7a899bd…) ⇒ la deuda pasó de irreducible a declarable.
|
|
#
|
|
# Build-tool para la campaña KDE: lo exigen syntax-highlighting
|
|
# (find_package(Perl REQUIRED), regenera defs) e intltool (→libqalculate). No es input compilado del
|
|
# escritorio, es herramienta de build. Configure propio de perl (no autotools). zig cc vía wrapper.
|
|
name = "perl"
|
|
version = "5.40.2"
|
|
license = "Artistic-1.0-Perl OR GPL-1.0-or-later"
|
|
|
|
[source]
|
|
tarball = "https://www.cpan.org/src/5.0/perl-5.40.2.tar.gz"
|
|
sha256 = "10d4647cfbb543a7f9ae3e5f6851ec49305232ea7621aed24c7cfbb0bef4b70d"
|
|
|
|
[build]
|
|
compiler = "zig-cc"
|
|
target = "x86_64-linux-musl"
|
|
link = "dynamic"
|
|
zig_version = "0.13.0"
|
|
flags = []
|
|
|
|
[build.phases]
|
|
# Configure de perl: -des (defaults, sin preguntas). cc/ld como scripts wrapper (perl guarda el cc en
|
|
# Config y lo re-invoca; un script evita el split del espacio de "zig cc"). -Dusenm=false (no usa nm).
|
|
configure = '''
|
|
ZW="$PWD/.zwrap"; mkdir -p "$ZW"
|
|
printf '#!/bin/sh\nexec /opt/zig/zig cc -mcpu=baseline "$@"\n' > "$ZW/cc"; chmod +x "$ZW/cc"
|
|
sh Configure -des -Dprefix=/usr -Dcc="$ZW/cc" -Dld="$ZW/cc" -Duseshrplib -Dusenm=false -Dnoextensions=ODBM_File
|
|
'''
|
|
compile = 'make -j"$(nproc)"'
|
|
install = 'make install DESTDIR=/out'
|
|
|
|
# ⚠ DEUDA MEDIDA Y NO PAGADA (2026-09-04): esta receta instala 945 ficheros en la RAÍZ del rootfs.
|
|
#
|
|
# Su `Configure -des` no encuentra nroff, así que elige `man1ext='0'` y —lo importante—
|
|
# `man1dir=' '` / `man3dir=' '`, la convención de perl para «no instales man». Pero `installman`
|
|
# igual GENERA las páginas preformateadas y, con el directorio vacío, `make install DESTDIR=/out`
|
|
# las deja en `/out/`: `AnyDBM_File.0`, `App::Cpan.0`, … 945 ficheros sueltos en `/`.
|
|
# Se ve hidratando un rootfs de verdad; ninguna métrica sobre recetas puede verlo. El guardián que
|
|
# lo caza y NOMBRA al culpable está en `scripts/hydrate-profile.py` (§quién ensucia la raíz).
|
|
#
|
|
# EL ARREGLO ES UNA LÍNEA —`-Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3
|
|
# -Dman1ext=1 -Dman3ext=3`— Y NO SE APLICA HOY. `yupana radio perl` dice por qué:
|
|
#
|
|
# dependientes transitivos 347 · sellados que CAEN a deuda 305
|
|
# imágenes afectadas: base, cli, escritorio-{kde,gnome,cosmic,sway,mirada} (TODAS)
|
|
#
|
|
# 305 rebuilds para mover unas páginas de man de sitio no se paga solo. **Va con el próximo bump de
|
|
# perl**, cuando el re-hash ya esté pagado: ahí la línea cuesta cero. Esto no es un olvido, es una
|
|
# decisión con el número delante.
|
|
|
|
[deps]
|
|
build = ["pkgconf"]
|