build: harden the gradle guard wrapper

- cap workers via GRADLE_OPTS instead of a CLI flag, so a caller passing
  --max-workers no longer collides and fails the build
- keep the lock under $XDG_RUNTIME_DIR (falling back to ~/.cache) rather
  than a world-writable /tmp path
- let --stop/--status/--version bypass the lock, and announce when a build
  is waiting for it
- drop the redundant GITHUB_ACTIONS check; the CI runners all set CI
This commit is contained in:
austinried
2026-10-09 07:48:00 +00:00
parent 336fd9c49f
commit 4012cc0272
2 changed files with 18 additions and 4 deletions
+1 -1
View File
@@ -14,7 +14,7 @@ Everything comes from the Nix flake devshell; do not install toolchains by hand.
- The default devshell provides JDK 21, Gradle 9, the Android SDK (platform 37, build-tools 37.0.0, platform-tools 37.0.1) and nushell.
- The integration harness needs real servers, so it lives in a separate `nix develop .#integration` shell (navidrome, gonic, lms, php, Nextcloud with the Music app, sqlite). Keeping them out of the default shell avoids pulling that closure into everyday builds.
- Build with the devshell `gradle`, not `./gradlew`. CI uses the nix Gradle pinned by `flake.lock`; the wrapper is kept only for people without Nix.
- The devshell `gradle` is a wrapper: outside CI it takes a lock (`flock /tmp/subtracks-gradle.lock`) and runs under `nice` with capped workers, so several agents building at once queue instead of exhausting the box. With `CI`/`GITHUB_ACTIONS` set (i.e. CI) it execs Gradle directly, unchanged.
- The devshell `gradle` is a wrapper: outside CI it takes a lock (under `$XDG_RUNTIME_DIR`, falling back to `~/.cache`) and runs under `nice` with a capped worker count, so several agents building at once queue instead of exhausting the box. `--stop`/`--status`/`--version` bypass the lock; with `CI` set it execs Gradle directly, unchanged.
## Commands