configure: use cffi.FFI().verify() to test buildability of CFFI bindings

Checking existence of pyconfig.h to determine whether CFFI-based
notmuch bindings are buildable is not enough; for example Fedora 32
ships pyconfig.h in python3-libs package, but python3-devel is required
to be installed for the bindings to build.

Executing cffi.FFI().verify() is pretty close to what is done in
bindings/python-cffi/notmuch2/_build.py to get the c code part of the
bindings built.
This commit is contained in:
Tomi Ollila 2020-06-09 15:32:27 +03:00 committed by David Bremner
parent 411229f26b
commit 963e363a23

15
configure vendored
View file

@ -711,14 +711,12 @@ if [ $have_python -eq 0 ]; then
errors=$((errors + 1)) errors=$((errors + 1))
fi fi
have_python3_dev=0 have_python3=0
if [ $have_python -eq 1 ]; then if [ $have_python -eq 1 ]; then
printf "Checking for python3 dev (>= 3.5)..." printf "Checking for python3 (>= 3.5)..."
if "$python" -c 'import os, sys, sysconfig; if "$python" -c 'import sys, sysconfig; assert sys.version_info >= (3,5)'; >/dev/null 2>&1; then
assert sys.version_info >= (3,5)
assert os.path.isfile(sysconfig.get_config_h_filename())' >/dev/null 2>&1; then
printf "Yes.\n" printf "Yes.\n"
have_python3_dev=1 have_python3=1
else else
printf "No (will not install CFFI-based python bindings).\n" printf "No (will not install CFFI-based python bindings).\n"
fi fi
@ -726,14 +724,15 @@ fi
have_python3_cffi=0 have_python3_cffi=0
have_python3_pytest=0 have_python3_pytest=0
if [ $have_python3_dev -eq 1 ]; then if [ $have_python3 -eq 1 ]; then
printf "Checking for python3 cffi and setuptools... " printf "Checking for python3 cffi and setuptools... "
if "$python" -c 'import cffi; import setuptools' >/dev/null 2>&1; then if "$python" -c 'import cffi,setuptools; cffi.FFI().verify()' >/dev/null 2>&1; then
printf "Yes.\n" printf "Yes.\n"
have_python3_cffi=1 have_python3_cffi=1
else else
printf "No (will not install CFFI-based python bindings).\n" printf "No (will not install CFFI-based python bindings).\n"
fi fi
rm -rf __pycache__ # cffi.FFI().verify() uses this space
printf "Checking for python3 pytest (>= 3.0)... " printf "Checking for python3 pytest (>= 3.0)... "
conf=$(mktemp) conf=$(mktemp)