Using pkg-config (hdf5)

Liam Healy lnp at healy.washington.dc.us
Tue Dec 8 23:44:04 UTC 2015


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



More information about the cffi-devel mailing list