From 1ca210a311ecd2a8f8cd6db07b68853b34b27e99 Mon Sep 17 00:00:00 2001 From: Sergio Date: Thu, 17 Sep 2026 15:19:59 +0000 Subject: [PATCH] =?UTF-8?q?store-gc:=20`xargs=20-d`=20tampoco=20existe=20e?= =?UTF-8?q?n=20busybox=20=E2=80=94=20el=20arreglo=20anterior=20imprim?= =?UTF-8?q?=C3=ADa=20=C2=ABhu=C3=A9rfanos=20=3F=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit El primer intento cambió `du --files0-from=-` (GNU) por `xargs -d '\n' du -sk`… y `-d` también es extensión GNU. En la caja quedó «espacio: superados 0 · huérfanos ?». Va con `tr '\n' '\0' | xargs -0`, que busybox sí tiene, y se probó la función suelta en las dos máquinas. Lo que SÍ funcionó del intento anterior es el `?`: cuando el total no se puede calcular, la función lo DICE en vez de imprimir 0. Un cero inventado habría dicho «no hay nada que ganar» justo cuando había 150 huérfanos. Co-Authored-By: Claude Opus 5 (1M context) --- scripts/store-gc.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/scripts/store-gc.sh b/scripts/store-gc.sh index 5742441f..db3a64e1 100755 --- a/scripts/store-gc.sh +++ b/scripts/store-gc.sh @@ -159,10 +159,13 @@ espacio() { # du sobre una lista de dirs, tolerante a lista vacía # ⚠ `du --files0-from=-` es de GNU coreutils y **busybox no lo tiene** (medido en la caja takana # el 2026-09-17): devolvía vacío, así que el gc anunciaba «espacio: superados · huérfanos » y # nadie podía saber si valía la pena correrlo. Un número que falta se lee como un número chico. - # `xargs du -sk` anda en los dos mundos; el total lo suma awk, en KiB, y se imprime humano. + # `xargs -0 du -sk` anda en los dos mundos; el total lo suma awk, en KiB, y se imprime humano. + # ⚠ `xargs -d '\n'` NO sirve: `-d` también es extensión GNU y busybox la rechaza — el primer + # intento de este arreglo imprimió «huérfanos ?» en la caja. El `?` es a propósito: un total que + # no se pudo calcular se DICE, no se muestra como 0. [ -s "$1" ] || { echo "0"; return; } sed "s|^|$STORE/|" "$1" \ - | xargs -d '\n' du -sk 2>/dev/null \ + | tr '\n' '\0' | xargs -0 du -sk 2>/dev/null \ | awk '{t+=$1} END { if (t=="") {print "?"; exit} if (t>1048576) printf "%.1fG\n", t/1048576;