Add crash reporting (bundle CrashReporter, strip, symbols, upload)

- register plugin + ship Installer/crashreporter.json
- installer bundles the shared CrashReporter (mac pkg + component-plist +
  reporter-scripts promote-if-newer; win .iss shared component) and the JSON
- strip shipped mac binaries; emit dSYM (Xcode) and PDB (/Zi /DEBUG) in Release
- launchCrashReporterOnce() from the processor on first instance
- upload dSYM/PDB symbols to the crash site from release.yaml
- bump to 1.0.33
This commit is contained in:
Roland Rabien 2026-07-16 18:18:43 -07:00
commit a681b2e332
10 changed files with 219 additions and 2 deletions

View file

@ -13,6 +13,7 @@
<line choice="com.socalabs.wavetable.au"/>
<line choice="com.socalabs.wavetable.clap"/>
<line choice="com.socalabs.wavetable.resources"/>
<line choice="com.socalabs.wavetable.crashreporter"/>
</choices-outline>
<choice id="com.socalabs.wavetable.vst"
@ -52,9 +53,19 @@
<pkg-ref id="com.socalabs.wavetable.resources.pkg"/>
</choice>
<choice id="com.socalabs.wavetable.crashreporter"
title="Crash Reporter"
description="Install the shared crash reporter that sends crash reports to SocaLabs. Recommended; only updated if newer."
visible="true"
enabled="true"
selected="true">
<pkg-ref id="com.socalabs.wavetable.crashreporter.pkg"/>
</choice>
<pkg-ref id="com.socalabs.wavetable.vst.pkg" version="0">vst.pkg</pkg-ref>
<pkg-ref id="com.socalabs.wavetable.vst3.pkg" version="0">vst3.pkg</pkg-ref>
<pkg-ref id="com.socalabs.wavetable.au.pkg" version="0">au.pkg</pkg-ref>
<pkg-ref id="com.socalabs.wavetable.clap.pkg" version="0">clap.pkg</pkg-ref>
<pkg-ref id="com.socalabs.wavetable.resources.pkg" version="0">resources.pkg</pkg-ref>
<pkg-ref id="com.socalabs.wavetable.crashreporter.pkg" version="0">reporter.pkg</pkg-ref>
</installer-gui-script>

View file

@ -0,0 +1,38 @@
#!/bin/bash
#
# CrashReporter is a SHARED component across all SocaLabs/Rabien plugins, so we
# never downgrade it and never remove it. The pkg payload stages the incoming
# app under .incoming; here we promote it to the live location only if it is
# strictly newer than what's already installed (or nothing is installed yet).
#
set -e
BASE="/Library/Application Support/Rabien Software/Crash Reporter"
NEW="$BASE/.incoming/CrashReporter.app"
LIVE="$BASE/CrashReporter.app"
PB="/usr/libexec/PlistBuddy"
version_of () { # $1 = .app path -> prints CFBundleShortVersionString or 0
if [ -d "$1" ]; then
"$PB" -c "Print :CFBundleShortVersionString" "$1/Contents/Info.plist" 2>/dev/null || echo 0
else
echo 0
fi
}
if [ -d "$NEW" ]; then
newver="$(version_of "$NEW")"
livever="$(version_of "$LIVE")"
# Promote if nothing installed, or the incoming build is strictly newer.
highest="$(printf '%s\n%s\n' "$livever" "$newver" | sort -V | tail -1)"
if [ ! -d "$LIVE" ] || { [ "$highest" = "$newver" ] && [ "$newver" != "$livever" ]; }; then
rm -rf "$LIVE"
mv "$NEW" "$LIVE"
fi
fi
# Always clear the staging area.
rm -rf "$BASE/.incoming"
exit 0