-
-
Notifications
You must be signed in to change notification settings - Fork 3.3k
Description
Summary
The LibSignalClient podspec uses always_out_of_date: '1' on its download script phase, which invalidates Xcode's compilation cache for all downstream targets. This causes extremely poor incremental build performance.
Impact (measured with Argus)
| Metric | Current | With Fix |
|---|---|---|
| Build time (SignalServiceKit) | 99s | 16s |
| Cache hits | 0.1% (4/3555) | 91.3% (2789/3054) |
6x faster incremental builds.
Root Cause
In libsignal commit 330669b, always_out_of_date: '1' was added with the comment:
"It's not ideal to check the cache every build, but it's usually just a shasum. [...] This Is Fine."
The script itself is fast, but always_out_of_date invalidates Xcode's entire downstream compilation cache - not just the script phase.
Fix
PR opened on libsignal: signalapp/libsignal#638
Replace always_out_of_date with proper input_files/output_files declarations. Safety is maintained by existing checksum verification in fetch_archive.py.