Two xce-build.sh runs against the same build dir raced: one run's
setup_build rm -rf hit files the other was writing ('Directory not
empty'), or deleted a binary the other had just built and tested.
xce-build.sh now takes an exclusive per-build-dir lock right after cd-ing
into src/ and holds it until it exits; a second run against the same dir
waits, runs against different dirs are unaffected. The lock
(src/tools/build-lock.sh) is an mkdir lock holding the owner PID, outside
the build dir, keyed by a hash of its absolute path; it needs only
coreutils (the nix dev shell has no flock) and takes over a lock whose
owner died. src/tools/test-build-lock.sh tests it.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| appimage | ||
| build-lock.sh | ||
| deploy-ha.sh | ||
| go_build | ||
| test-build-lock.sh | ||
| test-build-version-regression.sh | ||
| test-commit-durability.sh | ||
| test-dirty-fingerprint-distinguishability.sh | ||
| test-dirty-fingerprint-nix-production-path.sh | ||
| test-dirty-fingerprint-startup-log-unchanged.sh | ||
| test-heartbeat-tolerance.sh | ||
| test-version-startup-consistency.sh | ||
| test-xceadmin-build-install-version.sh | ||
| xce-build.sh | ||