Keep build output out of Spotlight

The module build directories are rewritten every job on a machine that
is also the mac-local runner for both app repos, so indexing them lands
in the merge path for everything. `mds_stores` and `mdworker_shared` sit
at the top of CPU while no build process is near it, and the load
average goes into the hundreds.

Measured on the iPhone repo, same from-scratch build twice: it peaks at
load 12.5 with its output excluded and over a hundred without, and the
indexing work stops accumulating rather than trailing the build by
minutes.

The markers are written by the job rather than committed, because the
directories they belong in are created by the build and removed between
runs. The stable caches outside the repo were excluded on the host
itself: DerivedData, the Android SDK, the runner's builds directory and
the Gradle home, 11 GB between them.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Paul Hitt
2026-09-11 08:01:01 -04:00
co-authored by Claude Opus 5
parent fcc81a678a
commit 918f424ddd
+15
View File
@@ -77,6 +77,21 @@ unit-tests:
# survives, and a suite that stopped running entirely would still be
# counted, by the very check meant to notice that it had stopped.
- rm -rf ./*/build/test-results
# Keep the build output out of Spotlight.
#
# The module build directories are rewritten every job on a host that is
# also the mac-local runner for both app repos. Indexing them drives the
# machine to a load average in the hundreds, with `mds_stores` and
# `mdworker_shared` at the top of CPU while no build process is near it.
# Measured on the iPhone repo: the same from-scratch build peaks at load
# ~12 with its output excluded and well over a hundred without.
#
# Written here rather than committed, because the directories these belong
# in are created by the build.
- |
for m in app engine client obfs4; do
mkdir -p "$m/build" && touch "$m/build/.metadata_never_index"
done
# `:obfs4:test` was missing from this list. The module shipped in !77
# with ~100 tests, the Elligator2 port, the framing, the handshake, the
# socket factory, and not one of them ran in CI. A break in the transport