Skip to content

chore: libhdf5 xcframework zips rebuilt without AppleDouble entries, resolved as -r2 assets - #55

Merged
Paullo9 merged 2 commits into
mainfrom
issue-32-rebuild-xcframework-zips
Nov 2, 2026
Merged

Paullo9 merged 2 commits into
mainfrom
issue-32-rebuild-xcframework-zips

Conversation

@Paullo9

@Paullo9 Paullo9 commented Oct 31, 2026

Copy link
Copy Markdown
Contributor

Requested by Paul · project thread

Part of #32

Do not merge before the upload below. Until the three -r2 zips are on the 0.4.0 release, a consumer resolving this commit by URL gets a 404.

What changes

  • The libhdf5 xcframework zips are rebuilt with tools/xcframework/build.sh (which since chore: libhdf5 xcframework zips without AppleDouble entries, checked with codesign --strict #41 zips with ditto --norsrc --noextattr and checks the result).
  • Package.swift resolves them as FormatoLibHDF5-r2.xcframework.zip, FormatoLibSZ-r2.xcframework.zip and FormatoLibAEC-r2.xcframework.zip on the existing 0.4.0 release, with the new checksums. A new suffix xcframeworkRebuild = "-r2" builds the asset name.
  • The old assets are not replaced. Every tag up to 0.11.0 pins the old checksums, so the old zips must stay on the release under their current names, or those tags stop resolving.
  • tools/xcframework/build.sh: the header now says how to upload a rebuild beside the old assets, with a new suffix, instead of creating a release.

Checks on the rebuilt zips

  • zipinfo -1: 14 entries per zip, no ._* or __MACOSX entries (the 0.4.0 zips have 13 ._* entries each).
  • Unzipped into a temp folder, codesign --verify --deep --strict on each .framework: "valid on disk" and "satisfies its Designated Requirement" for all three.
  • swift package compute-checksum matches shasum -a 256 and the values in Package.swift.
  • swift package dump-package resolves the three -r2 URLs.
  • The gate builds the xcframeworks locally (FORMATO_LOCAL_XCFRAMEWORKS), so CI on this PR checks the manifest and the tests, not the URLs. The xcframework-url job checks the URLs once this is on main.

What Paul uploads

The zips are in ~/GitHub/.worktrees/FormatoKit-32-release/ (copies of dist/xcframeworks/*.zip under the release names).

File sha256 Package.swift checksum line it replaces
FormatoLibHDF5-r2.xcframework.zip c16fd49b1935fd3c1be47bc391417894ecd0e1122dfda999f91129060b41925e ("FormatoLibHDF5", "8b6b74bc…d236")
FormatoLibSZ-r2.xcframework.zip c41dd18fedd12bcbc9dbbb79cc331c7244ac9d3ec3e4f712b20457d3063fdb52 ("FormatoLibSZ", "52388745…0a28d")
FormatoLibAEC-r2.xcframework.zip fd8fed678701cc671ba4a7880f577485b0283634113e39ca05f949cbcee759ad ("FormatoLibAEC", "bef7dd23…d28518")

Steps:

  1. Upload the three files to the existing 0.4.0 release, next to the old ones (do not delete or overwrite the old assets):
    gh release upload 0.4.0 ~/GitHub/.worktrees/FormatoKit-32-release/FormatoLib{HDF5,SZ,AEC}-r2.xcframework.zip -R mac4DSTEM/FormatoKit
  2. Optional check: gh api repos/mac4DSTEM/FormatoKit/releases/tags/0.4.0 --jq ".assets[].name" should list six zips.
  3. Merge this PR. The xcframework-url job on main then resolves the new URLs with these checksums.

What remains for #32

  • The upload and the merge above, then a green xcframework-url run on main.
  • Archive one app that links FormatoHDF5 and record codesign --verify --deep --strict on the archive. That needs a signed archive, so it is left to Paul.

🤖 Generated with Claude Code

…resolved as -r2 assets

Package.swift now resolves FormatoLib{HDF5,SZ,AEC}-r2.xcframework.zip on the 0.4.0
release, with the checksums of zips rebuilt by tools/xcframework/build.sh (ditto
--norsrc --noextattr). The old assets stay on the release under their own names, so
every tag up to 0.11.0 still resolves with the checksums it pins. build.sh documents
the rebuild-suffix upload instead of gh release create.

Each zip lists no ._ entries (zipinfo), and each framework unzipped from it passes
codesign --verify --deep --strict. Checksums match swift package compute-checksum.

Done: rebuilt zips and Package.swift pointing at them. Next: the owner uploads the three
-r2 zips to the 0.4.0 release before this merges, then xcframework-url runs on main.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Paullo9 Paullo9 self-assigned this Oct 31, 2026
@Paullo9
Paullo9 enabled auto-merge (squash) November 2, 2026 09:53
@Paullo9
Paullo9 merged commit fe8b3eb into main Nov 2, 2026
7 checks passed
@Paullo9
Paullo9 deleted the issue-32-rebuild-xcframework-zips branch November 2, 2026 09:57
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.

1 participant