Skip to content

20260730

Latest

Choose a tag to compare

@github-actions github-actions released this 30 Jul 22:07
91eff8c
Fix macOS framework layout so the inner bundle can be signed (#39)

The signing job failed on every python-macos-dart archive with:

  Python.framework: unsealed contents present in the root directory of
  an embedded framework

macOS frameworks are VERSIONED bundles: everything at the framework root must be
a symlink into Versions/Current, and only `Versions` itself may be a real
directory. package-macos-for-dart.sh wrote the overlaid `Modules` and the public
`Headers` as real directories at the root. That was invisible while only the
outer xcframework was signed -- the outer seal does not care -- and became fatal
the moment the inner framework was signed in its own right.

They now go into Versions/Current with symlinks at the root, which is both what
codesign requires and what CPython's own macOS framework already does for Headers
and Resources. Consumers resolve Headers/ and Modules/ through the symlinks
exactly as before.

Also fixes the verifier, which was wrong in a way the same run exposed: it probed
for `_CodeSignature` or `Versions/A/_CodeSignature`, but a versioned bundle's
version directory is not always "A" -- CPython's macOS framework uses
Versions/3.14 -- so a correctly signed macOS framework was reported as unsigned.
It now asks `codesign -dv`, which is layout-agnostic and is the actual question.

Verified with the real identity against the released 20260729 macOS archive:
inner and outer both sign and verify, dart_bridge v1.7.1 (Versions/A) still
verifies, and stripping the inner signature still fails the run.