Little by little I'll start shoving all syscall-related compatibility code into a C library called libfixposix - http://gitorious.org/libfixposix/libfixposix - on which iolib will depend.
I've decided to do it mainly because writing OS compatibility code is much easier in C and with the use of autoconf and because CFFI .so wrappers cause problems with deployment/static executables.
Until this is finished, sources will be a little unstable so please stick with the 0.7.0 release, or if you feel adventurous test libfixposix and iolib, especially on *BSD and OSX.
Stelian Ionescu <sionescu <at> cddr.org> writes:
Little by little I'll start shoving all syscall-related compatibility code into a C library called libfixposix - http://gitorious.org/libfixposix/libfixposix - on which iolib will depend.
I've decided to do it mainly because writing OS compatibility code is much easier in C and with the use of autoconf and because CFFI .so wrappers cause problems with deployment/static executables.
Until this is finished, sources will be a little unstable so please stick with the 0.7.0 release, or if you feel adventurous test libfixposix and iolib, especially on *BSD and OSX.
Hi,
with an iolib snapshot and sbcl I got the following errors:
...
; compiling (DEFCSTRUCT (FD-SET :SIZE ...)) ; compiling (DEFCONSTANT SIZE-OF-FD-SET ...) ; compiling (DEFCONSTANT WNOHANG ...) ; compiling (DEFCONSTANT WUNTRACED ...) ; compiling (DEFCONSTANT WCONTINUED ...)
; /home/chris/.cache/common-lisp/sbcl-1.0.37-linux-x86-64/home/chris/code/ lisp-tp/~ iolib-20101017/src/libfixposix/ffi-types.fasl written ; compilation finished in 0:00:00.270 ; compiling file "/home/chris/code/lisp-tp/iolib-20101017/src/libfixposix/ffi-functions.lisp" (written 23 OCT 2010 01:52:49 AM):
; file: /home/chris/code/lisp-tp/iolib-20101017/src/libfixposix/~ ffi-functions.lisp ; in: EVAL-WHEN (:COMPILE-TOPLEVEL :LOAD-TOPLEVEL :EXECUTE) ; (CFFI:USE-FOREIGN-LIBRARY LIBFIXPOSIX::LIBFIXPOSIX) ; ==> ; (CFFI:LOAD-FOREIGN-LIBRARY 'LIBFIXPOSIX::LIBFIXPOSIX) ; ; caught ERROR: ; (during compile-time-too processing) ; Unable to load foreign library (LIBFIXPOSIX). ; Error opening shared object "libfixposix.so": ; /usr/local/lib/libfixposix.so: undefined symbol: execvpe.
; /home/chris/.cache/common-lisp/sbcl-1.0.37-linux-x86-64/home/chris/code/ ~lisp-tp/iolib-20101017/src/libfixposix/ASDF-TMP-ffi-functions.fasl written ; compilation finished in 0:00:00.143 WARNING: COMPILE-FILE warned while performing #<COMPILE-OP NIL {10054F89F1}> on #<IOLIB-SOURCE-FILE "libfixposix" "ffi-functions">. ; ; compilation unit aborted ; caught 1 fatal ERROR condition ; caught 1 ERROR condition ; caught 1 STYLE-WARNING condition
CL-USER>
*Slime Compilation Buffer*
cd /home/chris/code/lisp-tp/iolib-0.7.0/src/multiplex/ 6 compiler notes:
Unknown location: warning: IOLIB.BASE also exports the following symbols: (STREAM-READ-CHAR-NO-HANG STREAM-READ-BYTE STREAM-ADVANCE-TO-COLUMN STREAM-LISTEN STREAM-FORCE-OUTPUT IOLIB.BASE:TRIVIAL-GRAY-STREAM-MIXIN STREAM-START-LINE-P STREAM-CLEAR-OUTPUT STREAM-WRITE-CHAR STREAM-WRITE-STRING FUNDAMENTAL-CHARACTER-INPUT-STREAM FUNDAMENTAL-BINARY-INPUT-STREAM STREAM-CLEAR-INPUT STREAM-FINISH-OUTPUT STREAM-TERPRI FUNDAMENTAL-BINARY-OUTPUT-STREAM FUNDAMENTAL-BINARY-STREAM STREAM-UNREAD-CHAR STREAM-WRITE-BYTE FUNDAMENTAL-CHARACTER-OUTPUT-STREAM STREAM-READ-CHAR STREAM-READ-LINE FUNDAMENTAL-OUTPUT-STREAM STREAM-FRESH-LINE STREAM-LINE-COLUMN IOLIB.BASE:STREAM-READ-SEQUENCE FUNDAMENTAL-STREAM IOLIB.BASE:STREAM-WRITE-SEQUENCE FUNDAMENTAL-CHARACTER-STREAM STREAM-PEEK-CHAR FUNDAMENTAL-INPUT-STREAM IOLIB.BASE:STREAM-FILE-POSITION) also: mmon Lisp Hyperspec, DEFPACKAGE [:macro]
Unknown location: warning: COMPILE-FILE warned while performing #<COMPILE-OP NIL {1002CFE8D1}> on #<CL-SOURCE-FILE "iolib.base" "sequence">.
Unknown location: warning: COMPILE-FILE warned while performing #<COMPILE-OP NIL {10031C5D31}> on #<CL-SOURCE-FILE "trivial-garbage" "trivial-garbage">.
Unknown location: warning: COMPILE-FILE warned while performing #<COMPILE-OP NIL {10054F89F1}> on #<IOLIB-SOURCE-FILE "libfixposix" "ffi-functions">.
Unknown location: error: erred while invoking #<COMPILE-OP NIL {10054F89F1}> on #<IOLIB-SOURCE-FILE "libfixposix" "ffi-functions">
../../../alexandria/alexandria/sequences.lisp:161:23: note: unable to optimize due to type uncertainty: The first argument is a SEQUENCE, not a (SIMPLE-ARRAY * (*)). note: unable to optimize due to type uncertainty: The first argument is a Ssix.so.0.0.0 libfixposix.so; }; }) libtool: install: /usr/bin/install -c src/lib/.libs/libfixposix.lai /usr/local/lib/libfixposix.la libtool: install: /usr/bin/install -c src/lib/.libs/libfixposix.a /usr/local/lib/libfixposix.a libtool: install: chmod 644 /usr/local/lib/libfixposix.a libtool: install: ranlib /usr/local/lib/libfixposix.a libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/sbin" ldconfig -n /ent> ASDF:LOAD-OP "iolib") 17: ((LAMBDA ())) 18: ((FLET SWANK-BACKEND:CALL-WITH-COMPILATION-HOOKS) #<CLOSURE (LAMBDA #) {1004321EC9}>) --more--
...
; compiling (DEFUN WEAKNESS-KEYWORD-OPT ...)
; file: /home/chris/code/lisp-tp/trivial-garbage_0.18/trivial-garbage.lisp ; in: DEFUN WEAKNESS-KEYWORD-OPT ; (DEFUN TRIVIAL-GARBAGE::WEAKNESS-KEYWORD-OPT ; (TRIVIAL-GARBAGE::WEAKNESS TRIVIAL-GARBAGE::ERRORP) ; (ECASE TRIVIAL-GARBAGE::WEAKNESS ; SYSCALLS::I) ; --> AREF ; ==> ; (SB-KERNEL:HAIRY-DATA-VECTOR-REF ARRAY SB-INT:INDEX) ; ; note: unable to ; optimize ; due to type uncertainty: ; The first argument is a STRING, not a SIMPLE-STRING. ; ; note: unable to ; avoid runtime dispatch on array element type ; due to type uncertainty: ; The first argument is a STRING, not a SIMPLE-ARRAY.
; (CHAR IOLIB.SYSCALLS::SSTRING (INCF IOLIB.SYSCALLS::I)) ; --> AREF ; ==> ; (SB-KERNEL:HAIRY-DATA-VECTOR-REF ARRAY SB-INT:INDEX) ; ; ; ; note: unable to ; fold identity operations ; due to type uncertainty: ; The first argument is a NUMBER, not a (OR RATIONAL (COMPLEX RATIONAL)). ; ; note: unable to ; recode as leas, shifts and adds ; due to type uncertainty: ; The first argument is a NUMBER, not a (UNSIGNED-BYTE 64). ; The result is a (VALUES NUMBER &OPTIONAL), not a (VAR, not a INTEGER. ; ; note: unable to ; fold identity operations ; due to type uncertainty: ; The first argument is a NUMBER, not a (OR RATIONAL (COMPLEX RATIONAL)). ; ; note: unable to ; recode as leas, shifts and adds ; due to type uncertainty: ; The first argument is a NUMBER, not a (UNSIGNED-BYTE 64). ; The result is a (VALUES FIXNUM &OPTIONAL), not a (VALUES (UNSIGNED-BYTE 64) ;&REST T). ; ; note: unable to ; recode as leas, shifts and adds ; due to type uncertainty: ; The first argument is a NUMBER, not a FIXNUM.
; (INCF IOLIB.SYSCALLS::LS::C-PTR :UNSIGNED-CHAR ; IOLIB.SYSCALLS::INDEX) ; IOLIB.SYSCALLS::OCTET) ; --> LET* MULTIPLE-VALUE-BIND LET PROGN CFFI::MEM-SET CFFI-SYS:%MEM-SET ; --> LET SETF SB-KERNEL:%SET-SAP-REF-8 ; ==> ; (* #:INDEX-TMP65 1) ; ; note: unable to ; optimize ; due to type uncertainty: ; The first argument is a NUMBER, not a FLOAT. ; ; note: unable to ; convert x*2^k to shift ; due to type uncertainty: ; The first argument is a NUMBER, not a INTEGER. ; ; note: unable to ; fold identity operations ; due to type uncertainty: ; The first argument is a NUMBER, not a (OR RATIONAL ~ (COMPLEX RATIONALe uncertainty: ; The first argument is a NUMBER, not a FIXNUM.
; (INCF IOLIB.SYSCALLS::INDEX) ; --> LET* ; ==> ; (+ IOLIB.SYSCALLS::INDEX #:G51) ; ; note: unable to ; optimize ; due to type uncertainty: ; The first argument is a NUMBER, not a FLOAT.
; (LOOP :WITH IOLIB.SYSCALLS::LEN := (LENGTH IOLIB.SYSCALLS::SSTRING) ; :WITH IOLIB.SYSCALLS::END-OFFSET := ( IOLIB.SYSCALLS::OCTET) ; --> LET* MULTIPLE-VALUE-BIND LET PROGN CFFI::MEM-SET CFFI-SYS:%MEM-SET ; --> LET SETF SB-KERNEL:%SET-SAP-REF-8 ; ==> ; (* #:INDEX-TMP115 1) ; ; note: forced to do GENERIC-* (cost 30) ; unable to do inline fixnum arithmetic (cost 3) because: ; The first argument is a NUMBER, not a FIXNUM. ; unable to do inline (signed-byte 64) arithmetic (cost 4)~ ithmetic (cost 4) because: ; The first argument is a NUMBER, not a (SIGNED-BYTE 64). ; etc.
; (INCF IOLIB.SYSCALLS::INDEX) ; --> LET* ; ==> ; (+ IOLIB.SYSCALLS::INDEX #:G91) ; ; note: forced to do GENERIC-+ (cost 10) ; unable to do inline fixnum arithmetic (cost 1) ES NUMBER &OPTIONAL),~ not a (VALUES FIXNUM &REST T). ; unable to do inline fixnum arithmetic (cost 2) because: ; The first argument is a NUMBER, not a FIXNUM. ; The result is a (VALUES NUMBER &OPTIONAL), not a ~ (VALUES FIXNUM &REST T). ; etc.
; (SETF (CFFI:MEM-AREF IOLIB.SYSCALLS::C-PTR :UNSIGNED-CHAR ; IOLIB.SYSCALLS::INDEX) ; IOLIB.SYSCALLS::OCTET) ; --> LET* MULTIPLE-VALUE-BIND LETt is a NUMBER, not a FIXNUM. ; The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES ~ FIXNUM &REST T). ; etc.
; (SETF (CFFI:MEM-AREF IOLINEL:HAIRY-DATA-VECTOR-REF ARRAY SB-INT:INDEX) ; ; note: unable to ; optimize ; due to type uncertainty: ; The first argument is a STRING, not a SIMPLE-STRING. ; ; note: unable to ; avoid runtime dispatch on array element type ; due to type uncertainty: ; The first argument is a STRING, not a SIMPLE-ARRAY.
; (LOOP :WITH IOLIB.SYSCALLS::LEN := (LENGs-unix /home/chris/.cache/common-lisp/sbcl-1.0.37-linux-x86-64/home/chris/code/~ lisp-tp/iolib-0.7.0/src/syscalls/ffi-types-unix.c ; /home/chris/.cache/common-lisp/sbcl-1.0.37-linux-x86-64/home/chris/code/~ lisp-tp /iolib-0.7.0/src/syscalls/ffi-types-unix /home/chris/.cache/common-lisp/sbcl-1.0.37-linux-x86-64/home/chris/code/ lisp-tp/iolib-0.7.0/src/syscalls/ffi-types-unix.grovel-tmp.lisp ;g (COMMON-LISP:DEFCONSTANT S-IRWXG ...) ; compiling (COMMON-LISP:DEFCONSTANT S-IRGRP ...) ; compiling (COMMON-LISP:DEFCONSTANT S-IWGRP ...) ; compiling (COMMON-LISP:DEFCONSTANT S-IXGRP ...) ; compiling (COMMON-LISP:DEFCONSTANT S-IRWXO ...) ; compiling (COMMON-LISP:DEFCONSTANT S-IROTH ...) ; compiling (COMMON-LISP:DEFCONSTANSTANT MAP-SHARED ...) ; compiling (COMMON-LISP:DEFCONSTANT MAP-PRIVATE ...) ; compiling (COMMON-LISP:DEFCONSTANT MAP-FIXED ...) ; compiling (COMMON-LISP:DEFCONSTANT MAP-FAILED ...) ; compiling (DEFCTYPE NFDS-T ...) ; compiling (COMMON-LISP:DEFCONSTANT SIZE-OF-NFDS-T ...) ; compiling (DEFCSTRUCT (POLLFD :SIZE.) ; compiling (COMMON-LISP:DEFCONSTANT RLIMIT-NICE ...) ; compiling (COMMON-LISP:DEFCONSTANT RLIMIT-RTPRIO ...) ; compiling (COMMON-LISP:DEFCONSTANT RLIMIT-SIGPENDING ...) ; compiling (DEFCSTRUCT (UTSNAME :SIZE ...) ...) ; compiling (COMMON-LISP:DEFCONSTANT SIZE-OF-UTSNAME ...) ; compil compiling (COMMON-LISP:DEFCONSTANT EUCLEAN ...) ; compiling (COMMON-LISP:DEFCONSTANT ENOTNAM ...) ; compiling (COMMON-LISP:DEFCONSTANT ENAVAIL ...) ; compiling (COMMON-LISP:DEFCONSTANT EREMOTEIO ...) ; compiling (COMMON-LISP:DEFCONSTANT ENOMEDIUM ...) ; compiling (COMMON-LISP:DEFCONSTANT EMEDIUMTYPE ...) ; compiling (COMMON-LISP:DEFCONSTANT ESTALE bcl-1.0.37-linux-x86-64/home/~ chris/code/lisp-tp/iolib-0.7.0/src/syscalls/ASDF-TMP-conditions.fasl written ; compilation finished in 0:00:00.053 ; compiling file "/home/chris/code/lisp-tp/iolib-0.7.0/src/syscalls/os-conditions-unix.lisp" (written 23 OCT 2010 01:04:29 AM):
; /home/chris/.cache/common-lisp/sbcl-1.0.37-linux-x86-64/home/chris/code/ ~lisp-tp/iolib-0.7.0/src/syscalls/ASDF-TMP-os-conditions-unix.fasl written ; compilation finished in 0:00:00.037 ; compiling file "/home/chris/code/lisp-tp/io
Hello,
On Sat, Oct 23, 2010 at 01:08:40AM +0000, Christian Mayer wrote:
with an iolib snapshot and sbcl I got the following errors:
; caught ERROR: ; (during compile-time-too processing) ; Unable to load foreign library (LIBFIXPOSIX). ; Error opening shared object "libfixposix.so": ; /usr/local/lib/libfixposix.so: undefined symbol: execvpe.
; /home/chris/.cache/common-lisp/sbcl-1.0.37-linux-x86-64/home/chris/code/ ~lisp-tp/iolib-20101017/src/libfixposix/ASDF-TMP-ffi-functions.fasl written ; compilation finished in 0:00:00.143 WARNING: COMPILE-FILE warned while performing #<COMPILE-OP NIL {10054F89F1}> on #<IOLIB-SOURCE-FILE "libfixposix" "ffi-functions">. ; ; compilation unit aborted ; caught 1 fatal ERROR condition ; caught 1 ERROR condition ; caught 1 STYLE-WARNING condition
That error is because you don't have libfixposix installed on your machine. libfixposix is a library being written by Stelian Ionescu, the author of IOLib, to unify some POSIX behavior across various unix machines. It is a C library which is compiled and installed seperately from IOLib or any other Common Lisp installation.
It is found here: http://gitorious.org/libfixposix/libfixposix
You can get a copy of it by: git clone git://gitorious.org/libfixposix/libfixposix.git
Then make && make install as root.
Afterwards, the build of IOLib in SBCL should work.
However, I know from talking to Stelian recently that the changes to IOLib to support libfixposix are not yet complete.
I would recommend you use the 0.7.2 version of IOLib until he finishes with the libfixposix changes.
You can find that here: http://common-lisp.net/project/iolib/download.shtml
Or, you can dig around in the git log of IOLib (if say you got it via clbuild or manually getting the head of the branch via git clone) until you find the SHA1 in which he made the 0.7.2 release and git reset --hard to that SHA1.
Have a nice day.
-pete
That error is because you don't have libfixposix installed on your machine. libfixposix is a library being written by Stelian Ionescu, the author of IOLib, to unify some POSIX behavior across various unix machines. It is a C library which is compiled and installed seperately from IOLib or any other Common Lisp installation.
It is found here: http://gitorious.org/libfixposix/libfixposix
You can get a copy of it by: git clone git://gitorious.org/libfixposix/libfixposix.git
Then make && make install as root.
Afterwards, the build of IOLib in SBCL should work.
it's more complicated, see the README in libfixposix.
also, i'd recommend adding this section to the README of iolib:
* Dependencies IOLib depends on a library called libfixposix available at (http://gitorious.org/libfixposix/libfixposix). It's a C library meant to unify POSIX behavior across various unix machines, and it needs to be compiled and installed seperately from IOLib.
git clone git://gitorious.org/libfixposix/libfixposix.git
Follow its instruction about the install procedure.