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?

Python.org 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 python.org 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
90

file *.dylib | grep arm64 | wc -l
90

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:

wxPython-4.1.2a1.dev5268+fcf49322-cp39-cp39-macosx_10_10_universal2.whl

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

Looks like this is progressively getting better :slight_smile: