[Gsll-devel] Compilation error in fsbv/libffi-unix.c

Liam Healy lhealy at common-lisp.net
Wed Mar 3 14:14:16 UTC 2010


You need a newer version of CFFI.


On Wed, Mar 3, 2010 at 4:02 AM, N J <raphexion at gmail.com> wrote:
> Hi,
>
> Thanks for the help!
>
> When I run
>    pkg-config --cflags libffi
> I get
>    -I/usr/lib64/libffi-3.0.9/include
>
> So I edited my libffi-unix.lisp file as follows (I tried to imitate
> the +darwin approch):
>    #+linux
>    (cc-flags "-I/usr/lib64/libffi-3.0.9/include/")
>
> Doing this it compiled better but then I got this:
>
> ; /home/rpx/.fasls/sbcl-1.0.19-gentoo-linux-x86-64/usr/share/common-lisp/source/
> cffi/grovel/asdf.fasl written
> ; compilation finished in 0:00:00
> ; registering #<SYSTEM :FSBV {100339C6A1}> as FSBV
> ; registering #<SYSTEM GSLL {1004A02BA1}> as GSLL
> ; loading system definition from
> ; /usr/share/common-lisp/systems/cl-utilities.asd into #<PACKAGE "ASDF0">
> ; registering #<SYSTEM CL-UTILITIES {1004FBFEE1}> as CL-UTILITIES
> ; loading system definition from
> ; /usr/share/common-lisp/systems/trivial-garbage.asd into #<PACKAGE "ASDF0">
> ; registering #<SYSTEM TRIVIAL-GARBAGE {1002F4D441}> as TRIVIAL-GARBAGE
> ; registering #<SYSTEM TRIVIAL-GARBAGE-TESTS {10031EABB1}> as
> ; TRIVIAL-GARBAGE-TESTS
> ; loading system definition from /usr/share/common-lisp/systems/grid.asd into
> ; #<PACKAGE "ASDF0">
> ; registering #<SYSTEM GRID {1002873B01}> as GRID
> ; loading system definition from /usr/share/common-lisp/systems/c-array.asd
> ; into #<PACKAGE "ASDF0">
> ; registering #<SYSTEM C-ARRAY {1002D72B21}> as C-ARRAY
> ; compiling file "/usr/share/common-lisp/source/fsbv/init.lisp"
> (written 01 MAR
> 2010 11:56:07 PM):
> ; compiling (IN-PACKAGE :COMMON-LISP-USER)
> ; compiling (DEFPACKAGE :FOREIGN-STRUCTURES-BY-VALUE ...)
> ; compiling (CFFI:LOAD-FOREIGN-LIBRARY "libffi.so")
> ; compiling (PUSHNEW :FSBV ...)
>
> ; /home/rpx/.fasls/sbcl-1.0.19-gentoo-linux-x86-64/usr/share/common-lisp/source/
> fsbv/init.fasl written
> ; compilation finished in 0:00:00
>
> debugger invoked on a SIMPLE-ERROR in thread #<THREAD "initial thread"
> RUNNING {
> 10023F6A01}>:
>  Unknown Grovel syntax: CFFI-GROVEL::CC-FLAGS
>
> Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.
>
> restarts (invokable by number or by possibly-abbreviated name):
>  0: [TRY-RECOMPILING] Try recompiling libffi
>  1: [RETRY          ] Retry performing #<ASDF:COMPILE-OP NIL {1004ABF331}> on
>                       #<CFFI-GROVEL:GROVEL-FILE "libffi" {100284E171}>.
>  2: [ACCEPT         ] Continue, treating #<ASDF:COMPILE-OP NIL {1004ABF331}>
>                       on #<CFFI-GROVEL:GROVEL-FILE "libffi" {100284E171}> as
>                       having been successful.
>  3: [ABORT          ] Exit debugger, returning to top level.
>
> ((SB-PCL::FAST-METHOD CFFI-GROVEL::%PROCESS-GROVEL-FORM (T T T))
>  #<unavailable argument>
>  #<unavailable argument>
>  CFFI-GROVEL::CC-FLAGS
>  #<unavailable argument>
>  #<unavailable argument>)
>
>
> Maybe I should have modified my file differently.
>
> I also tried the symlink approch
>   cd /src/include
>   ln -s /usr/lib64/libffi-3.0.9/include/ffi.h ffi.h
>   ln -s /usr/lib64/libffi-3.0.9/include/ffitarget.h ffitarget.h
>
> and I seem to work; I got:
>
> ; compiling (DEFCONSTANT +CGSM-BOHR-RADIUS+ ...)
> ; compiling (DEFCONSTANT +CGSM-NEWTON+ ...)
> ; compiling (DEFCONSTANT +CGSM-DYNE+ ...)
> ; compiling (DEFCONSTANT +CGSM-JOULE+ ...)
> ; compiling (DEFCONSTANT +CGSM-ERG+ ...)
> ; compiling (DEFCONSTANT +CGSM-STEFAN-BOLTZMANN-CONSTANT+ ...)
> ; compiling (DEFCONSTANT +CGSM-THOMSON-CROSS-SECTION+ ...)
>
> ; /home/rpx/.fasls/sbcl-1.0.19-gentoo-linux-x86-64/usr/share/common-lisp/source/gsll/physical-constants/cgsm.fasl
> written
> ; compilation finished in 0:00:00
> ; compiling file
> "/usr/share/common-lisp/source/gsll/physical-constants/export.lisp"
> (written 01 MAR 2010 11:53:10 PM):
> ; compiling (IN-PACKAGE :GSL)
> ; compiling (EXPORT (QUOTE #))
>
> ; /home/rpx/.fasls/sbcl-1.0.19-gentoo-linux-x86-64/usr/share/common-lisp/source/gsll/physical-constants/export.fasl
> written
> ; compilation finished in 0:00:00
> ;
> ; compilation unit finished
> ;   caught 1 STYLE-WARNING condition
> ;   printed 41 notes
> NIL
> *
>
> Thanks for the help,
> NIK
>
> On Tue, Mar 2, 2010 at 10:05 AM, Sumant Oemrawsingh <soemraws at xs4all.nl> wrote:
>> Hi,
>>
>> Run pkg-config --cflags libffi and behold that ffi.h is probably in some
>> non-standard location like /usr/lib64/libffi-3.0.8/include. You can either
>> edit the source libffi-unix.lisp or symlink to a standard location like
>> /usr/include.
>>
>> As I understand, this is a problem due to upstream, not with your distro.
>>
>> Hope it helps,
>> Sumant
>>
>> On Mon, Mar 01, 2010 at 11:57:25PM +0100, N J wrote:
>>> Hey,
>>>
>>> When I run
>>>     (asdf:operate 'asdf:load-op :gsll)
>>> in sbcl
>>>
>>> I get:
>>>
>>> ; loading system definition from /usr/share/common-lisp/systems/c-array.asd
>>> ; into #<PACKAGE "ASDF0">
>>> ; registering #<SYSTEM C-ARRAY {10026C51D1}> as C-ARRAY
>>> ; compiling file "/usr/share/common-lisp/source/fsbv/init.lisp"
>>> (written 01 MAR 2010 11:39:35 PM):
>>> ; compiling (IN-PACKAGE :COMMON-LISP-USER)
>>> ; compiling (DEFPACKAGE :FOREIGN-STRUCTURES-BY-VALUE ...)
>>> ; compiling (CFFI:LOAD-FOREIGN-LIBRARY "libffi.so")
>>> ; compiling (PUSHNEW :FSBV ...)
>>>
>>> ; /home/rpx/.fasls/sbcl-1.0.19-gentoo-linux-x86-64/usr/share/common-lisp/source/fsbv/init.fasl
>>> written
>>> ; compilation finished in 0:00:00
>>> ; cc -m64 -fPIC -o
>>> /home/rpx/.fasls/sbcl-1.0.19-gentoo-linux-x86-64/usr/share/common-lisp/source/fsbv/libffi-unix
>>> /home/rpx/.fasls/sbcl-1.0.19-gentoo-linux-x86-64/usr/share/common-lisp/source/fsbv/libffi-unix.c
>>>
>>> debugger invoked on a SIMPLE-ERROR in thread #<THREAD "initial thread"
>>> RUNNING {10023F6A01}>:
>>>   External process exited with code 1.
>>> Command was: "cc" "-m64" "-fPIC" "-o"
>>> "/home/rpx/.fasls/sbcl-1.0.19-gentoo-linux-x86-64/usr/share/common-lisp/source/fsbv/libffi-unix"
>>> "/home/rpx/.fasls/sbcl-1.0.19-gentoo-linux-x86-64/usr/share/common-lisp/source/fsbv/libffi-unix.c"
>>> Output was:
>>> /home/rpx/.fasls/sbcl-1.0.19-gentoo-linux-x86-64/usr/share/common-lisp/source/fsbv/libffi-unix.c:7:17:
>>> error: ffi.h: No such file or directory
>>> /home/rpx/.fasls/sbcl-1.0.19-gentoo-linux-x86-64/usr/share/common-lisp/source/fsbv/libffi-unix.c:
>>> In function ‘main’:
>>> /home/rpx/.fasls/sbcl-1.0.19-gentoo-linux-x86-64/usr/share/common-lisp/source/fsbv/libffi-unix.c:40:
>>> error: ‘FFI_OK’ undeclared (first use in this function)
>>> /home/rpx/.fasls/sbcl-1.0.19-gentoo-linux-x86-64/usr/share/common-lisp/source/fsbv/libffi-unix.c:40:
>>> error: (Each undeclared identifier is reported only once
>>> /home/rpx/.fasls/sbcl-1.0.19-gentoo-linux-x86-64/usr/share/common-lisp/source/fsbv/libffi-unix.c:40:
>>> error: for each function it appears in.)
>>> /home/rpx/.fasls/sbcl-1.0.19-gentoo-linux-x86-64/usr/share/common-lisp/source/fsbv/libffi-unix.c:45:
>>> error: ‘FFI_BAD_TYPEDEF’ undeclared (first use in this function)
>>> /home/rpx/.fasls/sbcl-1.0.19-gentoo-linux-x86-64/usr/share/common-lisp/source/fsbv/libffi-unix.c:50:
>>> error: ‘FFI_BAD_ABI’ undeclared (first use in this function)
>>> /home/rpx/.fasls/sbcl-1.0.19-gentoo-linux-x86-64/usr/share/common-lisp/source/fsbv/libffi-unix.c:61:
>>> error: ‘FFI_DEFAULT_ABI’ undeclared (first use in this function)
>>> /home/rpx/.fasls/sbcl-1.0.19-gentoo-linux-x86-64/usr/share/common-lisp/source/fsbv/libffi-unix.c:66:
>>> error: ‘FFI_SYSV’ undeclared (first use in this function)
>>> /home/rpx/.fasls/sbcl-1.0.19-gentoo-linux-x86-64/usr/share/common-lisp/source/fsbv/libffi-unix.c:71:
>>> error: ‘FFI_UNIX64’ undeclared (first use in this function)
>>> /home/rpx/.fasls/sbcl-1.0.19-gentoo-linux-x86-64/usr/share/common-lisp/source/fsbv/libffi-unix.c:79:
>>> error: ‘ffi_abi’ undeclared (first use in this function)
>>> /home/rpx/.fasls/sbcl-1.0.19-gentoo-linux-x86-64/usr/share/common-lisp/source/fsbv/libffi-unix.c:126:
>>> error: invalid application of ‘sizeof’ to incomplete type ‘struct
>>> _ffi_type’
>>> /home/rpx/.fasls/sbcl-1.0.19-gentoo-linux-x86-64/usr/share/common-lisp/source/fsbv/libffi-unix.c:126:
>>> warning: format ‘%i’ expects type ‘int’, but argument 3 has type ‘long
>>> unsigned int’
>>> /home/rpx/.fasls/sbcl-1.0.19-gentoo-linux-x86-64/usr/share/common-lisp/source/fsbv/libffi-unix.c:131:
>>> error: dereferencing pointer to incomplete type
>>> /home/rpx/.fasls/sbcl-1.0.19-gentoo-linux-x86-64/usr/share/common-lisp/source/fsbv/libffi-unix.c:136:
>>> error: dereferencing pointer to incomplete type
>>> /home/rpx/.fasls/sbcl-1.0.19-gentoo-linux-x86-64/usr/share/common-lisp/source/fsbv/libffi-unix.c:141:
>>> error: dereferencing pointer to incomplete type
>>> /home/rpx/.fasls/sbcl-1.0.19-gentoo-linux-x86-64/usr/share/common-lisp/source/fsbv/libffi-unix.c:146:
>>> error: dereferencing pointer to incomplete type
>>> /home/rpx/.fasls/sbcl-1.0.19-gentoo-linux-x86-64/usr/share/common-lisp/source/fsbv/libffi-unix.c:
>>> In function ‘print_double_for_lisp’:
>>> /home/rpx/.fasls/sbcl-1.0.19-gentoo-linux-x86-64/usr/share/common-lisp/source/fsbv/libffi-unix.c:397:
>>> warning: incompatible implicit declaration of built-in function
>>> ‘memset’
>>>
>>>
>>> My packages and gits are:
>>>     git://repo.or.cz/gsll.git
>>>     4fef622be12cf318e015b2ba5aba6c63d4296f1e
>>>     master
>>>
>>>     git://repo.or.cz/fsbv.git
>>>     dd8025f51fd8272b725bd73bc0b1875bae2bcf5b
>>>     master
>>>
>>>     cffi-0.10.5
>>>
>>>
>>> Thank you guys for any help
>>> NIK




More information about the gsll-devel mailing list