python-xmlsecのインストールに失敗(libxmlsec1 1.3)

環境

  • 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に対応できていないことが原因とのことです。

github.com

対策

暫定対策ですがこちらのTapで1.2.37をインストールすることで対処できました。

brew uninstall libxmlsec1
brew install tvuotila/libxmlsec1/libxmlsec1@1.2.37

正式に1.3がサポートされるまではこれで乗り切ります。

github.com