@@ -204,7 +204,13 @@ jobs:
204204 for p in glib gtk4 libadwaita gtksourceview5 gdk-pixbuf pango cairo harfbuzz fribidi graphite2 libpng jpeg libtiff libepoxy libffi gettext; do
205205 if [ -d "$BREW_PREFIX/opt/$p/lib" ]; then
206206 mkdir -p "$FRAMEWORKS/$p/lib"
207- rsync -a "$BREW_PREFIX/opt/$p/lib/" "$FRAMEWORKS/$p/lib/"
207+ # Copy only runtime libraries; exclude static archives and dev files
208+ rsync -a --prune-empty-dirs \
209+ --include '*/' \
210+ --include '*.dylib' --include '*.dylib.*' \
211+ --include '*.so' --include '*.so.*' \
212+ --exclude '*' \
213+ "$BREW_PREFIX/opt/$p/lib/" "$FRAMEWORKS/$p/lib/"
208214 fi
209215 if [ -d "$BREW_PREFIX/opt/$p/lib/girepository-1.0" ]; then
210216 mkdir -p "$RES/girepository-1.0"
@@ -216,6 +222,9 @@ jobs:
216222 fi
217223 done
218224
225+ # Ensure no static archives slipped in (can break codesign)
226+ find "$FRAMEWORKS" \( -name '*.a' -o -name '*.la' \) -delete || true
227+
219228 # 4b) Vendor PyGObject (gi) and PyCairo into bundled Python path
220229 for SITE in \
221230 "$BREW_PREFIX/lib/python3.13/site-packages" \
@@ -308,6 +317,9 @@ jobs:
308317 run : |
309318 set -euxo pipefail
310319 APP="dist/SSH Studio.app"
320+ # Ensure files are writable and clear any quarantine attrs
321+ chmod -R u+rw "$APP"
322+ xattr -cr "$APP" || true
311323 # Deep ad-hoc sign the app and embedded content to improve launch reliability
312324 codesign --force --deep --sign - --timestamp=none "$APP"
313325 codesign --verify --deep --verbose=2 "$APP" || (codesign --display --verbose=5 "$APP"; exit 1)
0 commit comments