環境
- macOS 12.4
- Homebrew 4.1.2
事象
python-xmlsecをインストールしようとすると以下のエラーが出ました。
Using version ^1.3.13 for xmlsec Updating dependencies Resolving dependencies... (0.4s) Package operations: 1 install, 0 updates, 0 removals • Installing xmlsec (1.3.13): Failed ChefBuildError Backend subprocess exited when trying to invoke build_wheel running bdist_wheel running build running build_py creating build ... creating build/temp.macosx-12.4-x86_64-cpython-38/private/var/folders/k3/k7vd_gqj4zq908vsfsc284x40000gn/T/tmpg5t1_yzf/xmlsec-1.3.1 3/src clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -I/Library/Developer/CommandLineTools/SDK s/MacOSX.sdk/usr/include -DOPENSSL_NO_SSL3 -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -D__XMLSEC_FUNCTION__=_ _func__ -DXMLSEC_NO_FTP=1 -DXMLSEC_NO_MD5=1 -DXMLSEC_NO_GOST=1 -DXMLSEC_NO_GOST2012=1 -DXMLSEC_NO_CRYPTO_DYNAMIC_LOADING=1 -DXMLSEC_ CRYPTO_OPENSSL=1 -DMODULE_NAME=xmlsec -DMODULE_VERSION=1.3.13 -I/usr/local/Cellar/libxmlsec1/1.3.1_1/include/xmlsec1 -I/usr/local/op t/openssl@3/include -I/usr/local/opt/openssl@3/include/openssl -I/var/folders/k3/k7vd_gqj4zq908vsfsc284x40000gn/T/tmpz659f7xs/.venv/ lib/python3.8/site-packages/lxml/includes -I/var/folders/k3/k7vd_gqj4zq908vsfsc284x40000gn/T/tmpz659f7xs/.venv/lib/python3.8/site-pa ckages/lxml -I/var/folders/k3/k7vd_gqj4zq908vsfsc284x40000gn/T/tmpz659f7xs/.venv/include -I/Users/hiroki_sawano/.pyenv/versions/3.8. 16/include/python3.8 -c /private/var/folders/k3/k7vd_gqj4zq908vsfsc284x40000gn/T/tmpg5t1_yzf/xmlsec-1.3.13/src/constants.c -o build/ temp.macosx-12.4-x86_64-cpython-38/private/var/folders/k3/k7vd_gqj4zq908vsfsc284x40000gn/T/tmpg5t1_yzf/xmlsec-1.3.13/src/constants.o -g -std=c99 -fPIC -fno-strict-aliasing -Wno-error=declaration-after-statement -Werror=implicit-function-declaration -Os /private/var/folders/k3/k7vd_gqj4zq908vsfsc284x40000gn/T/tmpg5t1_yzf/xmlsec-1.3.13/src/constants.c:319:5: error: use of undeclared identifier 'xmlSecSoap11Ns' PYXMLSEC_ADD_NS_CONSTANT(Soap11Ns, "SOAP11"); ^ /private/var/folders/k3/k7vd_gqj4zq908vsfsc284x40000gn/T/tmpg5t1_yzf/xmlsec-1.3.13/src/constants.c:304:46: note: expanded from mac ro 'PYXMLSEC_ADD_NS_CONSTANT' tmp = PyUnicode_FromString((const char*)(JOIN(xmlSec, name))); \ ^ /private/var/folders/k3/k7vd_gqj4zq908vsfsc284x40000gn/T/tmpg5t1_yzf/xmlsec-1.3.13/src/common.h:19:19: note: expanded from macro ' JOIN' #define JOIN(X,Y) DO_JOIN1(X,Y) ^ /private/var/folders/k3/k7vd_gqj4zq908vsfsc284x40000gn/T/tmpg5t1_yzf/xmlsec-1.3.13/src/common.h:20:23: note: expanded from macro ' DO_JOIN1' #define DO_JOIN1(X,Y) DO_JOIN2(X,Y) ^ /private/var/folders/k3/k7vd_gqj4zq908vsfsc284x40000gn/T/tmpg5t1_yzf/xmlsec-1.3.13/src/common.h:21:23: note: expanded from macro ' DO_JOIN2' #define DO_JOIN2(X,Y) X##Y ^ <scratch space>:81:1: note: expanded from here xmlSecSoap11Ns ^ /private/var/folders/k3/k7vd_gqj4zq908vsfsc284x40000gn/T/tmpg5t1_yzf/xmlsec-1.3.13/src/constants.c:320:5: error: use of undeclared identifier 'xmlSecSoap12Ns'; did you mean 'xmlSecXPath2Ns'? PYXMLSEC_ADD_NS_CONSTANT(Soap12Ns, "SOAP12"); ^ /private/var/folders/k3/k7vd_gqj4zq908vsfsc284x40000gn/T/tmpg5t1_yzf/xmlsec-1.3.13/src/constants.c:304:46: note: expanded from mac ro 'PYXMLSEC_ADD_NS_CONSTANT' tmp = PyUnicode_FromString((const char*)(JOIN(xmlSec, name))); \ ^ /private/var/folders/k3/k7vd_gqj4zq908vsfsc284x40000gn/T/tmpg5t1_yzf/xmlsec-1.3.13/src/common.h:19:19: note: expanded from macro ' JOIN' #define JOIN(X,Y) DO_JOIN1(X,Y) ^ /private/var/folders/k3/k7vd_gqj4zq908vsfsc284x40000gn/T/tmpg5t1_yzf/xmlsec-1.3.13/src/common.h:20:23: note: expanded from macro ' DO_JOIN1' #define DO_JOIN1(X,Y) DO_JOIN2(X,Y) ^ /private/var/folders/k3/k7vd_gqj4zq908vsfsc284x40000gn/T/tmpg5t1_yzf/xmlsec-1.3.13/src/common.h:21:23: note: expanded from macro ' DO_JOIN2' #define DO_JOIN2(X,Y) X##Y ^ <scratch space>:83:1: note: expanded from here xmlSecSoap12Ns ^ /usr/local/Cellar/libxmlsec1/1.3.1_1/include/xmlsec1/xmlsec/strings.h:34:33: note: 'xmlSecXPath2Ns' declared here XMLSEC_EXPORT_VAR const xmlChar xmlSecXPath2Ns[]; ^ 2 errors generated. error: command '/usr/bin/clang' failed with exit code 1 ...
原因
libxmlsec1の1.3に対応できていないことが原因とのことです。
対策
暫定対策ですがこちらのTapで1.2.37をインストールすることで対処できました。
brew uninstall libxmlsec1 brew install tvuotila/libxmlsec1/libxmlsec1@1.2.37
正式に1.3がサポートされるまではこれで乗り切ります。