From 6fa55b7c255564fbc7ee798babcd4d215416b1ed Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Tue, 2 Jun 2026 09:49:04 +1000 Subject: [PATCH] build_osx: zip and upload .app bundles to S3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The existing "Package .zip archives" step only sweeps \`\$install_root/bin/\` for plain executable files (via \`find -type f -perm /111\`). That captures \`IfcConvert\` and \`IfcGeomServer\` but misses macOS app bundles entirely: - BonsaiViewer.app installs at \`\$install_root/BonsaiViewer.app\` (BUNDLE DESTINATION ".") — not under bin/, and it's a directory, not a file. So the prior bonsai macOS CI run got a green tick but the ifcopenshell-builds S3 bucket only ended up with IfcConvert + IfcGeomServer + the python wheel — no BonsaiViewer. Add a second packaging pass that finds \`*.app\` directories at the install-prefix root and zips each one as-is. macdeployqt has already embedded the Qt frameworks inside the bundle during install/strip, so no extra dependency staging is needed. Co-Authored-By: Claude Opus 4.7 --- .github/workflows/build_osx.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/workflows/build_osx.yml b/.github/workflows/build_osx.yml index 251710ec49..b4de5e2e8c 100644 --- a/.github/workflows/build_osx.yml +++ b/.github/workflows/build_osx.yml @@ -171,6 +171,18 @@ jobs: rm -rf "$package_dir" done + # .app bundles (e.g. BonsaiViewer.app) live at the install-prefix + # root because their install rule uses `BUNDLE DESTINATION "."` — + # that's the layout Qt's macdeployqt expects. macdeployqt has + # already embedded the Qt frameworks inside each bundle during + # install/strip, so we zip the .app as-is. + find "$install_root" -maxdepth 1 -type d -name "*.app" | while read app_path; do + app=`basename "$app_path" .app` + pushd "$install_root" > /dev/null + zip -qq -r "$HOME/output/${app}-${VERSION}-${GITHUB_SHA:0:7}-macos${{ matrix.oldarch }}64.zip" "$(basename "$app_path")" + popd > /dev/null + done + - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v6 with: