Skip to content

ci(shorebird): use framework.zip as macos-framework src (xcframework, not single-arch)#151

Merged
eseidel merged 1 commit intoshorebird/devfrom
es/compose-mac-framework-src
May 8, 2026
Merged

ci(shorebird): use framework.zip as macos-framework src (xcframework, not single-arch)#151
eseidel merged 1 commit intoshorebird/devfrom
es/compose-mac-framework-src

Conversation

@eseidel
Copy link
Copy Markdown

@eseidel eseidel commented May 8, 2026

Summary

Follow-up to #150. That PR fixed the dst path so the macOS framework lands at darwin-x64-release/framework.zip (matching legacy). But the src was still wrong: we were uploading the single-arch FlutterMacOS.framework.zip and renaming it on the way up — same dst name, completely different bytes.

create_macos_framework.py --zip produces two zips in dst/:

  • FlutterMacOS.framework.zip — single-arch, double-zipped framework (~17 MB)
  • framework.zip — the xcframework (arm64 + x64) plus codesign config files (entitlements.txt, without_entitlements.txt, unsigned_binaries.txt) (~122 MB)

Legacy mac_upload.sh uploads the second one. This PR points compose at it.

Evidence

Bucket compare at darwin-x64-release/framework.zip:

sharded (post-#150, engine 93865d6) legacy (engine 25c9b21)
size 17,237,143 bytes 121,918,469 bytes
contents single-arch double-zipped framework xcframework + codesign config

The dSYM is unaffected — different src, different dst, sharded matches legacy within 0.01% already.

Test plan

  • After merge, retrigger sharded build_engine into gs://shorebird-build-test
  • Confirm darwin-x64-release/framework.zip is now ~122 MB and contains the xcframework structure
  • Confirm dSYM and other artifacts are unchanged

… not single-arch)

create_macos_framework.py with --zip produces two outputs in dst/:
- FlutterMacOS.framework.zip — single-arch, double-zipped framework
  (~17 MB)
- framework.zip — the xcframework (both arm64 + x64) plus codesign
  config files (entitlements.txt, without_entitlements.txt,
  unsigned_binaries.txt) (~122 MB)

Legacy mac_upload.sh uploads framework.zip (the xcframework). Compose
was uploading the single-arch FlutterMacOS.framework.zip and renaming
it to framework.zip in the bucket via the dst path — same name on
disk, completely different bytes.

Verified by bucket-comparing engine 93865d6 (sharded, post-#150)
against legacy 25c9b21 at the same darwin-x64-release/framework.zip
path: 17,237,143 bytes vs 121,918,469 bytes. After this lands, the
sharded artifact at that path should be the xcframework matching
legacy in size and contents.
@eseidel eseidel requested a review from bdero May 8, 2026 23:17
@eseidel eseidel merged commit 140e33e into shorebird/dev May 8, 2026
7 checks passed
@eseidel eseidel deleted the es/compose-mac-framework-src branch May 8, 2026 23:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants