Not Able to Build Some Versions of Python on M1 at 12.3.1

I trying to build older version of python such as 3.6, 3.7, 3.8 using pyenv and having build failures. I am on apple silicon and the last macOS 12.3.1. In older OS these versions would build fine. Following is the failure I get running pyenv install 3.6.9

python-build: use openssl@1.1 from homebrew

python-build: use readline from homebrew

Downloading Python-3.6.9.tar.xz...

-> https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tar.xz

Installing Python-3.6.9...

python-build: use readline from homebrew

python-build: use zlib from xcode sdk



BUILD FAILED (OS X 12.3.1 using python-build 20180424)



Inspect or clean up the working tree at /var/folders/sn/46fncn513kng4ssgwn398m5h0000gn/T/python-build.20220403110510.8666

Results logged to /var/folders/sn/46fncn513kng4ssgwn398m5h0000gn/T/python-build.20220403110510.8666.log



Last 10 log lines:

checking for --with-cxx-main=<compiler>... no

checking for clang++... no

configure:



  By default, distutils will build C++ extension modules with "clang++".

  If this is not intended, then set CXX on the configure command line.

  

checking for the platform triplet based on compiler characteristics... darwin

configure: error: internal configure error for the platform triplet, please file a bug report

make: *** No targets specified and no makefile found.  Stop.
Answered by mikeyh in 709427022

Using pyenv 2.25 from homebrew on Apple Silicon with macOS 12.3.1 (21E258) / Xcode 13.3 (13E113).

For 3.6.15 you'll need this merged but unreleased pyenv patch: https://raw.githubusercontent.com/pyenv/pyenv/master/plugins/python-build/share/python-build/patches/3.6.15/Python-3.6.15/0008-bpo-45405-Prevent-internal-configure-error-when-runn.patch in /opt/homebrew/Cellar/pyenv/2.2.5/plugins/python-build/share/python-build/patches/3.6.15/Python-3.6.15/

For 3.7.12 you'll need this merged but unreleased pyenv patch: https://raw.githubusercontent.com/pyenv/pyenv/master/plugins/python-build/share/python-build/patches/3.7.12/Python-3.7.12/0004-bpo-45405-Prevent-internal-configure-error-when-runn.patch in /opt/homebrew/Cellar/pyenv/2.2.5/plugins/python-build/share/python-build/patches/3.7.12/Python-3.7.12/

3.7.13 is unreleased and currently missing merged 3.7.12 patch.

https://github.com/pyenv/pyenv/tree/fb97a9c2bd8c0e7b582d4b525cd348cc2ed5359a/plugins/python-build/share/python-build/patches/3.7.13/Python-3.7.13

No issues with 3.8.13 build.

pyenv versions
* system (set by /Users/admin/.pyenv/version)
 3.6.15
 3.7.12
 3.8.13

I tried to build these versions from the source and still get build failure. For example building 3.6.9 from source results in the following.

./configure checking build system type... arm-apple-darwin21.4.0 checking host system type... arm-apple-darwin21.4.0 checking for python3.6... no checking for python3... python3 checking for --enable-universalsdk... no checking for --with-universal-archs... no checking MACHDEP... darwin checking for --without-gcc... no checking for --with-icc... no checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking how to run the C preprocessor... gcc -E checking for grep that handles long lines and -e... /usr/bin/grep checking for a sed that does not truncate output... /usr/bin/sed checking for --with-cxx-main=... no checking for g++... no configure:

By default, distutils will build C++ extension modules with "g++". If this is not intended, then set CXX on the configure command line.

checking for the platform triplet based on compiler characteristics... darwin configure: error: internal configure error for the platform triplet, please file a bug report

Accepted Answer

Using pyenv 2.25 from homebrew on Apple Silicon with macOS 12.3.1 (21E258) / Xcode 13.3 (13E113).

For 3.6.15 you'll need this merged but unreleased pyenv patch: https://raw.githubusercontent.com/pyenv/pyenv/master/plugins/python-build/share/python-build/patches/3.6.15/Python-3.6.15/0008-bpo-45405-Prevent-internal-configure-error-when-runn.patch in /opt/homebrew/Cellar/pyenv/2.2.5/plugins/python-build/share/python-build/patches/3.6.15/Python-3.6.15/

For 3.7.12 you'll need this merged but unreleased pyenv patch: https://raw.githubusercontent.com/pyenv/pyenv/master/plugins/python-build/share/python-build/patches/3.7.12/Python-3.7.12/0004-bpo-45405-Prevent-internal-configure-error-when-runn.patch in /opt/homebrew/Cellar/pyenv/2.2.5/plugins/python-build/share/python-build/patches/3.7.12/Python-3.7.12/

3.7.13 is unreleased and currently missing merged 3.7.12 patch.

https://github.com/pyenv/pyenv/tree/fb97a9c2bd8c0e7b582d4b525cd348cc2ed5359a/plugins/python-build/share/python-build/patches/3.7.13/Python-3.7.13

No issues with 3.8.13 build.

pyenv versions
* system (set by /Users/admin/.pyenv/version)
 3.6.15
 3.7.12
 3.8.13

Hi @mikeyh, thanks for your solution! Indeed, there is no issue with 3.8.13. However, I need python 3.8.9 or under. I checked pyenv's github page, but I can't find patches for 3.8.*. Do you know how to solve the problem? Thanks a lot.

Not Able to Build Some Versions of Python on M1 at 12.3.1
 
 
Q