linux-firmware: los 337 enlaces «sin destino» eran mi comprobación, no el tarball

Los que faltaban son casi todos de la forma `ath11k/WCN6855/hw2.1/regdb.bin -> ../hw2.0/regdb.bin`:
un `..` no resuelve si el directorio desde el que cuelga todavía no existe, y yo probaba el destino
ANTES del mkdir. Con el directorio creado primero resuelven los 2415 de 2415 — medido sobre el árbol
desempaquetado, no deducido.

Queda dicho en la receta porque la lectura fácil era la contraria: «WHENCE declara enlaces a blobs
que el tarball no trae», que habría llevado a bajar el umbral y sellar un artefacto con 337 firmwares
inalcanzables. Y si el destino de verdad no existe, ahora se borra el directorio vacío que el mkdir
haya dejado: un directorio vacío en el artefacto es exactamente lo que el §3 de CLAUDE.md prohíbe.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Sergio
2026-09-17 21:29:05 +00:00
co-authored by Claude Opus 5
parent d1032c0336
commit a37485365c
+9 -1
View File
@@ -88,8 +88,16 @@ for pasada in 1 2 3; do
dst_abs="/out/lib/firmware/$dst"
[ -e "$dst_abs" ] && continue # ya hecho (o es un fichero de verdad)
dir=$(dirname "$dst_abs")
[ -e "$dir/$src" ] || continue # sólo si el destino existe de verdad
# El directorio del enlace se crea ANTES de resolver el destino: muchos son de la forma
# `ath11k/WCN6855/hw2.1/regdb.bin -> ../hw2.0/regdb.bin`, y un `..` no resuelve si el
# directorio desde el que cuelga todavía no existe. Medido: con el test hecho antes del
# mkdir fallaban 337 de 2415 y parecía que el tarball venía roto; con el mkdir primero
# resuelven los 2415. El fallo estaba en la comprobación, no en los datos.
mkdir -p "$dir"
if [ ! -e "$dir/$src" ]; then
rmdir "$dir" 2>/dev/null || true # no dejar un directorio vacío de recuerdo
continue
fi
ln -sf "$src" "$dst_abs"
hechos=$((hechos+1))
done < /tmp/whence-links.tsv