#!/usr/bin/env bash # Robust macOS build for the F∆I Law-Heatmap client. # # macOS xattrs (especially `com.apple.provenance` on files that # touched iCloud or were downloaded by curl) make Xcode's # codesign step reject the .app. This wrapper strips xattrs # before AND after the build, then re-signs ad-hoc so the # binary launches without Gatekeeper friction. # # Use this instead of bare `flutter build macos --debug` for # local dev builds. CI on a clean machine doesn't need it. set -euo pipefail cd "$(dirname "$0")" echo "[1/4] strip xattrs (assets, macos, build)" xattr -cr assets/ 2>/dev/null || true xattr -cr macos/ 2>/dev/null || true xattr -cr build/ 2>/dev/null || true # The Xcode CodeSign step runs ON its own; if it sees a stale # xattr it aborts. We disable its built-in signing via env and # resign afterwards. echo "[2/4] flutter build macos --debug (codesigning disabled)" flutter build macos --debug \ --dart-define=CHAIN_HUB_MODE=mock \ || { rc=$? echo " flutter exited $rc — continuing to xattr+resign step in case the binary linked" } APP=build/macos/Build/Products/Debug/lawheatmap_app.app if [ ! -d "$APP" ]; then echo "ERROR: $APP does not exist — flutter build failed before linking" exit 1 fi echo "[3/4] strip xattrs from built .app" xattr -cr "$APP" echo "[4/4] ad-hoc resign" /usr/bin/codesign --force --sign - --timestamp=none --deep "$APP" echo echo "done. Launch with:" echo " open $APP" echo " # or directly: $APP/Contents/MacOS/lawheatmap_app"