"pyenv install 3.9.4" が失敗した話

ふと思い立って "brew update" -> "brew upgrade" をしたあと、"pyenv install 3.9.4" をしたら、Python のビルドに失敗した。 "pyenv install 3.9.4" を実行したときの画面出力はもう失ってしまったが、"/var/folders/<省略>/python-build.<日時>.<番号>/Python-3.9.4/config.log" を見ろと書いてあった。 "config.log" にはこんなエラーが出ていた。

configure:3926: checking whether the C compiler works
configure:3948: clang -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include   -I/usr/local/opt/readline/include -I/usr/local/opt/readline/include -I/Users/failfast/.pyenv/versions/3.9.4/include  -L/usr/local/opt/readline/lib -L/usr/local/opt/readline/lib -L/Users/failfast/.pyenv/versions/3.9.4/lib  -L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib conftest.c  >&5
clang: error: invalid version number in 'MACOSX_DEPLOYMENT_TARGET=11.2'
configure:3952: $? = 1
configure:3990: result: no
configure: failed program was:
| /* confdefs.h */
| #define _GNU_SOURCE 1
| #define _NETBSD_SOURCE 1
| #define __BSD_VISIBLE 1
| #define _DARWIN_C_SOURCE 1
| #define _PYTHONFRAMEWORK ""
| /* end confdefs.h.  */
| 
| int
| main ()
| {
| 
|   ;
|   return 0;
| }
configure:3995: error: in `/var/folders/yn/rrz35k051713kwrv5j2mw8d40000gn/T/python-build.20210410220429.44736/Python-3.9.4':
configure:3997: error: C compiler cannot create executables
See `config.log' for more details

clang で単純な C プログラムをビルドできるかどうか試したがエラーで終了したようだ。そして、そのエラーは、"invalid version number in 'MACOSX_DEPLOYMENT_TARGET=11.2'"。 この macOS のバージョンは Big Sur 11.2.3 だけど、clang さんはこの 11.2 というバージョンをご存知ではないようだ。

failfast@iMac ~ % /bin/ls -1 /Library/Developer/CommandLineTools/SDKs
MacOSX.sdk
MacOSX10.14.sdk
MacOSX10.15.sdk
failfast@iMac ~ % 

このエラーの原因は、Command Line Tools for Xcode が古かったこと。新しいバージョンに含まれている clang を使わなければならない。 https://developer.apple.com/download/more/ から "Command Line Tools for Xcode 12.4" をダウンロードしてインストールした。("softwraeupdate --all --install --force" と実行することでもアップグレードできるらしい。)

failfast@iMac ~ % /bin/ls -l /Library/Developer/CommandLineTools/SDKs
total 0
lrwxr-xr-x  1 root  wheel   14  4 10 22:31 MacOSX.sdk -> MacOSX11.1.sdk
drwxr-xr-x  7 root  wheel  224  1 16  2020 MacOSX10.14.sdk
drwxr-xr-x  8 root  wheel  256  4 10 22:32 MacOSX10.15.sdk
drwxr-xr-x  7 root  wheel  224 11 30 21:33 MacOSX11.1.sdk
failfast@iMac ~ % clang --version
Apple clang version 12.0.0 (clang-1200.0.32.29)
Target: x86_64-apple-darwin20.3.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
failfast@iMac ~ % 

その後の "pyenv install 3.9.4" はエラーもなく正常に終了した。

SDKs に入っている古いバージョン(MacOSX10.1[45].sdk)はどうしたらいいんだろう。rm しちゃっていいのかな。それぞれ 250MiB も使っていないので、とりあえず放置でいっか。。。