Skip to content

Build performance: LibSignalClient podspec causes 0.1% cache hit rate #6165

@jsj

Description

@jsj

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions