Debian has relocated hdf5 includes and libraries in serial/, which means that hdf5-cffi does not compile. See this issue: https://github.com/HDFGroup/hdf5-cffi/issues/61. I am trying to come up with a CFFI solution. It seems like pkg-config-cflags should do the job for me, as pkg-config is installed and does the right thing:
pkg-config --libs hdf5 -L/usr/lib/x86_64-linux-gnu/hdf5/serial -lhdf5 pkg-config --cflags hdf5 -I/usr/include/hdf5/serial
However, I put a line (pkg-config-cflags "hdf5" :optional t) in hfd5-cffi/hdf5/grovel.lisp and got nothing useful; it is clear it is running pkg-config but the result never makes it into the cc arg list.
(ql:quickload :hdf5-cffi) To load "hdf5-cffi": Load 1 ASDF system: hdf5-cffi ; Loading "hdf5-cffi" [package hdf5]; pkg-config hdf5 --cflags -I/usr/include/hdf5/serial ; cc -m64 -o /home/healy/.cache/common-lisp/sbcl-1.2.15-linux-x64/home/healy/languages/lisp/hdf5-cffi/hdf5/grovel__grovel-tmpGHU3ALSV -I/home/healy/languages/lisp/cffi/ /home/healy/.cache/common-lisp/sbcl-1.2.15-linux-x64/home/healy/languages/lisp/hdf5-cffi/hdf5/grovel__grovel.c ; /home/healy/.cache/common-lisp/sbcl-1.2.15-linux-x64/home/healy/languages/lisp/hdf5-cffi/hdf5/grovel__grovel /home/healy/.cache/common-lisp/sbcl-1.2.15-linux-x64/home/healy/languages/lisp/hdf5-cffi/hdf5/grovel__grovel.grovel-tmp.lisp ; cc -m64 -o /home/healy/.cache/common-lisp/sbcl-1.2.15-linux-x64/home/healy/languages/lisp/hdf5-cffi/hdf5/h5-grovel__grovel-tmpAAURSO1 -I/home/healy/languages/lisp/cffi/ /home/healy/.cache/common-lisp/sbcl-1.2.15-linux-x64/home/healy/languages/lisp/hdf5-cffi/hdf5/h5-grovel__grovel.c /home/healy/.cache/common-lisp/sbcl-1.2.15-linux-x64/home/healy/languages/lisp/hdf5-cffi/hdf5/h5-grovel__grovel.c:6:18: fatal error: hdf5.h: No such file or directory #include <hdf5.h> ^ compilation terminated.
Is this a problem of CFFI or dies the pkg-config-cflags form need to be somewhere else?
Liam
Hello Liam,
IIUC, there's a pull request in progress to fix this. Alternatively, you can use the latest CFFI release.
Cheers, Luís
On Fri, Dec 4, 2015, 21:19 Liam Healy lnp@healy.washington.dc.us wrote:
Debian has relocated hdf5 includes and libraries in serial/, which means that hdf5-cffi does not compile. See this issue: https://github.com/HDFGroup/hdf5-cffi/issues/61. I am trying to come up with a CFFI solution. It seems like pkg-config-cflags should do the job for me, as pkg-config is installed and does the right thing:
pkg-config --libs hdf5 -L/usr/lib/x86_64-linux-gnu/hdf5/serial -lhdf5 pkg-config --cflags hdf5 -I/usr/include/hdf5/serial
However, I put a line (pkg-config-cflags "hdf5" :optional t) in hfd5-cffi/hdf5/grovel.lisp and got nothing useful; it is clear it is running pkg-config but the result never makes it into the cc arg list.
(ql:quickload :hdf5-cffi) To load "hdf5-cffi": Load 1 ASDF system: hdf5-cffi ; Loading "hdf5-cffi" [package hdf5]; pkg-config hdf5 --cflags -I/usr/include/hdf5/serial ; cc -m64 -o /home/healy/.cache/common-lisp/sbcl-1.2.15-linux-x64/home/healy/languages/lisp/hdf5-cffi/hdf5/grovel__grovel-tmpGHU3ALSV -I/home/healy/languages/lisp/cffi/
/home/healy/.cache/common-lisp/sbcl-1.2.15-linux-x64/home/healy/languages/lisp/hdf5-cffi/hdf5/grovel__grovel.c ; /home/healy/.cache/common-lisp/sbcl-1.2.15-linux-x64/home/healy/languages/lisp/hdf5-cffi/hdf5/grovel__grovel
/home/healy/.cache/common-lisp/sbcl-1.2.15-linux-x64/home/healy/languages/lisp/hdf5-cffi/hdf5/grovel__grovel.grovel-tmp.lisp ; cc -m64 -o /home/healy/.cache/common-lisp/sbcl-1.2.15-linux-x64/home/healy/languages/lisp/hdf5-cffi/hdf5/h5-grovel__grovel-tmpAAURSO1 -I/home/healy/languages/lisp/cffi/
/home/healy/.cache/common-lisp/sbcl-1.2.15-linux-x64/home/healy/languages/lisp/hdf5-cffi/hdf5/h5-grovel__grovel.c
/home/healy/.cache/common-lisp/sbcl-1.2.15-linux-x64/home/healy/languages/lisp/hdf5-cffi/hdf5/h5-grovel__grovel.c:6:18: fatal error: hdf5.h: No such file or directory #include <hdf5.h> ^ compilation terminated.
Is this a problem of CFFI or dies the pkg-config-cflags form need to be somewhere else?
Liam
A pull request on what? CFFI, or hdf5-cffi? There are no open pull requests on the latter, and on CFFI, there are two, neither which seems relevant. The issue I cited ended with the recommendation to set the CC variable to h5cc. That works to get the includes taken care of, but it doesn't find the library. Moreover, I find it unsatisfactory to tell the user to do something before starting CL for the package to install, so if we can come up with a solution that's transparent to the user, it would be better.
One issue is a CFFI issue: (pkg-config-cflags "hdf5" :optional t) in hdf5-cffi/hdf5/grovel.lisp does not help cffi-grovel find the necessary .h files. It is a CFFI issue because I do get the right answer from the shell: pkg-config --cflags hdf5 -I/usr/include/hdf5/serial
I am using the latest CFFI, not even released yet 4e74b15387ba Manual: remove statement that C structs cannot be passed by value
Thoughts? Liam
On Fri, Dec 4, 2015 at 6:45 PM, Luís Oliveira luismbo@gmail.com wrote:
Hello Liam,
IIUC, there's a pull request in progress to fix this. Alternatively, you can use the latest CFFI release.
Cheers, Luís
On Fri, Dec 4, 2015, 21:19 Liam Healy lnp@healy.washington.dc.us wrote:
Debian has relocated hdf5 includes and libraries in serial/, which means that hdf5-cffi does not compile. See this issue: https://github.com/HDFGroup/hdf5-cffi/issues/61. I am trying to come up with a CFFI solution. It seems like pkg-config-cflags should do the job for me, as pkg-config is installed and does the right thing:
pkg-config --libs hdf5 -L/usr/lib/x86_64-linux-gnu/hdf5/serial -lhdf5 pkg-config --cflags hdf5 -I/usr/include/hdf5/serial
However, I put a line (pkg-config-cflags "hdf5" :optional t) in hfd5-cffi/hdf5/grovel.lisp and got nothing useful; it is clear it is running pkg-config but the result never makes it into the cc arg list.
(ql:quickload :hdf5-cffi) To load "hdf5-cffi": Load 1 ASDF system: hdf5-cffi ; Loading "hdf5-cffi" [package hdf5]; pkg-config hdf5 --cflags -I/usr/include/hdf5/serial ; cc -m64 -o /home/healy/.cache/common-lisp/sbcl-1.2.15-linux-x64/home/healy/languages/lisp/hdf5-cffi/hdf5/grovel__grovel-tmpGHU3ALSV -I/home/healy/languages/lisp/cffi/
/home/healy/.cache/common-lisp/sbcl-1.2.15-linux-x64/home/healy/languages/lisp/hdf5-cffi/hdf5/grovel__grovel.c ; /home/healy/.cache/common-lisp/sbcl-1.2.15-linux-x64/home/healy/languages/lisp/hdf5-cffi/hdf5/grovel__grovel
/home/healy/.cache/common-lisp/sbcl-1.2.15-linux-x64/home/healy/languages/lisp/hdf5-cffi/hdf5/grovel__grovel.grovel-tmp.lisp ; cc -m64 -o /home/healy/.cache/common-lisp/sbcl-1.2.15-linux-x64/home/healy/languages/lisp/hdf5-cffi/hdf5/h5-grovel__grovel-tmpAAURSO1 -I/home/healy/languages/lisp/cffi/
/home/healy/.cache/common-lisp/sbcl-1.2.15-linux-x64/home/healy/languages/lisp/hdf5-cffi/hdf5/h5-grovel__grovel.c
/home/healy/.cache/common-lisp/sbcl-1.2.15-linux-x64/home/healy/languages/lisp/hdf5-cffi/hdf5/h5-grovel__grovel.c:6:18: fatal error: hdf5.h: No such file or directory #include <hdf5.h> ^ compilation terminated.
Is this a problem of CFFI or dies the pkg-config-cflags form need to be somewhere else?
Liam