fix(build): strip dangling symlinks so macOS builds aren't "damaged" (#30)

A local macOS tester reported the DMG as "damaged and can't be opened."
Root cause: the bundled tree contained a dangling symlink — rig_builder
ships a build-time link `vst/src/racks/DPF` -> DISTRHO framework that isn't
present at runtime. A broken symlink is harmless on Linux/squashfs (the
AppImage was fine), but on macOS it:
  - breaks codesign — `spctl` reports "a sealed resource is missing or
    invalid", which Gatekeeper surfaces as "damaged"; and
  - breaks `xattr -dr com.apple.quarantine` — it aborts on the dangling
    link, so even the quarantine-removal workaround can't complete.

Strip dangling symlinks from the cloned core+plugins tree after bundling
(safe on every platform — they're broken/unused). Verified on-device:
after removal + ad-hoc re-sign the app verifies clean and launches once
quarantine is cleared.

Also fix build-macos.sh's artifact check, which still globbed the
pre-rebrand `Slopsmith.app` and falsely reported "No artifacts found" for
the now `feedback.app` bundle.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Byron Gamatos
2026-06-21 08:19:59 +02:00
committed by GitHub
co-authored by Claude Opus 4.8
parent cb1915f745
commit 7b7a5b59da
2 changed files with 19 additions and 4 deletions
+5 -4
View File
@@ -153,11 +153,12 @@ bundle_python_impl() {
# Platform-specific: Return expected artifact patterns
get_expected_artifacts() {
# mac.target is "dir": electron-builder writes the unpacked
# Slopsmith.app to release/mac-arm64/ (no .dmg/.zip). Velopack's
# <productName>.app to release/mac-arm64/ (no .dmg/.zip). Velopack's
# pack step turns that .app into the actual release assets. Glob
# mac*/ so the check also passes for an x64 (mac/) or universal
# (mac-universal/) local build — verify_artifacts expands this.
printf "%s\n" "$PROJECT_DIR/release/mac*/Slopsmith.app"
# mac*/*.app so the check matches the productName-derived bundle name
# (now feedback.app, not the pre-rebrand Slopsmith.app) and also passes
# for an x64 (mac/) or universal (mac-universal/) local build.
printf "%s\n" "$PROJECT_DIR/release/mac*/*.app"
}
# Platform-specific: Bundle system binaries