diff --git a/.gitea/workflows/build-macos.yml b/.gitea/workflows/build-macos.yml index a256be19c..c7e5ac077 100644 --- a/.gitea/workflows/build-macos.yml +++ b/.gitea/workflows/build-macos.yml @@ -173,20 +173,20 @@ jobs: python3 build.py --flutter --hwcodec --unix-file-copy-paste mkdir -p ./SignOutput - # Patch create-dmg's unmount-attempts upward (CI runners are flaky). - CREATE_DMG="$(command -v create-dmg)" - CREATE_DMG_REAL="$(readlink "$CREATE_DMG" 2>/dev/null || echo "$CREATE_DMG")" - # readlink may return relative; resolve. - [[ "$CREATE_DMG_REAL" == /* ]] || CREATE_DMG_REAL="$(cd "$(dirname "$CREATE_DMG")" && pwd)/$CREATE_DMG_REAL" - sed -i '' -e 's/MAXIMUM_UNMOUNTING_ATTEMPTS=3/MAXIMUM_UNMOUNTING_ATTEMPTS=7/' "$CREATE_DMG_REAL" || true - - create-dmg \ - --icon "RustDesk.app" 200 190 \ - --hide-extension "RustDesk.app" \ - --window-size 800 400 \ - --app-drop-link 600 185 \ - "./SignOutput/rustdesk-${VERSION_DISPLAY}-x86_64.dmg" \ - ./flutter/build/macos/Build/Products/Release/RustDesk.app + # Use hdiutil (not create-dmg) because the runner is a LaunchDaemon + # with no GUI/Finder session. create-dmg drives Finder via AppleScript + # for icon layout and fails with `-10810` in daemon context. hdiutil + # produces a fully functional compressed DMG with no GUI calls. + dmg_staging="$(mktemp -d -t rustdesk-dmg)" + cp -R ./flutter/build/macos/Build/Products/Release/RustDesk.app "$dmg_staging/" + ln -s /Applications "$dmg_staging/Applications" + hdiutil create \ + -volname "RustDesk" \ + -srcfolder "$dmg_staging" \ + -ov \ + -format UDZO \ + "./SignOutput/rustdesk-${VERSION_DISPLAY}-x86_64.dmg" + rm -rf "$dmg_staging" - name: Report signing status of build artifacts shell: bash diff --git a/ci/runners/macos/provision.sh b/ci/runners/macos/provision.sh index 577af3f73..2331720fb 100755 --- a/ci/runners/macos/provision.sh +++ b/ci/runners/macos/provision.sh @@ -106,7 +106,7 @@ brew_as_user() { sudo -u "$BREW_USER" -H "$HOMEBREW_PREFIX/bin/brew" "$@"; } # ---- 3. brew packages ---- log "Installing brew packages" -brew_pkgs=(llvm create-dmg pkg-config cmake ninja yasm autoconf automake libtool wget) +brew_pkgs=(node cocoapods llvm create-dmg pkg-config cmake ninja yasm autoconf automake libtool wget) for p in "${brew_pkgs[@]}"; do if brew_as_user list --versions "$p" >/dev/null 2>&1; then echo " $p (already installed)"