Skip to content
Snippets Groups Projects
  • Matt Harbison's avatar
    dd804d83
    setup: drop legacy osx compiler tuning to enable universal builds · dd804d83
    Matt Harbison authored
    This was triggering deprecation warnings about migrating to `packaging.version`
    from `distutils` Version classes with `make local`.  But rather than migrate
    that code, let's just get rid of some ~10-12 year old workarounds.  As a bonus,
    the cext libraries that are built are now universal binaries containing x86_64
    and arm64 images (at least when built on macOS 11.4 with Xcode 12.5 and the
    universal version of Python 3.9.13).
    
    Several things to note here:
    
       - Apple dropped support for 10.15 in Nov 2022, and OS X Lion that is
         referenced is 10.7 (unsupported since late 2014)
       - `xcode4` was basically always True because of the `>=` check (10.8 used
         Xcode 5, and I have Xcode 10.2 on 10.14)
       - `xcode51` was always False for modern-ish Xcode, because of the exact
         version string matching
       - Python 3.8 only supports OS X 10.9+; the Python 3.9.1+ universal installer
         is macOS 11+ only, and Python 3.10 drops the x86_64 installer to deliver
         only the universal installer.
    
    All of this is to say, the only thing lost by dropping this code on modern Xcode
    is that `os.environ['ARCHFLAGS'] = ''` is no longer set.  But we probably
    shouldn't be setting that anymore, as shown by the universal libraries now being
    generated.  I was able to `make local` and `python3 run-tests.py --local` with
    python 3.9.9, Xcode 10.2, and macOS 10.14.6, and didn't incur any more than the
    usual few test errors, so this should still work on some older versions of
    macOS.
    dd804d83
    History
    setup: drop legacy osx compiler tuning to enable universal builds
    Matt Harbison authored
    This was triggering deprecation warnings about migrating to `packaging.version`
    from `distutils` Version classes with `make local`.  But rather than migrate
    that code, let's just get rid of some ~10-12 year old workarounds.  As a bonus,
    the cext libraries that are built are now universal binaries containing x86_64
    and arm64 images (at least when built on macOS 11.4 with Xcode 12.5 and the
    universal version of Python 3.9.13).
    
    Several things to note here:
    
       - Apple dropped support for 10.15 in Nov 2022, and OS X Lion that is
         referenced is 10.7 (unsupported since late 2014)
       - `xcode4` was basically always True because of the `>=` check (10.8 used
         Xcode 5, and I have Xcode 10.2 on 10.14)
       - `xcode51` was always False for modern-ish Xcode, because of the exact
         version string matching
       - Python 3.8 only supports OS X 10.9+; the Python 3.9.1+ universal installer
         is macOS 11+ only, and Python 3.10 drops the x86_64 installer to deliver
         only the universal installer.
    
    All of this is to say, the only thing lost by dropping this code on modern Xcode
    is that `os.environ['ARCHFLAGS'] = ''` is no longer set.  But we probably
    shouldn't be setting that anymore, as shown by the universal libraries now being
    generated.  I was able to `make local` and `python3 run-tests.py --local` with
    python 3.9.9, Xcode 10.2, and macOS 10.14.6, and didn't incur any more than the
    usual few test errors, so this should still work on some older versions of
    macOS.