A wrapper that accepts standard codesign arguments plus a list of binaries, then distributes the signing work across multiple CPU cores for improved throughput.
codesign_parallel [PARALLEL_OPTIONS] [CODESIGN_OPTIONS...] -- BINARY1 [BINARY2 ...]
Note: unlike with original codesign, -- is a mandatory delimiter before the list of binaries for codesign_parallel.
It is important to sign all frameworks, dylibs and other executables inside the bundle before signing the bundle itself.
Because codesign_parallel does not do dependency resolution whatsoever it is the responsibility of the developer to order
signing appropriately. See an example below in the Examples section.
| Flag | Description |
|---|---|
--parallel=N |
Override auto-detected CPU count with N workers |
--fail-fast |
Kill all workers immediately when any codesign fails (default: power through to the bitter end) |
All other arguments before -- are passed directly to codesign.
# Sign multiple binaries with identity
codesign_parallel -s "Developer ID" --options runtime -- app1 app2 app3
# Limit parallelism to 4 workers
codesign_parallel --parallel=4 -s "Developer ID" -- *.dylib
# Sign all dylibs and Frameworks in an .app
codesign_parallel -s "Developer ID" --options runtime -- \
$(find Something.app -type f -name \*.dylib) \
$(find Something.app -type d -name \*.Framework)
# Then sign the app itself (no need for parallel here)
codesign -s "Developer ID" --options runtime Something.appmake
make installNo homebrew formula yet.
MIT.