diff --git a/scripts/package-mac-dist.sh b/scripts/package-mac-dist.sh index 8f5e4dad6b..6a57aa5245 100755 --- a/scripts/package-mac-dist.sh +++ b/scripts/package-mac-dist.sh @@ -9,6 +9,9 @@ set -euo pipefail # - dist/OpenClaw-.dmg ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)" +BUILD_ROOT="$ROOT_DIR/apps/macos/.build" +PRODUCT="OpenClaw" +BUILD_CONFIG="${BUILD_CONFIG:-release}" # Default to universal binary for distribution builds (supports both Apple Silicon and Intel Macs) export BUILD_ARCHS="${BUILD_ARCHS:-all}" @@ -25,8 +28,10 @@ VERSION=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "$APP/Co ZIP="$ROOT_DIR/dist/OpenClaw-$VERSION.zip" DMG="$ROOT_DIR/dist/OpenClaw-$VERSION.dmg" NOTARY_ZIP="$ROOT_DIR/dist/OpenClaw-$VERSION.notary.zip" +DSYM_ZIP="$ROOT_DIR/dist/OpenClaw-$VERSION.dSYM.zip" SKIP_NOTARIZE="${SKIP_NOTARIZE:-0}" NOTARIZE=1 +SKIP_DSYM="${SKIP_DSYM:-0}" if [[ "$SKIP_NOTARIZE" == "1" ]]; then NOTARIZE=0 @@ -54,3 +59,31 @@ if [[ "$NOTARIZE" == "1" ]]; then fi "$ROOT_DIR/scripts/notarize-mac-artifact.sh" "$DMG" fi + +if [[ "$SKIP_DSYM" != "1" ]]; then + DSYM_ARM64="$(find "$BUILD_ROOT/arm64" -type d -path "*/$BUILD_CONFIG/$PRODUCT.dSYM" -print -quit)" + DSYM_X86="$(find "$BUILD_ROOT/x86_64" -type d -path "*/$BUILD_CONFIG/$PRODUCT.dSYM" -print -quit)" + if [[ -n "$DSYM_ARM64" || -n "$DSYM_X86" ]]; then + TMP_DSYM="$ROOT_DIR/dist/$PRODUCT.dSYM" + rm -rf "$TMP_DSYM" + if [[ -n "$DSYM_ARM64" && -n "$DSYM_X86" ]]; then + cp -R "$DSYM_ARM64" "$TMP_DSYM" + DWARF_OUT="$TMP_DSYM/Contents/Resources/DWARF/$PRODUCT" + DWARF_ARM="$DSYM_ARM64/Contents/Resources/DWARF/$PRODUCT" + DWARF_X86="$DSYM_X86/Contents/Resources/DWARF/$PRODUCT" + if [[ -f "$DWARF_ARM" && -f "$DWARF_X86" ]]; then + /usr/bin/lipo -create "$DWARF_ARM" "$DWARF_X86" -output "$DWARF_OUT" + else + echo "WARN: Missing DWARF binaries for dSYM merge (continuing)" >&2 + fi + else + cp -R "${DSYM_ARM64:-$DSYM_X86}" "$TMP_DSYM" + fi + echo "🧩 dSYM: $DSYM_ZIP" + rm -f "$DSYM_ZIP" + ditto -c -k --keepParent "$TMP_DSYM" "$DSYM_ZIP" + rm -rf "$TMP_DSYM" + else + echo "WARN: dSYM not found; skipping zip (set SKIP_DSYM=1 to silence)" >&2 + fi +fi