archlinux-s390x/scripts
Mathieu Benoit 92c5850e53 [FIX] driver: kill a build that has stopped producing output
python's PKGBUILD hunts for a free X display before running make:

  export servernum=99
  while ! xvfb-run -a -n "$servernum" /bin/true 2>/dev/null; do
      servernum=$((servernum+1)); done

xvfb-run is not installed here. It exits 127, `!` inverts that to true, and
the loop tries the next number. There is no exit condition for "the command
does not exist", and the 2>/dev/null swallows the one line that would have
said so.

Measured before anyone noticed: ten hours of wall clock, four million PIDs,
and a log frozen at `configure: creating Makefile`. Every signal said the
build was healthy -- alive, 40% CPU, sitting in a plausible source directory.
A process list cannot tell work from spinning. A stalled log next to a live
makepkg can, and that is all this guard does.

Forty-five minutes of COMPLETE silence, because real builds do go quiet: a
long link, a test suite that prints nothing, gcc between bootstrap stages.
The case this was written for ran two hundred times longer. EL_STALL_MIN=0
disables it.

Tested against a real spin loop: detected, whole process tree killed, rc=2 so
STALL reads differently from FAIL in the summary.

--- FR ---

Le PKGBUILD de python cherche un numéro d'affichage X libre avant make :

  export servernum=99
  while ! xvfb-run -a -n "$servernum" /bin/true 2>/dev/null; do
      servernum=$((servernum+1)); done

xvfb-run n'est pas installé ici. Il sort en 127, le `!` inverse, et la boucle
essaie le numéro suivant. Il n'existe aucune condition de sortie pour « la
commande n'existe pas », et le 2>/dev/null avale la seule ligne qui l'aurait
dit.

Mesuré avant que quiconque s'en aperçoive : dix heures d'horloge, quatre
millions de PID, un journal figé à `configure: creating Makefile`. Tous les
signaux disaient que le build allait bien — vivant, 40 % de CPU, dans un
répertoire source plausible. Une liste de processus ne distingue pas le
travail du sur-place. Un journal figé à côté d'un makepkg vivant, si — et
c'est tout ce que fait ce garde-fou.

Quarante-cinq minutes de silence COMPLET, car de vrais builds se taisent :
une longue édition de liens, une suite de tests muette, gcc entre deux étages.
Le cas qui l'a motivé a tourné deux cents fois plus longtemps. EL_STALL_MIN=0
le désactive.

Éprouvé contre une vraie boucle infinie : détecté, arbre de processus tué en
entier, rc=2 pour que STALL se lise autrement que FAIL dans le bilan.

Assisted-by: Claude Opus 5
2026-08-19 19:53:46 -04:00
..
devtools [FIX] libdir: the Debian host hid the libraries from Arch 2026-08-17 01:33:41 -04:00
bootstrap-pacman.sh [ADD] stage 2: the rebuild loop, and git to feed it 2026-08-19 08:56:41 -04:00
build-arch-kernel.sh making the house a home 2026-01-27 23:26:31 +01:00
build-busybox-zvm.sh making the house a home 2026-01-27 23:26:31 +01:00
build-container.sh making the house a home 2026-01-27 23:26:31 +01:00
build-initramfs-final.sh making the house a home 2026-01-27 23:26:31 +01:00
build-stage1.sh [FIX] driver: kill a build that has stopped producing output 2026-08-19 19:53:46 -04:00
build-stage2.sh [ADD] stage 2: the rebuild loop, and git to feed it 2026-08-19 08:56:41 -04:00
build-systemd-zvm.sh making the house a home 2026-01-27 23:26:31 +01:00
common.sh cleaned up scripts to be more DRY 2025-06-05 20:48:16 +02:00
create-rootfs.sh making the house a home 2026-01-27 23:26:31 +01:00
deploy-and-build-systemd-zvm.sh cleaned up scripts to be more DRY 2025-06-05 20:48:16 +02:00
prepare-boot.sh making the house a home 2026-01-27 23:26:31 +01:00
test-chroot.sh [FIX] test-chroot: an audit that classifies, and one that was wrong 2026-08-19 06:40:50 -04:00
test-qemu.sh cleaned up scripts to be more DRY 2025-06-05 20:48:16 +02:00
zvm-utils.sh cleaned up scripts to be more DRY 2025-06-05 20:48:16 +02:00