difficulties with notmuch2 python bindings for alot

2020-06-09 Thread Daniel Kahn Gillmor
Hi all--

I see over on github that alot is trying to port to the notmuch2
bindings, and having a few problems with it:

 https://github.com/pazz/alot/pull/1511

alot is an important consumer of the notmuch python bindings, and it
would be really great to see them successfully transition to the
notmuch2 module.

Floris, if you (or anyone else with this particular knowledge) has a
chance to take a look and help them sort out the remaining issues, that
would be much appreciated!

  --dkg


signature.asc
Description: PGP signature
___
notmuch mailing list
notmuch@notmuchmail.org
https://notmuchmail.org/mailman/listinfo/notmuch


[PATCH v2] configure: use cffi.FFI().verify() to test buildability of CFFI bindings

2020-06-09 Thread Tomi Ollila
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.
---

diff to v1:

> +rm -rf __pycache__  # cffi.FFI().verify() uses this space

fits pretty well w/ pytest $conf removal few lines below

 configure | 15 +++
 1 file changed, 7 insertions(+), 8 deletions(-)

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

___
notmuch mailing list
notmuch@notmuchmail.org
https://notmuchmail.org/mailman/listinfo/notmuch


Re: [PATCH] configure: use cffi.FFI().verify() to test buildability of CFFI bindings

2020-06-09 Thread David Bremner
Tomi Ollila  writes:

> 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.

For me (debian 10, python 3.8.3) this leaves __pycache__ in the top
directory. This is particularly unfortunate when configure is invoked by
"make clean"; I know, who runs clean first, except all debian packages
;). 

I tried adding a call to "cffi.verifier.cleanup_tmpdir()" per the cffi
docs, but there seems to be a nested __pycache__ directory that is not
cleaned up by that (or is created later).  I guess the best option is
just to rm -rf __pycache__ at the appropriate point in configure?
___
notmuch mailing list
notmuch@notmuchmail.org
https://notmuchmail.org/mailman/listinfo/notmuch