Mac OS X Universal/Arm/Intel

I’m starting an update of an old wxPython Mac app. I want to be ready to use the wxPy 4.1.2 release, so am happy to work with snapshots in the mean time. But which snapshot to use? has a 3.10 series release (3.10.1) for Universal2 only.
The more mature 3.9 series has releases for Intel only and Universal1.
I assume Universal2 is the future and what I should go with.

However the wxpy snapshot directory only has one Universal2 release.

  • wxPython-4.1.2a1.dev5259+d3bdb143-cp38-cp38-macosx_11_0_universal2.whl

This is for Python3.8, and the only has builds for 3.8.10 (2 releases behind the latest 3.8.12 as it is now only in security release in source code only - no official builds).

There are snapshots for Python 3.9/3.10 but they seem to be for ARM only.

  • wxPython-4.1.2a1.dev5259+d3bdb143-cp39-cp39-macosx_12_0_arm64.whl
  • wxPython-4.1.2a1.dev5259+d3bdb143-cp310-cp310-macosx_12_0_arm64.whl

My preference is to go with 3.9 or 3.10 Universal.
Where are the wxPy snapshots for 3.9/3.10 universal?

What is the situation for macosx releases - present and future?

What should I be developing with and targeting to support relatively recent Intel and M1 systems?

Thanks, Brendan.

1 Like

Today I decided ot download the “arm” wheels and unzip them to see what was inside.

unzip wxPython-4.1.2a1.dev5261+04c2cc39-cp310-cp310-macosx_12_0_arm64.whl

Looks like these might be “universal” wheels after all, as there seems to be arm64 and x86_64 dynamic libraries.

file *.dylib | grep x86_64 | wc -l

file *.dylib | grep arm64 | wc -l

Is this correct? Are these wheels really universal wheels?

If so, shouldn’t they be named “universal” instead of “arm” (for clarity) ?

Thanks, Brendan.

Yes they are universal binaries. The parts of the file names after the version number are generated by Python and/or setuptools, and I haven’t yet looked into why it’s acting like a single architecture build. I do replace most of the build part of the process, and there is a small hack in place to let the wheel phase know that the build phase was already done. So it may just need another tweak in there.

1 Like

Thanks for the clarification Robin.

I see the 2021-12-29 build now has the “universal2” extension for the macosx cp310 build :slight_smile:

The cp38 and cp39 builds have the “x86_64” extension, and there is no builds with “arm64” extension.

However, they are all approximately the same size (47MB) so I assume they are all “universal2” builds.

The 2021-12-31 build now has “universal2” for cp39 :slight_smile:


Now only cp38 has the “x86_64” extension instead of “universal2”.

Looks like this is progressively getting better :slight_smile: