Skip to content

iOS builds do not protect against linking in dynamic libraries. #2493

@freakboy3742

Description

@freakboy3742

Description

iOS has very stringent requirements for dynamic linking. It does not allow simple .dylibs; all dynamically loaded content must be packaged as Frameworks.

As a result, binary modules build by cibuildwheel should statically link all third-party code.

However, cibuildwheel doesn't currently protect against this.

Pillow 11.3.0 recently added iOS wheels; but those wheels inadvertently included a dynamically linked libjpeg.6.2.dylib - something that wasn't detected until the wheel was published (as the dynamic library existed in the linked location during CI testing). See python-pillow/Pillow#9079 for details.

cibuildwheel should add a dynamic linking audit to the iOS backend.

This is strictly an enhancement, as cibuildwheel is currently working "as intended"; but the fact that it's possible to produce invalid iOS wheels with a fairly trivial misconfiguration makes this a fairly important enhancement.

Build log

https://github.com/beeware/Python-support-testbed/actions/runs/15817251844

CI config

No response

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions