Same move as Timers 1.7.0. The capture tool existed only where the macOS app build had compiled it, with the module trying swiftc on the booth as a fallback — NA has been logging "spawn spl-capture ENOENT" since its catalog install. Under the module guide's rule it now ships built: bin/spl-capture-macos-arm64 and bin/spl-capture-macos-x86_64, signed with the Developer ID (hardened runtime, audio-input entitlement), from native/spl-capture.swift via native/build.sh. captureTool() picks the binary for this platform; where there is none — Windows, until a Windows implementation exists — measurement reports itself off in the health line and the device picker while the module stays mounted. The runtime build and its "building…" state are gone, and the old top-level binary is no longer gitignored. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
49 lines
1.9 KiB
Bash
Executable File
49 lines
1.9 KiB
Bash
Executable File
#!/bin/zsh
|
|
# Build this module's native helper for every macOS architecture it ships —
|
|
# ../bin/spl-capture-macos-arm64 and ../bin/spl-capture-macos-x86_64 —
|
|
# from spl-capture.swift beside this script. Run it on any Mac with the
|
|
# Xcode command line tools; both architectures cross-compile from either.
|
|
# The binaries are committed: a machine running ProdDash never builds
|
|
# anything (docs/MODULE-GUIDE.md, "Native helpers").
|
|
#
|
|
# Signed with a Developer ID Application certificate when one is installed
|
|
# (override with CODESIGN_IDENTITY) — hardened runtime plus the audio-input
|
|
# entitlement, which a helper that reads a microphone needs under the
|
|
# hardened runtime — and ad-hoc otherwise, which is fine on your own Macs.
|
|
#
|
|
# Windows is not built here: there is no Windows implementation of this
|
|
# tool yet, so on Windows the module reports measurement off.
|
|
set -e -u
|
|
cd "$(dirname "$0")"
|
|
|
|
NAME="spl-capture"
|
|
DEPLOYMENT_TARGET="13.0"
|
|
|
|
command -v swiftc >/dev/null || {
|
|
echo "build.sh: swiftc not found — install the Xcode command line tools: xcode-select --install" >&2
|
|
exit 1
|
|
}
|
|
|
|
IDENTITY="${CODESIGN_IDENTITY:-}"
|
|
if [[ -z "$IDENTITY" ]]; then
|
|
IDENTITY=$(security find-identity -v -p codesigning 2>/dev/null \
|
|
| awk -F'"' '/Developer ID Application/ {print $2; exit}')
|
|
fi
|
|
if [[ -n "$IDENTITY" ]]; then
|
|
echo "signing as $IDENTITY"
|
|
SIGN=(--force --sign "$IDENTITY" --options runtime --timestamp)
|
|
else
|
|
echo "signing ad-hoc (no Developer ID installed — fine on your own Macs)"
|
|
SIGN=(--force --sign - --options runtime)
|
|
fi
|
|
|
|
mkdir -p ../bin
|
|
for ARCH in arm64 x86_64; do
|
|
OUT="../bin/$NAME-macos-$ARCH"
|
|
echo " compiling $OUT"
|
|
swiftc -O -whole-module-optimization -target "$ARCH-apple-macos$DEPLOYMENT_TARGET" -o "$OUT" "$NAME.swift"
|
|
codesign "${SIGN[@]}" --entitlements helper.entitlements "$OUT"
|
|
codesign --verify --strict "$OUT"
|
|
echo " built $OUT ($(du -h "$OUT" | awk '{print $1}'))"
|
|
done
|